File size: 457 Bytes
ba550a5 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | """Shared contract for all retriever implementations."""
from abc import ABC, abstractmethod
from dataclasses import dataclass
from typing import Any
@dataclass
class RetrievalResult:
content: str
metadata: dict[str, Any]
score: float
source_type: str # "document" | "database"
class BaseRetriever(ABC):
@abstractmethod
async def retrieve(
self, query: str, user_id: str, k: int = 5
) -> list[RetrievalResult]: ...
|