feat(rag): Implement RAG engine, configuration schema, and vector store integration
This commit is contained in:
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user