知识库检索(1) 接口描述 检索知识库内容,支持丰富的检索策略。 请求方法 POST 接口要求 无 URI /openapi/v1/index/retrieve 请求参数 请求头header参数 参数 是否必填 参数类型 说明 示例 下级对象 ContentType 是 String json格式 application/json tenantId 是 String 租户ID 562b89493b1a40e1b97ea05e50dd8170 ctyuneoprequestid 是 String 用户请求 id,由用户构造,用户可以通过 uuid 等方法自行生成唯一字符串,用于日志请求追踪 33dfa732b27b464fb15a21ed6845afd5 eopdate 是 String 请求时间,由用户构造,形如 yyyymmddTHHMMSSZ。 20211221T163014Z host 是 String 终端节点域名,固定字段 kqaglobal.ctapi.ctyun.cn EopAuthorization 是 String 由天翼云官网 accessKey 和 securityKey 经签名后生成,参与签名生成的字段包括天翼云官网 accessKey 、securityKey、平台应用的appkey(非必须),用户请求id(非必须),请求时间,终端节点域名(非必须)以及请求体内容。 请求体Body参数 参数 是否必填 参数类型 说明 示例 下级对象 origin 是 Array[Object] 对话历史内容 注意:当前仅支持传入两轮对话上下文 [ { "role": "user", "content": "deepseek什么时候发布的" }, { "role": "assistant", "content": "2025年1月份" }, { "role": "user", "content": "它是由哪家公司研发的?" } ] Chat对象 searchType 是 String 搜索策略设置,有以下三种取值: HYBRIDSEARCH:混合检索; DENSESEARCH: 向量检索; SPARSESEARCH:稀疏/关键字检索; 注意:当指定某一检索模式后,下方params参数中仅该模式对应的配置项会生效,其余模式的参数将被忽略。 "DENSESEARCH" hybridParams 否 Object 混合检索专属配置参数,仅当 searchType 取值为 HYBRIDSEARCH 时生效; 若未传入该参数,系统将使用混合检索的默认配置 { "hybridTopK": 15, "denseWeight": 0.7, "sparseWeight": 0.3 } HybridParams对象 denseParams 否 Object 向量检索专属配置参数,仅当 searchType 取值为 DENSESEARCH 时生效; 若未传入该参数,系统将使用向量检索的默认配置 { "denseSimilarityTopK": 25 } DenseParams对象 sparseParams 否 Object 稀疏/关键词检索参数,仅当 searchType 取值为 SPARSESEARCH 时生效; 若未传入该参数,系统将使用稀疏 / 关键字检索的默认配置数 { "sparseSimilarityTopK":15 } SparseParams对象 searchScope 是 Array[Object] 指定检索的知识库范围,系统仅在该范围內执行检索操作 [ { "infoBaseId": "302", "fileIds": [ 1107, 1108 ] } ] SearchScope对象 enableRewrite 是 Boolean 是否开启历史对话补全改写。 开启后,系统会基于 origin 中的完整对话历史,将最后一轮用户问题补全为语义完整、可独立检索的查询语句,并使用改写后的 query 执行检索 true rerankParams 否 Object 检索结果重排等特殊策略的配置参数; 若未传入,系统将使用结果重排的默认规则 RerankParams对象 Chat对象 参数 是否必填 参数类型 说明 示例 下级对象 role 是 String 角色 user/assistant/system content 是 String 内容 你是谁 HybridParams对象 参数 是否必填 参数类型 说明 示例 下级对象 hybridTopK 否 Int 混合检索阶段召回结果的 TopK 数量; 当 NeedReRankfalse(未开启重排)时,该值即为最终返回给用户的结果数量 取值范围:[1,100] 默认值:15 30 denseWeight 否 float 混合检索中,向量检索结果在最终评分计算时的权重占比。 取值范围:[0,1] 默认值:0.8 注意:denseWeight和sparseWeight之和必须为1 0.8 sparseWeight 否 float 混合检索中,关键字检索结果在最终评分计算时的权重占比。 取值范围:[0,1] 默认值:0.2 注意:denseWeight和sparseWeight之和必须为1 0.2 DenseParams对象 参数 是否必填 参数类型 说明 示例 下级对象 denseSimilarityTopK 否 Int 向量检索阶段召回结果的 TopK 数量; 当 NeedReRankfalse(未开启重排)时,该值即为最终返回给用户的结果数量 取值范围:[1, 100] 默认值:30 30 SparseParams对象 参数 是否必填 参数类型 说明 示例 下级对象 sparseSimilarityTopK 否 Int 关键词检索阶段召回结果的 TopK 数量; 当 NeedReRankfalse(未开启重排)时,该值即为最终返回给用户的结果数量 取值范围:[1,100] 默认值:30 30 SearchScope对象 参数 是否必填 参数类型 说明 示例 下级对象 infobaseId 是 String 知识库ID 600 fileIds 否 Array[Int] 文档ID列表。 fileIds为空时默认检索知识库ID下所有文档 [11,71] RerankParams对象 参数 是否必填 参数类型 说明 示例 下级对象 enableReranking 是 boolean 是否开启检索结果重排功能,开启后系统将对召回的文本切片执行重排策略 true rerankMinScore 否 float 重排阶段文本切片的相似度筛选阈值; 仅 Rank 模型返回的相似度分数大于等于该值的文本切片会被保留召回; 取值范围: [0.01, 1.00] 默认值:0.1 0.5 rerankTopN 否 integer 重排完成后最终返回的文本切片数量(Top N)。 取值范围:[120] 默认值为:5 30 请求代码示例 plaintext Curl X POST " H "ContentType: application/json" H "ctyuneoprequestid:33dfa732b27b464fb15a21ed6845afd5" H "tenantId:XXX" H "EopAuthorization:XXX" H "eopdate:20211109T104641Z" H "host:kqaglobal.ctapi.ctyun.cn" data '{ "origin": [ { "role": "user", "content": "deepseek什么时候发布的" }, { "role": "assistant", "content": "2025年1月份" }, { "role": "user", "content": "它是由哪家公司研发的?" } ], "searchType": "SPARSESEARCH", "hybridParams": { "hybridTopK": 15, "denseWeight": 0.7, "sparseWeight": 0.3 }, "denseParams": { "denseSimilarityTopK": 25 }, "sparseParams": { "sparseSimilarityTopK": 15 }, "searchScope": [ { "infoBaseId": "302", "fileIds": [ 1107, 1108 ] }, { "infoBaseId": "304", "fileIds": [] } ], "enableRewrite": true, "rerankParams": { "enableReranking": true, "rerankMinScore": 0.5, "rerankTopN": 5 } } 返回值说明 1.请求成功返回响应参数 参数 参数类型 说明 示例 下级对象 statusCode String 返回状态,返回200表示成功 200 message String 返回Success Success returnObj Object 接口返回结果 returnObj表 returnObj表 参数 参数类型 说明 示例 下级对象 matchList Array[Object] 检索到的匹配文本片段列表 MatchListObject对象 count Integer 列表长度 3 MatchListObject表 参数 是否必填 参数类型 说明 示例 下级对象 FileID 是 Long 文件id FileName 是 String 文件名 KnowledgeID 是 Long 知识ID ChunkID 是 Long 文档片段ID ChunkText 是 String 文档片段文本 ContentID 是 Long 内容ID ContentText 是 String 内容文本 SubTitle 是 String 文档摘要 DocTitle 是 String 内容摘要 Score 是 Float 匹配得分 UserName 是 String 用户名 DbName 是 String 知识库名 From 是 String 来源,可以取值(Knowledge/PPT/Image/Excel) QAID 否 Long 问答对id Question 否 String 问题文本 Answer 否 String 答案文本 ScreenShot 是 String PPT截图 ImageShot 是 String 图片截图 HostLogo 否 String 联网搜索的logo地址 Order 否 Long 顺序 Url 否 String 联网搜索的地址 FileType 是 String 文档类型 FileID 是 Long 文件id FileName 是 String 文件名 KnowledgeID 是 Long 知识ID 2.请求失败返回响应参数 参数 参数类型 说明 示例 下级对象 statusCode String 错误码,放置API对应的错误码 40001 message String 失败信息 缺少鉴权信息 error String 返回对应的错误码 KQA40001 返回值示例 1.请求成功返回值示例 plaintext { "statusCode": 200, "error": null, "message": "Success", "returnObj": { "count": 2, "matchList": [ { "FileID": 1108, "FileName": "知识库API.docx", "KnowledgeID": 461419421572632289, "ChunkID": 1, "ChunkText": "知识库API.docx...", "ContentID": 14, "ContentText": "1.请求成功返回值示例...", "SubTitle": "三、 API", "DocTitle": "知识库API.docxn天翼云StateCloud", "Score": 0.064522564, "UserName": "155535", "DbName": "302", "From": "Knowledge", "QAID": null, "Question": null, "Answer": null, "ScreenShot": null, "ImageShot": null, "HostLogo": null, "Order": null, "Url": null, "FileType": "doc" }, { "FileID": 1108, "FileName": "知识库API.docx", "KnowledgeID": 461419421572632275, "ChunkID": 1, "ChunkText": "知识库API.docxn...", "ContentID": 7, "ContentText": "需要在httpclient 的请求头部中加上...", "SubTitle": "二、 如何调用APIn3.拿kAk 作为密钥,eopdate 的年月日值作为数据,算出kdate。", "DocTitle": "知识库API.docxn天翼云StateCloud", "Score": 0.014622092, "UserName": "155535", "DbName": "302", "From": "Knowledge", "QAID": null, "Question": null, "Answer": null, "ScreenShot": null, "ImageShot": null, "HostLogo": null, "Order": null, "Url": null, "FileType": "doc" } ] } } 2.请求失败返回值示例 plaintext { "statusCode": "40004", "error": "KQA40004", "message": "接口执行异常" } 状态码 http状态码 描述 200 表示请求成功 错误码说明 错误码 错误信息 错误描述 40004 业务异常 业务异常,详情见message 40005 知识库不存在
来自: