qwendr / utils /vector_search.py
Prajith04's picture
Update utils/vector_search.py
ae93502 verified
from qdrant_client import QdrantClient
from sentence_transformers import SentenceTransformer
import os
from dotenv import load_dotenv
load_dotenv()
# Initialize Qdrant Cloud client
url=os.environ.get("QDRANT_URL")
api_key=os.environ.get("QDRANT_API_KEY")
qdrant_client = QdrantClient(
url=url, # Use environment variable
api_key=api_key, # Use environment variable
timeout=30.0
)
# Initialize SentenceTransformer model
cache_dir = os.environ.get("MODEL_CACHE_DIR", "/app/cache") # Fallback to /app/cache
os.makedirs(cache_dir, exist_ok=True)
model = SentenceTransformer("all-MiniLM-L6-v2", cache_folder=cache_dir)
# Collection name (must match the one used during upsert)
collection_name = "symptoms"
def get_similar_symptoms(symptom):
# Encode the input symptom
vector = model.encode(symptom)
# Perform similarity search
results = qdrant_client.search(
collection_name=collection_name,
query_vector=vector.tolist(),
limit=5, # Return top 5 similar symptoms
with_payload=True # Include payload (e.g., symptom name)
)
# Extract symptom names from results
similar_symptoms = [result.payload["name"] for result in results]
return similar_symptoms