mirror of
https://github.com/labring/FastGPT.git
synced 2025-07-25 06:14:06 +00:00
58 lines
2.2 KiB
Markdown
58 lines
2.2 KiB
Markdown
---
|
||
title: '知识库搜索参数'
|
||
description: '知识库搜索原理'
|
||
icon: 'language'
|
||
draft: false
|
||
toc: true
|
||
weight: 106
|
||
---
|
||
|
||
在知识库搜索的方式上,FastGPT提供了三种方式,分别为“语义检索”“增强语义检索”“混合检索”。
|
||
|
||

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