blog-hexo/source/_posts/AI/rag.md

51 lines
2.7 KiB
Markdown
Raw Normal View History

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