Skip to content

[性能优化]MongoDB全文检索检索代码逻辑性能需要优化 #5182

@wuchubuzai2018

Description

@wuchubuzai2018

例行检查

  • 我已确认目前没有类似 issue
  • 我已完整查看过项目 README,以及项目文档
  • 我使用了自己的 key,并确认我的 key 是可正常使用的
  • 我理解并愿意跟进此 issue,协助测试和提供反馈
  • 我理解并认可上述内容,并理解项目维护者精力有限,不遵循规则的 issue 可能会被无视或直接关闭

你的版本

  • 公有云版本
  • 私有部署版本, 具体版本号:

问题描述, 日志截图,配置文件等

目前在大量使用FastGPT给业务进行提效,目前FastGPT中的pg索引数据量在4000w,mongodb中全文检索那张表在1400w多点。
目前在使用知识检索的时候,进行全文检索的时候,开始出现变慢的情况。有时候一个问题,查询30多s。

复现步骤
1、大数据量情况下,工作流的知识检索

预期结果
1、希望可以优化相关代码设计、性能策略,目前找到了fastgpt中的关于全文检索的代码:
https://github.com/labring/FastGPT/blob/main/packages/service/core/dataset/search/controller.ts。
交给AI后,发现有几个建议还是不错的,也希望fastgpt可以自己将全文检索的代码内部给AI进行优化,各种优化建议都搞好,写成高质量的方案,减少CPU的计算、与增强查询速度与处理。
我这边AI的返回的几个建议如下:
(1)、创建teamId + datasetId +text的索引,当前那个全文表好像没有datasetId
(2)、AI说当前顺序为$sort + $limit + $project 顺序优化,建议更改为:将 $project 提前,可以减少 $sort 和 $limit 的数据负载:
$project: { _id: 1, collectionId: 1, dataId: 1, score: { $meta: 'textScore' } }, $sort: { score: { $meta: 'textScore' } }, $limit: ...
AI说这样排序前字段更少,减少资源消耗。
`
(3)、由于mongodb是动态创建表的,那么是否可以根据teamId实现分表存储,公司内部用的是商业版,然后查询的时候就可以在指定团队下的表来全文检索了。

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions