From 21b8f80abba567037214b8919a8e7f418e4ef6b0 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: Thu, 11 Jun 2026 15:24:49 +0000 Subject: [PATCH] Initial implementation of RAG agent with Qdrant and Tavily: update vectorstore.py --- vectorstore.py | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/vectorstore.py b/vectorstore.py index d0192e9..de9b87f 100644 --- a/vectorstore.py +++ b/vectorstore.py @@ -1,31 +1,32 @@ """ -RAG vector store using ChromaDB and Ollama embeddings. +RAG vector store using Qdrant and Ollama embeddings. """ from pathlib import Path -from typing import List, Iterable +from typing import List -import chromadb +import chromadb # kept for compatibility if needed from langchain.embeddings.ollama import OllamaEmbeddings from langchain.text_splitter import RecursiveCharacterTextSplitter from langchain.schema.document import Document +from langchain.vectorstores import Qdrant CHROMA_DIR = "./chroma_db" EMBED_MODEL = "nomic-embed-text" def create_vectorstore(persist_directory: str = CHROMA_DIR): - """Create or load a Chroma vector store. + """Create or load a Qdrant vector store. Parameters ---------- persist_directory: - Directory where the Chroma database is stored. If it does not exist, it will be created. + Directory where the Qdrant database is stored. If it does not exist, it will be created. """ embeddings = OllamaEmbeddings(model=EMBED_MODEL) - client = chromadb.PersistentClient(path=persist_directory) - # Use a single collection named "documents" - return client.get_or_create_collection(name="documents", embedding_function=embeddings) + # Qdrant can use a local file store via `path` argument + client = Qdrant(persist_directory=persist_directory, embedding_function=embeddings) + return client def load_documents(directory: str, vectorstore) -> None: @@ -43,4 +44,8 @@ def load_documents(directory: str, vectorstore) -> None: docs.extend(text_splitter.create_documents([content], metadata={"source": str(path)})) if docs: - vectorstore.add(documents=docs) + # Qdrant expects texts and metadatas lists + vectorstore.add_texts( + texts=[doc.page_content for doc in docs], + metadatas=[doc.metadata for doc in docs], + )