ishaq101's picture
Merge dev_new to main (improve retriever and add querying) (#13)
52999bc
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]: ...