现象
使用docker-compose方式将FastGPT从4.8.19升级至4.8.20版本后,无论原有知识库还是新建知识库,均可正常创建索引,但执行知识库搜索测试时,前端控制台返回POST http://192.168.12.144:3000/api/core/dataset/searchTest 500 (Internal Server Error),报错信息包含text index required for $text query与AxiosError: Request failed with status code 500,且Embedding接口可正常返回结果。
可能原因
该报错text index required for $text query是MongoDB数据库的校验提示,表明当前知识库集合缺少必要的文本索引。结合本次docker-compose版本升级的场景,推测为升级脚本未正确执行索引创建操作,导致搜索时触发校验失败。
排查步骤
- 连接FastGPT部署的MongoDB数据库,进入对应业务数据库。
- 执行
db.getCollection('<实际知识库集合名>').getIndexes()命令,查看当前集合的所有索引,其中<实际知识库集合名>需按实际部署环境确认。 - 检查返回的索引列表中是否存在类型为
text的索引,若不存在则确认索引缺失。
解决与验证
- 若确认缺失文本索引,执行索引创建命令:
db.getCollection('<实际知识库集合名>').createIndex({ content: "text" }, { default_language: "none" }),其中content为知识库的文本存储字段,需按实际环境确认字段名称。 - 完成索引创建后,重新进入FastGPT的知识库搜索测试页面,执行搜索操作,确认不再出现
text index required for $text query报错,且搜索结果可正常返回。