diff --git a/vector_store.py b/vector_store.py new file mode 100644 index 0000000..a3fcd5d --- /dev/null +++ b/vector_store.py @@ -0,0 +1,42 @@ +""" +Vector store initialization using Qdrant in-memory. + +The vector store is used by the search tool to perform semantic similarity search. +""" +import os +from pathlib import Path +from langchain_qdrant import QdrantVectorStore +from qdrant_client import QdrantClient +from qdrant_client.models import Distance, VectorParams +from langchain_openai import OpenAIEmbeddings + +# Embedding model compatible with OpenRouter API (used by BroJS LLM) +embeddings = OpenAIEmbeddings( + model="text-embedding-3-small", + base_url="https://openrouter.ai/api/v1", + api_key=os.getenv("OPENAI_API_KEY"), +) + +# In-memory Qdrant client – no external server required +client = QdrantClient(":memory:") +client.create_collection( + "knowledge", + vectors_config=VectorParams(size=1536, distance=Distance.COSINE), +) +vector_store = QdrantVectorStore(client=client, collection_name="knowledge", embedding=embeddings) + +# Helper to add documents – used in examples +from langchain_core.documents import Document + +def add_documents(docs: list[Document]): + """Add a list of :class:`~langchain_core.documents.Document` objects to the store.""" + vector_store.add_documents(docs) + +# Example documents – can be extended by users +if __name__ == "__main__": + docs = [ + Document(page_content="LangChain is a framework for building applications powered by language models.", metadata={"title": "LangChain Overview"}), + Document(page_content="Qdrant is an open-source vector database that stores embeddings and performs similarity search efficiently.", metadata={"title": "Qdrant Documentation"}), + ] + add_documents(docs) + print("Added example documents to Qdrant in-memory store")