Enterprise RAG platform built with Domain-Driven Design principles
FastAPI 0.104.1 - Web framework
LangGraph 0.2.50 - Orchestration
LangSmith 0.3.45 - Observability
SQLAlchemy 2.0.23 - ORM
PostgreSQL - Primary database
FAISS 1.7.4 - Dense vectors
Elasticsearch 8.11.0 - Sparse vectors
Next.js 15.3.0 - React framework
React 19.0.0 - UI library
TypeScript 5.6.3 - Type system
Vercel AI SDK 5.0.26 - AI integration
Radix UI - Accessible components
Tailwind CSS 4.1.13 - Styling
NextAuth v5
ABP.io Framework - DDD framework
.NET Core - Backend
Entity Framework - ORM
OpenIddict - OAuth 2.0/OpenID Connect
OpenAI GPT-4
Fine-Tuning an Embedding Encoder (MPNet) for Medical Data
Ollama (Local)
Docker Compose
Google Cloud VM
Artifact Registry
Caddy reverse proxy
Admin Client App, Frontend Client App, Backend Service:
Admin Client App, Frontend Client App, Backend Service:
Admin Client App, Frontend Client App, Backend Service:
Below are several reference pages that illustrate the core architecture of the SoRag system, including retrieval, indexing, and historical documentation. Each link opens in a new tab.
Observability - LangSmith full-chain tracing
Maintainability - Node-based design
Recoverability - Checkpointer support
Testability - Independent node testing
Specialization - RAG/Chat/Integration separation
Parallelization - asyncio.gather concurrency
Extensibility - Registry mechanism
Isolation - Independent compilation
Automation - ContextVars + event listeners
Security - Database-level auto-filtering
Flexibility - Context Manager switching
Performance - Index optimization
Layered architecture - 4 clear layers
Repository pattern - Data access abstraction
Entity - Handles business logic
Based on ABP.io principles
KbKnowledgeBase - Knowledge base containerKbSource - Document sourcesKbChunk - Text chunks from documentsIdxChunkEmbedding - Vector embeddingsIdxVectorCollectionItem - Vector DB itemsIdxSparseCollectionItem - Sparse vectorsIdxIndexingTask - Background indexing jobsIdxIndexingEvent - Event trackingRetrievalConversation - Chat sessionsRetrievalMessage - Chat messagesMemoryItem - Conversation memoryEntities, Aggregates, Domain Services, Repositories
Separate read and write operations for optimal performance
Distributed events using CAP pattern (Inbox/Outbox)
Abstraction layer for data access operations