# # Copyright 2024 The InfiniFlow Authors. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # from typing import Optional, List, Dict, Any from pydantic import BaseModel, Field class ListChunkRequest(BaseModel): """列出块请求模型""" doc_id: str = Field(..., description="文档ID") page: Optional[int] = Field(1, description="页码") size: Optional[int] = Field(30, description="每页大小") keywords: Optional[str] = Field("", description="关键词") available_int: Optional[int] = Field(None, description="可用性状态") class GetChunkRequest(BaseModel): """获取块请求模型""" chunk_id: str = Field(..., description="块ID") class SetChunkRequest(BaseModel): """设置块请求模型""" doc_id: str = Field(..., description="文档ID") chunk_id: str = Field(..., description="块ID") content_with_weight: str = Field(..., description="带权重的内容") important_kwd: Optional[List[str]] = Field(None, description="重要关键词") question_kwd: Optional[List[str]] = Field(None, description="问题关键词") tag_kwd: Optional[str] = Field(None, description="标签关键词") tag_feas: Optional[Any] = Field(None, description="标签特征") available_int: Optional[int] = Field(None, description="可用性状态") class SwitchChunkRequest(BaseModel): """切换块状态请求模型""" chunk_ids: List[str] = Field(..., description="块ID列表") available_int: int = Field(..., description="可用性状态") doc_id: str = Field(..., description="文档ID") class RemoveChunkRequest(BaseModel): """删除块请求模型""" chunk_ids: List[str] = Field(..., description="块ID列表") doc_id: str = Field(..., description="文档ID") class CreateChunkRequest(BaseModel): """创建块请求模型""" doc_id: str = Field(..., description="文档ID") content_with_weight: str = Field(..., description="带权重的内容") important_kwd: Optional[List[str]] = Field([], description="重要关键词") question_kwd: Optional[List[str]] = Field([], description="问题关键词") tag_feas: Optional[Any] = Field(None, description="标签特征") class RetrievalTestRequest(BaseModel): """检索测试请求模型""" kb_id: List[str] = Field(..., description="知识库ID列表") question: str = Field(..., description="问题") page: Optional[int] = Field(1, description="页码") size: Optional[int] = Field(30, description="每页大小") doc_ids: Optional[List[str]] = Field([], description="文档ID列表") use_kg: Optional[bool] = Field(False, description="是否使用知识图谱") top_k: Optional[int] = Field(1024, description="返回数量") cross_languages: Optional[List[str]] = Field([], description="跨语言列表") search_id: Optional[str] = Field("", description="搜索ID") rerank_id: Optional[str] = Field(None, description="重排序ID") keyword: Optional[bool] = Field(False, description="是否使用关键词") similarity_threshold: Optional[float] = Field(0.0, description="相似度阈值") vector_similarity_weight: Optional[float] = Field(0.3, description="向量相似度权重") highlight: Optional[bool] = Field(None, description="是否高亮") class KnowledgeGraphRequest(BaseModel): """知识图谱请求模型""" doc_id: str = Field(..., description="文档ID")