Source code for ractogateway.rag._models.retrieval

"""Retrieval and RAG response models."""

from __future__ import annotations

from typing import Any

from pydantic import BaseModel, Field

from ractogateway.adapters.base import LLMResponse
from ractogateway.rag._models.document import Chunk


[docs] class RetrievalConfig(BaseModel): """Input parameters for a vector-store search.""" query: str = Field(description="Natural-language query to search for.") top_k: int = Field(default=5, ge=1, description="Maximum number of results to return.") filters: dict[str, Any] = Field( default_factory=dict, description="Metadata filters (store-dependent format).", )
[docs] class RetrievalResult(BaseModel): """A single retrieved chunk together with its relevance score.""" chunk: Chunk score: float = Field(description="Similarity / relevance score (higher = more relevant).") rank: int = Field(description="1-based rank among all results.")
[docs] class RAGResponse(BaseModel): """Combined output from a RAG query (retrieval + generation).""" answer: LLMResponse sources: list[RetrievalResult] query: str context_used: str = Field(description="Context string injected into the LLM prompt.") model_config = {"arbitrary_types_allowed": True}