现象
Docker部署的FastGPT,因知识库文件过多或过时,数据库索引数量达100w+,导致问答响应时间达到20秒左右,影响正常使用。
可能原因
- 知识库中存在大量无用或过时文件,导致数据库生成的索引资源占用过高;
- 数据库索引总数量过大,超出当前系统的资源承载能力;
- PostgreSQL的内存配置不足,无法支撑大索引量的查询操作,导致响应延迟。
排查步骤
- 统计当前知识库的文件数量与数据库索引的总数量,确认资源占用情况;
- 查看PostgreSQL的内存配置参数,特别是share_buffer相关设置;
- 梳理知识库内容,确认可删除的无用或过时文件。
解决与验证
首先,删除无用或过时的知识库文件是可行的优化方式,可直接减少索引生成的基础数据量。其次,PostgreSQL索引不会主动重建,需手动执行重建操作以清理冗余索引。另外,需调整PostgreSQL的内存配置:单条PG索引约占4KB,100w数据的索引总占用约3.81GB,因此sharebuffer参数需至少设置为4GB;由于sharebuffer一般占PostgreSQL内存的1/4~1/3,因此PostgreSQL需单独分配至少12GB的内存。调整配置并完成索引重建后,可通过发起多次问答请求测试,验证响应时间是否恢复至正常范围。