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

修复FastGPT embedding任务base64响应解码异常问题

在FastGPT的Embedding模型配置的“额外Body参数”中设置{"encodingformat": "base64"}后,执行向量化操作(如重建知识库、上传文档),请求侧可成功向服务端发送请求,但FastGPT后端在处理embedding响应阶段会抛出TypeError: a.reduce is…

现象

在FastGPT的Embedding模型配置的“额外Body参数”中设置{"encoding_format": "base64"}后,执行向量化操作(如重建知识库、上传文档),请求侧可成功向服务端发送请求,但FastGPT后端在处理embedding响应阶段会抛出TypeError: a.reduce is not a function的运行时错误,导致任务崩溃。

可能原因

查看packages/service/core/ai/embedding/index.ts源码可知,当前FastGPT的embedding响应处理逻辑硬编码将返回结果视为number[]浮点数数组,会执行reduce方法进行归一化等操作。当用户配置encoding_format: "base64"时,向量模型返回的embedding字段为Base64字符串而非浮点数数组,此时执行reduce方法会触发TypeError: a.reduce is not a function异常。

排查步骤

  1. 检查Embedding模型配置的“额外Body参数”是否设置为{"encoding_format": "base64"}
  2. 执行向量化操作(如重建知识库、上传文档),查看FastGPT后端日志是否出现TypeError: a.reduce is not a function报错;
  3. 确认向量模型返回的embedding数据格式是否为Base64字符串(需按实际环境确认)。

解决与验证

目前该问题的修复需分两步:

  1. 请求侧已通过PR #6751实现支持覆盖encoding_format参数;
  2. 响应侧需增加数据格式嗅探逻辑:当检测到返回的embedding为Base64编码时,先将其解码为number[]浮点数向量,再进入后续的normalizationtruncatevector store逻辑。

验证方式:重新配置Embedding模型的“额外Body参数”为{"encoding_format": "base64"},执行向量化操作,确认后端无TypeError报错,向量生成与存储流程正常。

来源:https://github.com/labring/FastGPT/issues/6769