feat: semantic search is added based on the given tags

This commit is contained in:
hasnain 2025-11-02 18:13:14 +05:00
parent f05b6448cf
commit 7c66eaa059

44
duas_query.py Normal file
View File

@ -0,0 +1,44 @@
from langchain_openai import OpenAIEmbeddings
from dotenv import load_dotenv
from langchain_postgres import PGVector
load_dotenv()
CONNECTION_STRING = 'postgresql+psycopg2://postgres:test@localhost:5433/vector_db'
COLLECTION_NAME = 'duas_tags_vectors'
# Initialize embeddings (needed for query encoding only)
embeddings = OpenAIEmbeddings(model="text-embedding-3-small")
# Load existing vector store
db = PGVector(
collection_name=COLLECTION_NAME,
connection=CONNECTION_STRING,
embeddings=embeddings
)
def search_duas(query, k=5):
results = db.similarity_search_with_score(query, k=k)
duas_results = []
for doc, score in results:
result = {
'id': doc.metadata.get('id'),
'arabic': doc.metadata.get('arabic'),
'transliteration': doc.metadata.get('transliteration'),
'translation': doc.metadata.get('translation'),
'urdu': doc.metadata.get('urdu'),
'romanUrdu': doc.metadata.get('romanUrdu'),
'category': doc.metadata.get('category'),
'occasion': doc.metadata.get('occasion'),
'source': doc.metadata.get('source'),
'tags': doc.metadata.get('tags'),
'similarity_score': 1 - score
}
duas_results.append(result)
return duas_results
# Now you can search!
results = search_duas("protection", k=2)
print(results)