Spaces:
Running
Running
File size: 1,617 Bytes
454f118 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | """
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())
|