blog-hexo/source/_posts/AI/rag.md
2024-03-28 12:32:12 +08:00

51 lines
2.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: RAG知识库召回率
categories:
- AI
status: done
abbrlink: 21037
---
# 通用的RAG方案的召回率
不一定召回率越高越好,对于准确性也需要考虑,通用的召回率大概在`70%`,不论是`dify`还是`fastgpt`,对于生产场景,要求起码到`90%`的水平
## 意图分类
提问的内容很短、缩写的情况,如何命中用户的真实意图。这一步可以做一个缓存库当中,直接命中返回结构就行,不需要走`LLM`
针对`QA`,类似 `xxx企业的董事长是谁`,答案是必须正确的,上一代的客服系统必备。直接数据级别的匹配就行,召回一般都是比较准确的。
针对某些场景例如`2021年的xxxx`,同样的`2022年的xxxx`也发生了,使用`embedding`容易给错误召回的,而`ES`的效果会更好。相当于通过从用户的问题中,捕捉关键词,然后通过这些`关键词`去库里召回。这样的`关键词`,可以不断的积累`字典`,针对关键词给解释。例如:
某个提问`什么是RAG`,首先`RAG`对应的解释是:`增强向量检索的知识库`,那对应又引入的新的`关键词`,继续递归对新的`关键词`给出解释,通常迭代个`2-5轮`,就会有非常好的召回效果。字典里面通常会定义:同义词、类别、上下关系。私用飞书的话,内部标准自带一个`词典`应用,统一的业务领域的知识、语言体系。并且提供`api`从词典中提取关键字。直接通过关键字,把词条的内容读取出来。文本提取`关键词`也有很多开源模型能够提取,但是针对某些专业领域,一些开源不一定具备这样的提取能力。
但是针对有日期、数字类的一般效果会非常不好,可以考虑采用`nl2sql`的方案,使用`fine-tuning`,能够做到召回率`90%`,有专门的模型针对这块,例如微软的`RAT-SQL`模型。
针对`excel`类型的文件,直接把数据存到一张`宽表`中,不要跨表,降低复杂度。针对`nl2sql`的开源模型的能力基本都是`单表`,基本可以达到预期
针对`LLM`模型来说,数据治理变的很重要,在数据切分的过程中,需要符合人的逻辑去`分词`。按照人的逻辑,例如:表格、章节、目录……
## 分词
`chunk`的`size`越大,召回越少
## embedding
`embedding方案`可以考虑引入`link memory`,可以提高`10%-20%`,在医疗文献领域,根据参考材料写综述是非常专业的。
- 文档切分是浅层信息类似chatPDF数据中加入了总结、归纳的内容
- 大模型生成摘要,总结上下文,再进行检索。
# 如何提升召回率
# embedding哪个算法好
# 国内知识库方案哪些底座比较好
# RAG的发展方向