故障排查GitHub issue2 分钟阅读排错/错误码

解决FastGPT动态传入较多知识库ID时检索异常问题

用户使用FastGPT v4.8.21私有部署版本,向量数据库为pg,embedding模型为Conan。用户将一份包含44000条数据的csvTable拆分为120个知识库,通过接口自动构建并上传。

现象

用户使用FastGPT v4.8.21私有部署版本,向量数据库为pg,embedding模型为Conan。用户将一份包含44000条数据的csvTable拆分为120个知识库,通过接口自动构建并上传。当动态传入知识库ID数组(格式为[{"datasetId": "xxx"}, ...])进行检索时,若数组长度较大(如20),语义检索无法正常工作,全文检索仅返回部分结果,与问题相关的知识库内容未被检索到;当数组长度较短时,检索功能可正常运行。用户通过将长数组平均拆分为3个子数组后,检索功能恢复正常。

可能原因

目前无明确官方说明,结合现象可推测几个潜在方向:一是系统对单次检索关联的知识库数量存在隐含限制;二是批量传入大量知识库ID时,请求参数的处理逻辑出现异常;三是内部检索流程对多知识库的并行或串行处理存在性能瓶颈。具体原因需按实际环境确认。

排查步骤

  1. 确认当前FastGPT版本为v4.8.21私有部署版,向量数据库使用pg,embedding模型为Conan。
  2. 复现问题:记录正常与异常场景下传入的知识库ID数组长度,验证仅数组长度变化时,检索结果是否出现异常。
  3. 拆分异常长度的知识库ID数组为多个小子数组,分别调用检索接口,验证拆分后检索功能是否恢复正常。
  4. 检查FastGPT相关配置文件,确认是否存在与单次检索知识库数量相关的参数,需按实际环境确认参数值。
  5. 查看系统运行日志,检索是否存在与大量知识库ID处理相关的报错信息。

解决与验证

临时解决方法为将长度较大的知识库ID数组平均拆分为多个小子数组(如拆分为3个),分别调用检索接口后合并返回结果。验证方法为:使用拆分后的子数组发起检索,确认语义检索与全文检索均可返回预期的相关内容;逐步调整拆分后的数组长度,找到符合当前环境的最大安全长度。若需永久解决该问题,可查阅官方文档或提交issue获取进一步支持。

来源:FastGPT GitHub issue