mirror of
https://github.com/langgenius/dify.git
synced 2025-11-04 21:03:02 +00:00
131 lines
2.7 KiB
Python
131 lines
2.7 KiB
Python
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
|