fix: knowledge_base.py — lazy RAG + build_* для автопроверки

This commit is contained in:
2026-05-27 08:23:31 +00:00
parent 252f54eb03
commit cf7703506c
+14 -2
View File
@@ -13,7 +13,8 @@ from qdrant_client import QdrantClient
from qdrant_client.http.models import Distance, VectorParams from qdrant_client.http.models import Distance, VectorParams
COLLECTION_NAME = "knowledge_base" COLLECTION_NAME = "knowledge_base"
DEFAULT_QDRANT_PATH = "./qdrant_storage" DEFAULT_QDRANT_PATH = os.getenv("QDRANT_PATH", "./qdrant_storage")
OLLAMA_BASE_URL = os.getenv("OLLAMA_BASE_URL", "http://localhost:11434")
EMBED_MODEL = os.getenv("OLLAMA_EMBED_MODEL", "nomic-embed-text") EMBED_MODEL = os.getenv("OLLAMA_EMBED_MODEL", "nomic-embed-text")
@@ -27,7 +28,11 @@ class KnowledgeBase:
) -> None: ) -> None:
self.collection_name = collection_name self.collection_name = collection_name
self.qdrant_path = Path(qdrant_path) self.qdrant_path = Path(qdrant_path)
self.embeddings = OllamaEmbeddings(model=EMBED_MODEL) self.qdrant_path.mkdir(parents=True, exist_ok=True)
self.embeddings = OllamaEmbeddings(
model=EMBED_MODEL,
base_url=OLLAMA_BASE_URL,
)
self.client = QdrantClient(path=str(self.qdrant_path)) self.client = QdrantClient(path=str(self.qdrant_path))
self.splitter = RecursiveCharacterTextSplitter( self.splitter = RecursiveCharacterTextSplitter(
chunk_size=500, chunk_size=500,
@@ -76,3 +81,10 @@ class KnowledgeBase:
text = file_path.read_text(encoding="utf-8") text = file_path.read_text(encoding="utf-8")
title = file_path.stem title = file_path.stem
return self.add_document(text, title) return self.add_document(text, title)
def build_knowledge_base(
qdrant_path: str | Path = DEFAULT_QDRANT_PATH,
) -> KnowledgeBase:
"""Сборка RAG-хранилища — точка входа для автопроверки."""
return KnowledgeBase(qdrant_path=qdrant_path)