From b85a84f5bbaeca2cbbfc8441db23a8718c27e542 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=AD=D0=BC=D0=B8=D0=BB=D1=8C=20=D0=90=D0=BC=D0=B8=D1=80?= =?UTF-8?q?=D0=BE=D0=B2?= Date: Wed, 27 May 2026 10:02:03 +0000 Subject: [PATCH] rework: restore Qdrant - update vector_store.py --- vector_store.py | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/vector_store.py b/vector_store.py index be633fa..5e734d8 100644 --- a/vector_store.py +++ b/vector_store.py @@ -1,16 +1,17 @@ -"""Векторное хранилище ChromaDB + эмбеддинги Ollama.""" +"""Векторное хранилище Qdrant + эмбеддинги Ollama.""" from __future__ import annotations import os -from pathlib import Path -from langchain_chroma import Chroma +from langchain_qdrant import QdrantVectorStore from langchain_core.documents import Document from langchain_ollama import OllamaEmbeddings from langchain_text_splitters import RecursiveCharacterTextSplitter +from qdrant_client import QdrantClient +from qdrant_client.http.models import Distance, VectorParams COLLECTION_NAME = "knowledge_base" -CHROMA_PATH = os.getenv("CHROMA_PATH", "./chroma_data") +QDRANT_PATH = os.getenv("QDRANT_PATH", "./qdrant_data") OLLAMA_BASE_URL = os.getenv("OLLAMA_BASE_URL", "http://localhost:11434") EMBED_MODEL = os.getenv("OLLAMA_EMBED_MODEL", "nomic-embed-text") @@ -22,12 +23,18 @@ def get_embeddings() -> OllamaEmbeddings: ) -def get_vector_store() -> Chroma: - Path(CHROMA_PATH).mkdir(parents=True, exist_ok=True) - return Chroma( +def get_vector_store() -> QdrantVectorStore: + client = QdrantClient(path=QDRANT_PATH) + collections = client.get_collections().collections + if not any(col.name == COLLECTION_NAME for col in collections): + client.create_collection( + collection_name=COLLECTION_NAME, + vectors_config=VectorParams(size=768, distance=Distance.COSINE), + ) + return QdrantVectorStore( + client=client, collection_name=COLLECTION_NAME, - embedding_function=get_embeddings(), - persist_directory=CHROMA_PATH, + embedding=get_embeddings(), )