Spaces:
Running
Running
| from abc import ABC, abstractmethod | |
| from typing import List, Tuple, Dict, Literal | |
| from functools import partial | |
| from .utils import load_documents, agentbase_indexing | |
| class BaseRetriever(ABC): | |
| """ | |
| Abstract base class for AgentBase retrievers. | |
| """ | |
| def __init__(self, db_path: str, index_config: Literal["naive", "v1"]): | |
| self.db_path = db_path | |
| self.agent_ids = [] | |
| self.documents = [] | |
| self.index_config = index_config | |
| self.indexing_func = { | |
| "naive": partial(load_documents, self.db_path), | |
| "v1": partial(agentbase_indexing, self.db_path), | |
| } | |
| def build_index(self) -> None: | |
| """Build retrieval index from database.""" | |
| pass | |
| def retrieve(self, query: str, top_k: int = 10) -> List[Tuple[str, float]]: | |
| """ | |
| Retrieve top-k agents for a single query. | |
| Returns: | |
| List of (agent_id, score) tuples | |
| """ | |
| pass | |
| def batch_retrieve(self, queries: Dict[str, str], top_k: int = 10) -> Dict[str, List[Tuple[str, float]]]: | |
| """Retrieve for multiple queries (for evaluation).""" | |
| results = {} | |
| for qid, query in queries.items(): | |
| results[qid] = self.retrieve(query, top_k) | |
| return results |