Spaces:
Paused
Paused
# File: retrieval.py | |
from langchain_qdrant import Qdrant | |
from langchain_groq import ChatGroq | |
from langchain_openai import OpenAIEmbeddings | |
from langchain.chains import RetrievalQA | |
from config import * | |
import logging | |
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s') | |
embeddings = OpenAIEmbeddings(model="text-embedding-3-small") | |
llm = ChatGroq(model="llama3-70b-4096", temperature=0.3) | |
def rag_query(query: str) -> str: | |
logging.info(f"Processing query: {query}") | |
try: | |
qdrant = Qdrant.from_existing_collection( | |
embedding=embeddings, | |
collection_name=COLLECTION_NAME, | |
url=QDRANT_API_URL, | |
api_key=QDRANT_API_KEY, | |
prefer_grpc=True, | |
) | |
retriever = qdrant.as_retriever(search_kwargs={"k": 5}) | |
qa_chain = RetrievalQA.from_chain_type( | |
llm=llm, | |
chain_type="stuff", | |
retriever=retriever, | |
return_source_documents=True | |
) | |
result = qa_chain({"query": query}) | |
logging.info("Query processed successfully") | |
return result["result"] | |
except Exception as e: | |
error_message = f"Error processing query: {str(e)}" | |
logging.error(error_message) | |
return error_message |