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

解决FastGPT创建知识库时出现Invalid array length报错的问题

在FastGPT 4.8.22版本中,用户创建知识库时选择m3e作为Embeddings模型、采用问答拆分的处理方式,上传文件后调用/api/core/dataset/collection/create/fileId接口报错,错误信息为"Invalid array length"。

现象

在FastGPT 4.8.22版本中,用户创建知识库时选择m3e作为Embeddings模型、采用问答拆分的处理方式,上传文件后调用/api/core/dataset/collection/create/fileId接口报错,错误信息为"Invalid array length"。用户手动执行ALTER TABLE语句修改PG数据库的modeldata表vector字段为vector(1024)后,该报错仍持续出现。相关日志显示系统初始化PG成功,上传文件流程正常,但在接口调用环节触发报错。

可能原因

结合报错信息与操作记录,可能的触发原因包括:1. 数据库modeldata表的vector字段维度与当前使用的Embeddings模型输出维度不匹配;2. 向量数据在处理、传输或存储环节出现数组长度不符合预期的情况,触发Invalid array length错误;3. 数据库字段变更后未被FastGPT服务正确识别加载,仍沿用旧的字段校验规则。

排查步骤

  1. 确认当前使用的Embeddings模型的向量输出维度,记录该维度数值。
  2. 登录PG数据库,执行查询语句SELECT column_name, data_type, udt_name, character_maximum_length FROM information_schema.columns WHERE table_name = 'modeldata' AND column_name = 'vector';,查看vector字段的实际配置维度。
  3. 若字段维度与模型输出维度不一致,执行对应ALTER TABLE语句调整字段维度,例如ALTER TABLE modeldata alter COLUMN vector type vector(对应维度数值);
  4. 重启FastGPT相关服务,确保数据库字段变更被正确加载生效。
  5. 查看完整的接口调用日志,排查是否存在其他数据处理环节导致数组长度异常的情况。

解决与验证

首先将PG数据库modeldata表的vector字段调整为与当前Embeddings模型匹配的维度,参考用户操作执行ALTER TABLE modeldata alter COLUMN vector type vector(1024);。随后重启FastGPT服务,确保配置变更生效。重新创建知识库并上传文件,若不再出现"Invalid array length"报错,则问题解决。若修改字段后仍报错,需进一步检查Embeddings模型的配置是否正确,以及是否存在其他环节的数组长度校验问题。

来源:FastGPT GitHub issue