向量搜索与知识库存储逻辑
FastGPT基于RAG的Embedding方案构建知识库,向量是可表征文字、图片的数字数组,通过向量距离判断相似度,距离越小相似度越高。向量搜索会召回topk个最相似内容,交由大模型完成后续语义判断与归纳。影响搜索精度的核心因素包括向量模型质量、数据完整性与多样性、检索器精度,以及检索词质量。FastGPT的知识库由库、集合、数据三级组成,集合仅用于数据分类管理,搜索单位为整个库。向量检索使用PostgreSQL的PG Vector插件,索引类型为HNSW,PostgreSQL负责向量检索,MongoDB存储原数据。在MongoDB的dataset.datas表中,每条数据的indexes字段记录对应向量ID,一组数据可对应多个向量。多向量映射可平衡内容长度与语义丰富度,召回任意一组向量即可关联原数据。
可执行配置与检索流程
- 进入目标知识库集合,为单条数据添加多组indexes,丰富向量索引数量,提升召回覆盖范围。
- 在应用搜索配置中,选择语义检索、全文检索或混合检索模式,按需启用Rerank二次排序优化结果相关性。
- 如需启用图片检索,确认已配置对应能力:使用图片描述检索需配置视觉模型,使用图片向量检索需使用支持图片输入的向量模型。
- 配置topk召回数量、相似度过滤阈值与引用上限,通过RRF合并多路召回结果,最终裁剪得到可用引用内容。
- 上传数据时,系统会自动根据配置生成对应向量索引,图片数据需匹配已配置的检索能力才能生成有效索引。
使用边界与易错提示
集合仅用于数据分类,不影响搜索范围,搜索时默认检索整个库。图片检索的生效依赖入库时生成的对应索引,未配置对应模型时无法实现图搜图或图文混合检索。数据长度过长会降低检索精度,需拆分为结构完整、语义单一的chunk。检索词质量不足会影响召回效果,需优化用户问题以提升匹配精度。混合检索会增加计算资源消耗,需根据业务场景选择合适的检索模式。当数据答案较为严格时,可精简index内容以提升检索精度,但会牺牲部分检索范围。
来源:FastGPT 官方文档