现象
在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服务正确识别加载,仍沿用旧的字段校验规则。
排查步骤
- 确认当前使用的Embeddings模型的向量输出维度,记录该维度数值。
- 登录PG数据库,执行查询语句
SELECT column_name, data_type, udt_name, character_maximum_length FROM information_schema.columns WHERE table_name = 'modeldata' AND column_name = 'vector';,查看vector字段的实际配置维度。 - 若字段维度与模型输出维度不一致,执行对应ALTER TABLE语句调整字段维度,例如
ALTER TABLE modeldata alter COLUMN vector type vector(对应维度数值);。 - 重启FastGPT相关服务,确保数据库字段变更被正确加载生效。
- 查看完整的接口调用日志,排查是否存在其他数据处理环节导致数组长度异常的情况。
解决与验证
首先将PG数据库modeldata表的vector字段调整为与当前Embeddings模型匹配的维度,参考用户操作执行ALTER TABLE modeldata alter COLUMN vector type vector(1024);。随后重启FastGPT服务,确保配置变更生效。重新创建知识库并上传文件,若不再出现"Invalid array length"报错,则问题解决。若修改字段后仍报错,需进一步检查Embeddings模型的配置是否正确,以及是否存在其他环节的数组长度校验问题。