Bajaj_Hackathon_Space / query_service.py
Abhirup073's picture
small changes again
dae7f12
Raw
History Blame Contribute Delete
2.3 kB
from typing import List
from models import Question, FinalAnswer
from document_manager import DocumentManager
from retriever import VectorStoreManager
from workflow import RAGWorkflow
from rich import print as rprint
from rich.panel import Panel
import time
class QueryService:
def __init__(self):
self.workflow = RAGWorkflow()
rprint(Panel("[bold green]QueryService Initialized[/bold green]", subtitle="Ready to process requests.", border_style="green"))
def process_queries(
self,
document_url: str,
questions: List[Question]
) -> List[FinalAnswer]:
start_time = time.time()
try:
rprint(Panel(f"Fetching document from URL:", title="[yellow]Step 1: Document Manager[/yellow]", border_style="yellow"))
print(f'URL: \n{document_url}')
print(f'Questions:')
print('{')
for question in questions:
print(question.question, end=",\n")
print('}')
doc_manager = DocumentManager(document_url)
file_path = doc_manager.get_filepath()
rprint(f"[green]Document located at:[/] {file_path}")
rprint(f"[blue]Elapsed Time: {(time.time()-start_time):.2f}")
rprint(Panel("Initializing vector store and retriever...", title="[yellow]Step 2: Vector Store Manager[/yellow]", border_style="yellow"))
store_manager = VectorStoreManager(file_path)
retriever = store_manager.retriever
rprint(f"[green]Retriever created successfully. Indexed [bold]{len(store_manager.documents)}[/bold] chunks.[/green]")
rprint(f"[blue]Elapsed Time: {(time.time()-start_time):.2f}")
rprint(Panel(f"Invoking RAG workflow for {len(questions)} questions...", title="[yellow]Step 3: RAG Workflow[/yellow]", border_style="yellow"))
results = self.workflow.invoke(questions, retriever)
rprint("[bold green]Workflow finished successfully.[/bold green]")
rprint(f"[blue]Elapsed Time: {(time.time()-start_time):.2f}")
return results
except Exception as e:
rprint(Panel(f"[bold red]An error occurred during query processing:[/] {e}", title="[red]FATAL ERROR[/red]"))
raise