Spaces:
Sleeping
Sleeping
| # api/schemas/search.py | |
| from typing import Any, Dict, List, Optional | |
| from pydantic import BaseModel, Field | |
| # --------------------------- | |
| # Request | |
| # --------------------------- | |
| class SearchRequest(BaseModel): | |
| query: str = Field(..., description="Search query") | |
| top_k: int = Field(default=5, ge=1, le=50) | |
| # optional | |
| use_reranking: Optional[bool] = True | |
| include_llm_context: Optional[bool] = True | |
| # --------------------------- | |
| # Document metadata | |
| # --------------------------- | |
| class DocumentMetadata(BaseModel): | |
| doc_id: int | |
| title: str | |
| lang: str | |
| url: Optional[str] = None | |
| date_modified: Optional[str] = None | |
| # --------------------------- | |
| # Result item (LLM-friendly) | |
| # --------------------------- | |
| class SearchResultItem(BaseModel): | |
| chunk_id: int | |
| text: str | |
| score: float = Field(..., description="Reranking score (0.0 to 1.0)") | |
| metadata: DocumentMetadata | |
| scoring_details: Optional[Dict[str, Any]] = None # optional | |
| # --------------------------- | |
| # Response | |
| # --------------------------- | |
| class SearchResponse(BaseModel): | |
| query: str | |
| results: List[SearchResultItem] | |
| latency_ms: int | |