feat(rag): Implement RAG engine, configuration schema, and vector store integration

This commit is contained in:
2026-05-04 05:38:23 -04:00
parent 5a1c157295
commit e80cd6bd3f
5 changed files with 236 additions and 0 deletions
+51
View File
@@ -596,6 +596,57 @@ class MCPConfiguration:
}
return cls(mcpServers=parsed_servers)
@dataclass
class VectorStoreConfig:
provider: str # 'chroma', 'qdrant', 'mock'
url: Optional[str] = None
api_key: Optional[str] = None
collection_name: str = 'manual_slop'
def to_dict(self) -> Dict[str, Any]:
return {
"provider": self.provider,
"url": self.url,
"api_key": self.api_key,
"collection_name": self.collection_name,
}
@classmethod
def from_dict(cls, data: Dict[str, Any]) -> "VectorStoreConfig":
return cls(
provider=data["provider"],
url=data.get("url"),
api_key=data.get("api_key"),
collection_name=data.get("collection_name", "manual_slop"),
)
@dataclass
class RAGConfig:
enabled: bool = False
vector_store: VectorStoreConfig = field(default_factory=lambda: VectorStoreConfig(provider='mock'))
embedding_provider: str = 'gemini'
chunk_size: int = 1000
chunk_overlap: int = 200
def to_dict(self) -> Dict[str, Any]:
return {
"enabled": self.enabled,
"vector_store": self.vector_store.to_dict(),
"embedding_provider": self.embedding_provider,
"chunk_size": self.chunk_size,
"chunk_overlap": self.chunk_overlap,
}
@classmethod
def from_dict(cls, data: Dict[str, Any]) -> "RAGConfig":
return cls(
enabled=data.get("enabled", False),
vector_store=VectorStoreConfig.from_dict(data.get("vector_store", {"provider": "mock"})),
embedding_provider=data.get("embedding_provider", "gemini"),
chunk_size=data.get("chunk_size", 1000),
chunk_overlap=data.get("chunk_overlap", 200),
)
def load_mcp_config(path: str) -> MCPConfiguration:
if not os.path.exists(path):
return MCPConfiguration()