| from langchain_community.vectorstores import FAISS | |
| from langchain_huggingface import HuggingFaceEmbeddings | |
| # Load embeddings and vector DB | |
| embeddings = HuggingFaceEmbeddings(model_name="sentence-transformers/all-MiniLM-L6-v2") | |
| db = FAISS.load_local("vectorStore", embeddings, allow_dangerous_deserialization=True) | |
| # Ask a query | |
| query = "how many cyclone struck odisha in 2015" | |
| results = db.similarity_search_with_score(query, k=5) | |
| # Combine results into one paragraph | |
| # answer = " ".join([doc.page_content for doc in results]) | |
| # Apply similarity threshold | |
| THRESHOLD = 0.75 | |
| filtered = [] | |
| for doc, score in results: | |
| print(f"π Retrieved (distance={score:.4f}): {doc.metadata}") # debug | |
| if score <= THRESHOLD: # <-- check for "closer than threshold" | |
| filtered.append(doc) | |
| if not filtered: | |
| answer = "I don't know. This information is not available in my knowledge base." | |
| else: | |
| answer = "\n\n".join([doc.page_content for doc in filtered]) | |
| print(f"\nπ Query: {query}") | |
| print(f"\nπ Answer:\n{answer}") | |
| # for i, doc in enumerate(results, 1): | |
| # print(f"\nResult {i}:") | |
| # print(f"Source: {doc.metadata}") | |
| # print(f"Content: {doc.page_content[:300]}...") | |
| # it gives query aswell as metadata also | |
| # print(f"\nπ Query: {query}") | |
| # for i, doc in enumerate(results, 2): | |
| # print(f"\n--- Result {i} ---") | |
| # print(doc.page_content[:700]) # show first 500 characters | |
| # print("Source:", doc.metadata) | |