- from typing import Literal
-
- from pydantic import BaseModel, field_validator
-
-
- class IconInfo(BaseModel):
- icon: str
- icon_background: str | None = None
- icon_type: str | None = None
- icon_url: str | None = None
-
-
- class PipelineTemplateInfoEntity(BaseModel):
- name: str
- description: str
- icon_info: IconInfo
-
-
- class RagPipelineDatasetCreateEntity(BaseModel):
- name: str
- description: str
- icon_info: IconInfo
- permission: str
- partial_member_list: list[str] | None = None
- yaml_content: str | None = None
-
-
- class RerankingModelConfig(BaseModel):
- """
- Reranking Model Config.
- """
-
- reranking_provider_name: str | None = ""
- reranking_model_name: str | None = ""
-
-
- class VectorSetting(BaseModel):
- """
- Vector Setting.
- """
-
- vector_weight: float
- embedding_provider_name: str
- embedding_model_name: str
-
-
- class KeywordSetting(BaseModel):
- """
- Keyword Setting.
- """
-
- keyword_weight: float
-
-
- class WeightedScoreConfig(BaseModel):
- """
- Weighted score Config.
- """
-
- vector_setting: VectorSetting | None
- keyword_setting: KeywordSetting | None
-
-
- class EmbeddingSetting(BaseModel):
- """
- Embedding Setting.
- """
-
- embedding_provider_name: str
- embedding_model_name: str
-
-
- class EconomySetting(BaseModel):
- """
- Economy Setting.
- """
-
- keyword_number: int
-
-
- class RetrievalSetting(BaseModel):
- """
- Retrieval Setting.
- """
-
- search_method: Literal["semantic_search", "full_text_search", "keyword_search", "hybrid_search"]
- top_k: int
- score_threshold: float | None = 0.5
- score_threshold_enabled: bool = False
- reranking_mode: str | None = "reranking_model"
- reranking_enable: bool | None = True
- reranking_model: RerankingModelConfig | None = None
- weights: WeightedScoreConfig | None = None
-
-
- class IndexMethod(BaseModel):
- """
- Knowledge Index Setting.
- """
-
- indexing_technique: Literal["high_quality", "economy"]
- embedding_setting: EmbeddingSetting
- economy_setting: EconomySetting
-
-
- class KnowledgeConfiguration(BaseModel):
- """
- Knowledge Base Configuration.
- """
-
- chunk_structure: str
- indexing_technique: Literal["high_quality", "economy"]
- embedding_model_provider: str = ""
- embedding_model: str = ""
- keyword_number: int | None = 10
- retrieval_model: RetrievalSetting
-
- @field_validator("embedding_model_provider", mode="before")
- @classmethod
- def validate_embedding_model_provider(cls, v):
- if v is None:
- return ""
- return v
-
- @field_validator("embedding_model", mode="before")
- @classmethod
- def validate_embedding_model(cls, v):
- if v is None:
- return ""
- return v
|