""" RAG request class, used to encapsulate the parameters of RAG requests """ from typing import List, Optional from pydantic import BaseModel, Field class RagRequest(BaseModel): """ RAG request class, used to encapsulate the parameters of RAG requests """ query: str = Field(default="", description="Search query") top_k: int = Field(default=5, ge=1, description="Number of results to return") search_type: Optional[str] = Field( default="keyword", description="Type of search to perform (keyword or advanced), please note that if data_source is not ['pubmed'], this field will be ignored", ) is_rewrite: Optional[bool] = Field( default=True, description="Whether the query is a subquery of a larger query" ) data_source: List[str] = Field( default=["pubmed"], description="Data source to search in (e.g., pubmed, web)", ) pubmed_topk: int = Field( default=30, description="Number of results to return from one specific pubmed search, only used when is_rewrite is True", ) is_rerank: Optional[bool] = Field( default=True, description="Whether to use reranker to rerank the results, only used when data_source is ['pubmed']", ) language: Optional[str] = Field( default="en", description="Response language (zh/en), default is English" )