feat: semantic search is added based on the given tags
This commit is contained in:
parent
f05b6448cf
commit
7c66eaa059
44
duas_query.py
Normal file
44
duas_query.py
Normal 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)
|
||||
Loading…
x
Reference in New Issue
Block a user