""" Base classes for retrieval components. """ from abc import ABC, abstractmethod from typing import List, Optional from efficient_context.chunking.base import Chunk class BaseRetriever(ABC): """Base class for content retrieval components.""" @abstractmethod def index_chunks(self, chunks: List[Chunk]) -> None: """ Index chunks for future retrieval. Args: chunks: Chunks to index """ pass @abstractmethod def retrieve(self, query: str, top_k: Optional[int] = None) -> List[Chunk]: """ Retrieve chunks relevant to a query. Args: query: Query to retrieve chunks for top_k: Number of chunks to retrieve Returns: chunks: List of retrieved chunks """ pass @abstractmethod def clear(self) -> None: """Clear all indexed chunks.""" pass