mohmad017's picture
Multi-Agent Research Assistant — LangGraph + FAISS + RAG + Evaluation
4619ed7
Raw
History Blame Contribute Delete
1.53 kB
import os
from langchain_community.vectorstores import Chroma
from langchain_community.embeddings import HuggingFaceEmbeddings
from langchain_core.tools import tool
CHROMA_DIR = "chroma_store"
_store = None
def _get_store():
global _store
if _store is None:
embeddings = HuggingFaceEmbeddings(
model_name="sentence-transformers/all-MiniLM-L6-v2",
model_kwargs={"device": "cpu"},
encode_kwargs={"normalize_embeddings": True},
)
_store = Chroma(
persist_directory=CHROMA_DIR,
embedding_function=embeddings,
collection_name="research_docs",
)
return _store
@tool
def retriever_tool(query: str) -> dict:
"""Search the indexed documents for information relevant to the query. Always try this first before web search."""
try:
store = _get_store()
docs = store.similarity_search(query, k = 5)
if not docs:
return {"found": False, "message": "Nothing found in documents."}
return {
"found": True,
"results": [
{
"content" : d.page_content,
"source": d.metadata.get("source_file", "unknown"),
}
for d in docs
],
}
except Exception as e:
return {"found": False, "error": str(e)}
def get_retriever():
return _get_store().as_retriever(search_kwargs={"k": 5})