From 1589a3bc27aedfbbfa0546c573c8e91e16d5755d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A0=D0=B8=D0=BD=D0=B0=D1=80=20=D0=9C=D0=B8=D1=80=D0=B7?= =?UTF-8?q?=D0=B0=D0=B3=D0=B8=D1=82=D0=BE=D0=B2?= Date: Wed, 17 Jun 2026 13:10:45 +0000 Subject: [PATCH] =?UTF-8?q?=D0=9E=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=20vectorstore.py:=20update=20vectorstore.py?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- vectorstore.py | 27 ++++++++++++--------------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/vectorstore.py b/vectorstore.py index ef1f919..eba9eb1 100644 --- a/vectorstore.py +++ b/vectorstore.py @@ -1,30 +1,25 @@ from pathlib import Path from uuid import uuid4 -from langchain_qdrant import Qdrant -from langchain_core.documents import Document +import chromadb +from chromadb.config import Settings from langchain_ollama import OllamaEmbeddings +from langchain_core.documents import Document from langchain_text_splitters import RecursiveCharacterTextSplitter -QDRANT_DIR = "./qdrant_db" +CHROMA_DIR = "./chroma_db" COLLECTION_NAME = "local_kb" EMBED_MODEL = "nomic-embed-text" OLLAMA_BASE_URL = "http://127.0.0.1:11434" -def create_vectorstore(persist_directory: str = QDRANT_DIR) -> Qdrant: - embeddings = OllamaEmbeddings( - model=EMBED_MODEL, - base_url=OLLAMA_BASE_URL, - ) - return Qdrant( - collection_name=COLLECTION_NAME, - embedding_function=embeddings, - persist_directory=persist_directory, - ) +def create_vectorstore(persist_directory: str = CHROMA_DIR): + client = chromadb.Client(Settings(persist_directory=persist_directory)) + collection = client.get_or_create_collection(name=COLLECTION_NAME) + return collection -def load_documents(directory: str, vectorstore: Qdrant) -> int: +def load_documents(directory: str, vectorstore: chromadb.Collection) -> int: splitter = RecursiveCharacterTextSplitter( chunk_size=1000, chunk_overlap=200, @@ -51,5 +46,7 @@ def load_documents(directory: str, vectorstore: Qdrant) -> int: chunks = splitter.split_documents(raw_docs) 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)