大模型 RAG 检索增强生成面.pdf

关键,回答,模型,知识,算法,计算机与AI
文档页数:20
文档大小:1.23MB
文档格式:pdf
文档分类:计算机与AI
上传会员:
上传日期:
最后更新:

【大模型(LLMs)RAG检索增强生成面】

RAG(Retrieval-Augmented Generation)面

1RAG基础面

1.1为什么大模型需要外挂(向量)知识库?

如何将外部知识注入大模型,最直接的方法:利用外部知识对大模型进行微调.

思路:构建几十万量级的数据,然后利用这些数据对大模型进行微调,以将额外知识注入大模型

优点:简单粗暴

缺点:

这几十万量级的数据并不能很好的将额外知识注入大模型:既然大模型微调不是将外部知识注入大模型的最优方案,那是否有其它可行方案? 训练成本昂贵.不仅需要多卡并行,还需要训练很多天:

1.2.RAG思路是怎么样?

o 加载文件

o 读取文本

文本分割

文本向量化

问句向量化

在文本向量中匹配出与间句向量最相似的topk个

匹配出的文本作为上下文和间题一起添加到prompt中

提交给LLM生成回答

1.3.RAG核心技术是什么?

RAG核心技术:cmbedding

思路:将用户知识库内容经过embedding存入向量知识库,然后用户每一次提问也会经过embeding,利用向量相关性算法(例如余弦算法)找到最匹配的几个知识库片段,将这些 知识库片段作为上下文,与用户间题一起作为promt 提交给LLM回答.

RAGprompt模板如何构建?

已知信息:

{context}

成分,答案请使用中文.

问题是:{question}

2RAG优化面

痛点1:文档切分粒度不好把控,既担心噪声太多又担心语义信息丢失

问题描述

问题1:如何让LLM简要、准确回答细粒度知识?

用户:2023年我国上半年的国内生产总值是多少?LLM:根据文档,2023年的国民生产总值是593034亿元.

需求分析:一是简要,不要有其他废话.二是准确,而不是随意编造.

问题2:如何让LLM回答出全面的粗粒度(跨段落)知识?

用户:根据文档内容,征信中心有几点声明?

LLM:根据文档内容,有三点声明,分别是:

需求分析:

要实现语义级别的分割,而不是简单基于html或者pdf的换行符分割.

笔者发现目前的痛点是文档分割不够准确,导致模型有可能只回答了两点,而实际上是因为向量相似度召回的结果是残缺的.

有人可能会问,那完全可以把切割粒度大一点,比如每10个段落一分.但这样显然不是最优的,因为召回片段太大,噪声也就越多.LLM本来就有幻觉问题,回答得不会很精准(笔者实测也发现如此).

所以说,我们的文档切片最好是按照语义切割.

解决方案:

思想(原则)

基于LLM的文档对话架构分为两部分,先检索,后推理.重心在检索(推荐系统),推理交 给LLM整合即可.

而检索部分要满足三点①尽可能提高召回率,②尽可能减少无关信息:③速度快.

将的文本组织成二级索引,第一级索引是[关键信息],第二级是【原始文本],二者一 一映射.

检索部分只对关键信息做cmbedding,参与相似度计算,把召回结果映射的原始文本交给LLM.主要架构图如下:

如何构建关键信息?

首先从架构图可以看到,句子、段落、文章都要关键信息,如果为了效率考虑,可以不用对 句子构建关键信息.

1文章的切分及关键信息抽取

关键信息:为各语义段的关键信息集合,或者是各个子标题语义扩充之后的集合(pdif多级

标题识别及提取见下一篇文章)

语义切分方法1:利用NLP的篇章分析(discourseparsing)工具,提取出段落之间的主要关系,警如上述极端情况2展示的段落之间就有从属关系.把包含主从关系的段落合并成一段.这样对文章切分完之后保证每一段在说同一件事情.

语义切分方法2:除了discourse parsing的工具外,还可以写一个简单算法利用 BERT等模型来实现语义分割.BERT等模型在预训练的时候采用了NSP(nextsentence prediction)的训练任务,因此BERT完全可以判断两个句子(段落)是否其有语义衔接关系.这里我们可以设置相似度阅值t,从前往后依次判断相邻两个段落的相似度分数是否大于t,如果大于则BERT-base-Chinese在中文场景中就取得了不错的效果. 合并,否则断开.当然算法为了效率,可以采用二分法并行判定,模型也不用很大,笔者用

2语义段的切分及段落(句子)关键信息抽取

粒度知识点检索时大语块噪声多的场景.当然,关键信息抽取笔者还有其他思路. 如果向量检索效率很高,获取语义段之后完全可以按照真实段落及句号切分,以缓解细

方法1:利用NLP 中的成分句法分析(constituency parsing)工具和命名实体识别(NER)工具提取

