Rifqi Hafizuddin
[KM-438-439] add retriever feature
ba550a5
raw
history blame
457 Bytes
"""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]: ...