Обновлен vectorstore.py: update vectorstore.py

This commit is contained in:
2026-06-17 13:10:45 +00:00
parent fff832392b
commit 1589a3bc27
+12 -15
View File
@@ -1,30 +1,25 @@
from pathlib import Path from pathlib import Path
from uuid import uuid4 from uuid import uuid4
from langchain_qdrant import Qdrant import chromadb
from langchain_core.documents import Document from chromadb.config import Settings
from langchain_ollama import OllamaEmbeddings from langchain_ollama import OllamaEmbeddings
from langchain_core.documents import Document
from langchain_text_splitters import RecursiveCharacterTextSplitter from langchain_text_splitters import RecursiveCharacterTextSplitter
QDRANT_DIR = "./qdrant_db" CHROMA_DIR = "./chroma_db"
COLLECTION_NAME = "local_kb" COLLECTION_NAME = "local_kb"
EMBED_MODEL = "nomic-embed-text" EMBED_MODEL = "nomic-embed-text"
OLLAMA_BASE_URL = "http://127.0.0.1:11434" OLLAMA_BASE_URL = "http://127.0.0.1:11434"
def create_vectorstore(persist_directory: str = QDRANT_DIR) -> Qdrant: def create_vectorstore(persist_directory: str = CHROMA_DIR):
embeddings = OllamaEmbeddings( client = chromadb.Client(Settings(persist_directory=persist_directory))
model=EMBED_MODEL, collection = client.get_or_create_collection(name=COLLECTION_NAME)
base_url=OLLAMA_BASE_URL, return collection
)
return Qdrant(
collection_name=COLLECTION_NAME,
embedding_function=embeddings,
persist_directory=persist_directory,
)
def load_documents(directory: str, vectorstore: Qdrant) -> int: def load_documents(directory: str, vectorstore: chromadb.Collection) -> int:
splitter = RecursiveCharacterTextSplitter( splitter = RecursiveCharacterTextSplitter(
chunk_size=1000, chunk_size=1000,
chunk_overlap=200, chunk_overlap=200,
@@ -51,5 +46,7 @@ def load_documents(directory: str, vectorstore: Qdrant) -> int:
chunks = splitter.split_documents(raw_docs) chunks = splitter.split_documents(raw_docs)
ids = [str(uuid4()) for _ in chunks] ids = [str(uuid4()) for _ in chunks]
vectorstore.add_documents(documents=chunks, ids=ids) embeddings = OllamaEmbeddings(model=EMBED_MODEL, base_url=OLLAMA_BASE_URL)
vectors = embeddings.embed_documents([doc.page_content for doc in chunks])
vectorstore.add(ids=ids, documents=[doc.page_content for doc in chunks], embeddings=vectors, metadatas=[doc.metadata for doc in chunks])
return len(chunks) return len(chunks)