FinRAG / app /rag_engine.py
Harshavard21's picture
Initial commit
454f118
Raw History Blame Contribute Delete
1.62 kB
"""
app/rag_engine.py
==================
Shared cached resource loaders for all Streamlit pages.
Import from here instead of app.main to avoid page_config conflicts.
"""
import sys
import os
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
from config.settings import settings
import streamlit as st
@st.cache_resource(show_spinner="Loading embedding model (first time ~30s)...")
def load_embedder():
from src.embeddings.embedder import Embedder
return Embedder()
@st.cache_resource(show_spinner="Connecting to vector store...")
def load_retriever():
from src.retrieval.hybrid_retriever import HybridRetriever
from src.vectorstore.qdrant_store import QdrantStore
from src.vectorstore.bm25_index import BM25Index
qdrant = QdrantStore()
bm25 = BM25Index()
embedder = load_embedder()
return HybridRetriever(qdrant_store=qdrant, bm25_index=bm25, embedder=embedder)
@st.cache_resource(show_spinner="Loading reranker model...")
def load_reranker():
from src.retrieval.reranker import Reranker
return Reranker()
@st.cache_resource
def load_groq():
from src.generation.groq_client import GroqClient
return GroqClient()
@st.cache_resource
def load_comparator():
from src.comparison.company_comparator import CompanyComparator
return CompanyComparator(
retriever=load_retriever(),
reranker=load_reranker(),
groq_client=load_groq(),
)
@st.cache_resource
def load_metric_extractor():
from src.metrics.metric_extractor import MetricExtractor
return MetricExtractor(groq_client=load_groq())