rework: switch to Qdrant (vector_store.py)
This commit is contained in:
+16
-9
@@ -1,16 +1,17 @@
|
|||||||
"""Векторное хранилище ChromaDB + эмбеддинги Ollama."""
|
"""Векторное хранилище Qdrant + эмбеддинги Ollama."""
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
import os
|
import os
|
||||||
from pathlib import Path
|
|
||||||
|
|
||||||
from langchain_chroma import Chroma
|
from langchain_qdrant import QdrantVectorStore
|
||||||
from langchain_core.documents import Document
|
from langchain_core.documents import Document
|
||||||
from langchain_ollama import OllamaEmbeddings
|
from langchain_ollama import OllamaEmbeddings
|
||||||
from langchain_text_splitters import RecursiveCharacterTextSplitter
|
from langchain_text_splitters import RecursiveCharacterTextSplitter
|
||||||
|
from qdrant_client import QdrantClient
|
||||||
|
from qdrant_client.http.models import Distance, VectorParams
|
||||||
|
|
||||||
COLLECTION_NAME = "knowledge_base"
|
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")
|
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")
|
||||||
|
|
||||||
@@ -22,12 +23,18 @@ def get_embeddings() -> OllamaEmbeddings:
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
def get_vector_store() -> Chroma:
|
def get_vector_store() -> QdrantVectorStore:
|
||||||
Path(CHROMA_PATH).mkdir(parents=True, exist_ok=True)
|
client = QdrantClient(path=QDRANT_PATH)
|
||||||
return Chroma(
|
collections = client.get_collections().collections
|
||||||
|
if not any(col.name == COLLECTION_NAME for col in collections):
|
||||||
|
client.create_collection(
|
||||||
collection_name=COLLECTION_NAME,
|
collection_name=COLLECTION_NAME,
|
||||||
embedding_function=get_embeddings(),
|
vectors_config=VectorParams(size=768, distance=Distance.COSINE),
|
||||||
persist_directory=CHROMA_PATH,
|
)
|
||||||
|
return QdrantVectorStore(
|
||||||
|
client=client,
|
||||||
|
collection_name=COLLECTION_NAME,
|
||||||
|
embedding=get_embeddings(),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user