Spaces:
Sleeping
Sleeping
| """Retrieval service wrapping FAISS hybrid search.""" | |
| from typing import Dict, List, Optional | |
| from config import settings | |
| from db.faiss_client import FaissDB | |
| from models.embedder import MiniCPMEmbedder | |
| class RetrievalService: | |
| def __init__(self, embedder: MiniCPMEmbedder, db: FaissDB): | |
| self.embedder = embedder | |
| self.db = db | |
| def search( | |
| self, | |
| query: str, | |
| top_k: Optional[int] = None, | |
| document_ids: Optional[List[str]] = None, | |
| ) -> List[Dict]: | |
| query_vector = self.embedder.embed_query(query) | |
| return self.db.hybrid_search( | |
| query_vector=query_vector, | |
| query_text=query, | |
| top_k=top_k or settings.TOP_K, | |
| document_ids=document_ids, | |
| ) | |