/
ksilisk
/
spbtechrun_hack
Обзор
Документация
Войти
/
ksilisk
/
spbtechrun_hack
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
python/backend/infrastructure/vectorstore/chroma_store.py
44 строки
2 KB
Shaliko Salimov
refactoring of the mcp app
01 дек 2025, 23:07
01 дек 2025, 23:07
74f7188
Код
Авторство
О чём код?
from __future__ import annotations from pathlib import Path from langchain_community.embeddings import HuggingFaceEmbeddings from langchain_community.vectorstores import Chroma from config import Settings from infrastructure.logging.logger import get_logger _embeddings: HuggingFaceEmbeddings | None = None _vectorstore: Chroma | None = None _logger = get_logger(__name__) def get_embeddings(settings: Settings) -> HuggingFaceEmbeddings: global _embeddings if _embeddings is None: # TODO: Tune embedding model settings (device, normalize embeddings) once performance requirements are known. _embeddings = HuggingFaceEmbeddings(model_name=settings.rag_embedding_model_name, cache_folder=settings.embeddings_cache_folder) _logger.info("Initialized embeddings", extra={"model": settings.rag_embedding_model_name}) return _embeddings def get_chroma_vectorstore(settings: Settings) -> Chroma: global _vectorstore if _vectorstore is None: persist_path = Path(settings.rag_persist_directory) persist_path.mkdir(parents=True, exist_ok=True) embeddings = get_embeddings(settings) # TODO: Consider advanced Chroma settings (e.g., anonymized telemetry, index tuning). _vectorstore = Chroma( collection_name=settings.rag_collection_name, persist_directory=str(persist_path), embedding_function=embeddings, ) _logger.info( "Initialized Chroma vector store", extra={ "collection": settings.rag_collection_name, "persist_directory": str(persist_path), }, ) return _vectorstore