Memoriva Software Design
AI-Powered Study Assistant Architecture & Component Design
System Architecture Overview
High-Level Architecture
Loading diagram...
Frontend Architecture
Component Structure
Study Session Components
- • TipTap Rich Text Editor
- • Image Upload & Processing
- • Study Session Management
- • Progress Tracking
AI Integration Layer
- • RAG Query Interface
- • AI Response Display
- • Context Management
- • Real-time Processing
Authentication & State
- • NextAuth.js Integration
- • User Session Management
- • TanStack Query Caching
- • Optimistic Updates
State Management
// TanStack Query Structure interface StudySessionStore { // Session State sessions: StudySession[] currentSession: StudySession | null // Processing State isProcessing: boolean processingStatus: ProcessingStatus // AI State ragResponses: RAGResponse[] isQuerying: boolean // Upload State uploadProgress: number uploadedFiles: UploadedFile[] } // Prisma Schema Types interface StudySession { id: string title: string content: string userId: string status: SessionStatus createdAt: Date updatedAt: Date images: SessionImage[] ragResults: RAGResult[] }
RAG (Retrieval-Augmented Generation) Architecture
RAG Pipeline Components
Document Processing
- • Text extraction from images
- • Content chunking strategies
- • Metadata enrichment
- • Quality filtering
Vector Embeddings
- • OpenAI text-embedding-3-small
- • Semantic similarity search
- • Vector indexing optimization
- • Embedding caching
Retrieval System
- • Similarity-based retrieval
- • Context ranking algorithms
- • Multi-modal search
- • Result relevance scoring
Generation Pipeline
- • Context injection
- • Prompt engineering
- • Response synthesis
- • Quality validation
RAG Processing Flow
Loading diagram...
Backend Architecture
Service Architecture
API Layer (Gin)
- • RESTful API endpoints
- • Authentication middleware
- • CORS configuration
- • Request validation
Queue Service
- • Concurrent job processing
- • Worker pool management
- • Job status tracking
- • Error handling & retries
RAG Service
- • Document processing pipeline
- • Vector similarity search
- • Context retrieval
- • Response generation
Storage Services
- • S3 file management
- • PostgreSQL operations
- • Vector database queries
- • Cache management
Service Integration
// Go Service Structure type Services struct { Database *DatabaseService LLM *LLMService Embedding *EmbeddingService RAG *RAGService S3 *S3Service Queue *QueueService } type RAGService struct { db *DatabaseService llm *LLMService embedding *EmbeddingService vectorDB VectorDatabase } type QueueService struct { workers int jobs chan Job results chan Result ragService *RAGService dbService *DatabaseService }
Data Models & Schemas
Database Schema (PostgreSQL)
-- Prisma Schema model User { id String @id @default(cuid()) email String @unique name String? image String? studySessions StudySession[] createdAt DateTime @default(now()) updatedAt DateTime @updatedAt } model StudySession { id String @id @default(cuid()) title String content String? status SessionStatus @default(PENDING) userId String user User @relation(fields: [userId], references: [id]) images SessionImage[] ragResults RAGResult[] createdAt DateTime @default(now()) updatedAt DateTime @updatedAt } model SessionImage { id String @id @default(cuid()) filename String s3Key String extractedText String? studySessionId String studySession StudySession @relation(fields: [studySessionId], references: [id]) createdAt DateTime @default(now()) } model RAGResult { id String @id @default(cuid()) query String response String context String[] confidence Float? studySessionId String studySession StudySession @relation(fields: [studySessionId], references: [id]) createdAt DateTime @default(now()) }
Vector Database Schema
// Vector Database Structure interface DocumentChunk { id: string content: string embedding: number[] metadata: { sessionId: string userId: string source: string chunkIndex: number timestamp: string } } // API Response Types interface RAGResponse { query: string answer: string sources: Source[] confidence: number processingTime: number } interface Source { content: string similarity: number metadata: ChunkMetadata } // Processing Job Types interface ProcessingJob { id: string sessionId: string type: 'DOCUMENT_PROCESSING' | 'RAG_QUERY' status: 'PENDING' | 'PROCESSING' | 'COMPLETED' | 'FAILED' data: any createdAt: Date completedAt?: Date error?: string }
AI Integration & Performance
AI Service Integration
- OpenAI Integration: Text embeddings and GPT models for content understanding
- DeepSeek API: Alternative LLM for cost-effective processing
- Vector Database: Efficient similarity search and retrieval
- OCR Processing: Text extraction from uploaded images
Performance Optimizations
- Concurrent Processing: Multi-worker queue system for parallel job execution
- Embedding Caching: Redis caching for frequently accessed embeddings
- Chunking Strategy: Optimized text chunking for better retrieval accuracy
- Response Streaming: Real-time status updates during processing