Files
task-6a02e23da6fe2e4ac16acf65/qdrant_client.py
T
2026-05-12 20:00:13 +00:00

37 lines
1.5 KiB
Python

from qdrant_client import QdrantClient
from qdrant_client.http import models
from langchain_ollama import OllamaEmbeddings
class QdrantStore:
def __init__(self, url="http://localhost:6333", collection_name="rag_collection"):
self.client = QdrantClient(url=url)
self.collection_name = collection_name
self._ensure_collection()
def _ensure_collection(self):
if self.collection_name not in self.client.get_collections().collections:
self.client.recreate_collection(
collection_name=self.collection_name,
vectors_config=models.VectorParams(size=384, distance=models.Distance.COSINE),
)
def add_documents(self, documents, titles):
embeddings = OllamaEmbeddings(model="nomic-embed-text")
vectors = embeddings.embed_documents(documents)
payload = [{"title": t} for t in titles]
self.client.upsert(
collection_name=self.collection_name,
points=models.Batch(points=[models.PointStruct(id=i, vector=v, payload=p) for i, (v, p) in enumerate(zip(vectors, payload))])
)
def search(self, query, limit=5):
embeddings = OllamaEmbeddings(model="nomic-embed-text")
query_vector = embeddings.embed_query(query)
results = self.client.search(
collection_name=self.collection_name,
query_vector=query_vector,
limit=limit,
with_payload=True,
)
return [r.payload for r in results]