Spaces:
Runtime error
Runtime error
| """Main RAG system implementation.""" | |
| from rag.vector_store import initialize_vector_store, build_vector_store_from_json | |
| from rag.retriever import configure_retriever | |
| from rag.llm import initialize_llm, get_rag_prompt | |
| # from utils.feedback_logger import FeedbackLogger | |
| from utils.error_handling import handle_rag_error | |
| from interface.config import SCORE_THRESHOLD, JSON_FILE_PATH | |
| class IqbalRAGSystem: | |
| """Manages the RAG system for Iqbal's poetry.""" | |
| def __init__(self): | |
| """Initialize the RAG system components.""" | |
| # Build or load vector store | |
| self.vector_store = build_vector_store_from_json(JSON_FILE_PATH) | |
| self.retriever = configure_retriever(self.vector_store) | |
| self.llm = initialize_llm() | |
| self.prompt = get_rag_prompt() | |
| self.chain = self.prompt | self.llm | |
| # self.feedback_logger = FeedbackLogger() | |
| def query_rag(self, question): | |
| """Process a query through the RAG system.""" | |
| print(f"**********************************************************************") | |
| print(f"query_rag: {question}") | |
| docs = self.retriever.invoke(question, config={'score_threshold': SCORE_THRESHOLD}) | |
| if not docs: | |
| return "No relevant poems found", [] | |
| print(f"docs: {docs}") | |
| context = "\n\n".join(doc.page_content for doc in docs) | |
| print(f"context: {context}") | |
| context_ids = [doc.metadata.get("poem_id", "") for doc in docs] | |
| print(f"context_ids: {context_ids}") | |
| response = self.chain.invoke({ | |
| 'context': context, | |
| 'question': question | |
| }) | |
| print(f"response: {response}") | |
| print(f"**********************************************************************") | |
| return response, context_ids | |
| # def log_feedback(self, query, response, feedback, comment, context_ids): | |
| # """Log user feedback.""" | |
| # self.feedback_logger.log_feedback(query, response, feedback, comment, context_ids) | |