成分句法分析(constituencyparsing)工具:可以提取核心部分(名词短语、动词短语.);命名实体识别(NER)工具:可以提取重要实体(货币名、人名、企业名).

普如说:

原始文本:MM团队的成员都是精英,核心成员是前谷歌高级产品经理张三,前meta首席技术官李四

关键信息:(MM团队,核心成员,张三,李四)

方法2:可以用语义角色标注(SemanticRoleLabeling)来分析句子的谓词论元结构,提取“谁对谁做了什么”的信息作为关键信息.

方法3:直接法.其实NLP的研究中本来就有关键词提取工作(KeyphraseExtraction).也有一个成熟工具可以使用.一个工具是HanLP,中文效果好,但是付费,免费版调用次数有限.还有一个开源工具是KeyBERT,英文效果好,但是中文效果差.

方法4:垂直领域建议的方法.以上两个方法在垂直领域都有准确度低的缺陷,垂直领域可以仿照ChatLaw的做法,即:训练一个生成关键词的模型.ChatLaw就是训练了一个KeyLLM.

常见问题

句子、语义段、之间召回不会有包含关系吗,是否会造成究余?

回答:会造成余,但是笔者试验之后回答效果很好,无论是细粒度知识还是粗粒度(跨段落)知识准确度都比Longchain粗分效果好很多,对这个间题笔者认为可以优化但没必要

痛点2:在基于垂直领域表现不佳

模型微调:一个是对embedding模型的基于垂直领域的数据进行微调:一个是对LLM模型 的基于垂直领域的数据进行微调:

痛点3:langchain内置问答分句效果不佳问题

文档加工:

行拆分): 一种是使用更好的文档拆分的方式(如项目中已经集成的达摩院的语义识别的模型及进

一种是改进填充的方式,判断中心句上下文的句子是否和中心句相关,仅添加相关度高的句子:

另一种是文本分段后,对每段分别及进行总结,基于总结内容语义及进行匹配:

痛点4:如何尽可能召回与query相关的Document问题

间题描述:如何通过得到query相关性高的 context,即与query相关的Document尽可能多的能被召回:

解决方法:

将本地知识切分成Document 的时候,需要考虑Document的长度、Document embedding质 量和被召回Document数量这三者之间的相互影响.在文本切分算法还没那么智能的情况下,本地知识的内容最好是已经结构化比较好了,各个段落之间语义关联没部么强.Document较短的情况下,得到的 Document embedding的质量可能会高一些,通过Faiss得到的Document与query相关度会高一些.

文本向量化工具进行Finetune.另外也可以考虑将ES搜索结果与Faiss结果相结合. 使用Faiss做搜索,前提条件是有高质量的文本向量化工具.因此最好是能基于本地知识对

痛点5:如何让LLM基于query和context得到高质量的response

解决方法:

间题描述:如何让LLM基于query和 context 得到高质量的 response

尝试多个的prompt模版,选择一个合适的,但是这个可能有点玄学用与本地知识间答相关的语料,对LLM进行Finetune.

痛点6:embedding模型在表示textchunks时偏差太大问题

问题描述:

一些开源的embedding模型本身效果一般,尤其是当textchunk很大的时候,强行变成一个简单的vector是很难准确表示的.开激的模型在效果上确实不如openaiEmbeddings:多语言问题,paper的内容是英文的,用户的query和生成的内容都是中文的,这里有个语言之间的对齐间题,尤其是可以用中文的query embedding 来从英文的 text chunkingembedding中找到更加相似的top-k是个具有挑战的间题

解决方法:

用更小的 textchunk 配合更大的 topk来提升表现,毕竞smallertextchunk用embedding表示起来noise更小,更大的topk可以组合更丰富的context来生成质量更高的回答:多语言的问题,可以找一些更加适合多语言的cmbedding模型

资源链接请先登录(扫码可直接登录、免注册)
①本文档内容版权归属内容提供方。如果您对本资料有版权申诉,请及时联系我方进行处理(联系方式详见页脚)。
②由于网络或浏览器兼容性等问题导致下载失败,请加客服微信处理(详见下载弹窗提示),感谢理解。
③本资料由其他用户上传,本站不保证质量、数量等令人满意,若存在资料虚假不完整,请及时联系客服投诉处理。
④本站仅收取资料上传人设置的下载费中的一部分分成,用以平摊存储及运营成本。本站仅为用户提供资料分享平台,且会员之间资料免费共享(平台无费用分成),不提供其他经营性业务。
投稿会员:标准资料
我的头像

您必须才能评论!

手机扫码、免注册、直接登录

 注意:QQ登录支持手机端浏览器一键登录及扫码登录
微信仅支持手机扫码一键登录

账号密码登录(仅适用于原老用户)