--- title: '知识库搜索参数' description: '知识库搜索原理' icon: 'language' draft: false toc: true weight: 106 --- 在知识库搜索的方式上,FastGPT提供了三种方式,分别为“语义检索”“增强语义检索”“混合检索”。 ![](/imgs/dataset_search_params1.png) ## 搜索模式 ### 语义检索 语义检索是通过向量距离,计算用户问题与知识库内容的距离,从而得出“相似度”,当然这并不是语文上的相似度,而是数学上的。 优点: - 相近语义理解 - 跨多语言理解(例如输入中文问题匹配英文知识点) - 多模态理解(文本,图片,音视频等) 缺点: - 依赖模型训练效果 - 精度不稳定 - 受关键词和句子完整度影响 ### 全文检索 才用传统的全文检索方式。适合查找关键的主谓语等。 ### 混合检索 同时使用向量检索和全文检索,并通过 RRF 公式进行两个搜索结果合并,一般情况下搜索结果会更加丰富准确。 由于混合检索后的查找范围很大,并且无法直接进行相似度过滤,通常需要进行利用重排模型进行一次结果重新排序,并利用重排的得分进行过滤。 ## 结果重排 利用`ReRank`模型对搜索结果进行重排,绝大多数情况下,可以有效提高搜索结果的准确率。不过,重排模型与问题的完整度(主谓语齐全)有一些关系,通常会先走问题补全后再进行搜索-重排。重排后可以得到一个`0-1`的得分,代表着搜索内容与问题的相关度,该分数通常比向量的得分更加精确,可以根据得分进行过滤。 FastGPT 会使用 `RRF` 对重排结果、向量搜索结果、全文检索结果进行合并,得到最终的搜索结果。 ## 引用上限 每次搜索最多引用`n`个`tokens`的内容。 之所以不采用`top k`,是发现在混合知识库(问答库、文档库)时,不同`chunk`的长度差距很大,会导致`top k`的结果不稳定,因此采用了`tokens`的方式进行引用上限的控制。 ## 最低相关度 一个`0-1`的数值,会过滤掉一些低相关度的搜索结果。 该值仅在`语义检索`或使用`结果重排`时生效。