链载Ai

标题: 一文带你了解RAG(检索增强生成) | 概念理论介绍 代码实操 [打印本页]

作者: 链载Ai    时间: 昨天 11:15
标题: 一文带你了解RAG(检索增强生成) | 概念理论介绍 代码实操

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;letter-spacing: 0.544px;text-wrap: wrap;background-color: rgb(255, 255, 255);line-height: 1.25;border-bottom: 1px solid var(--borderColor-muted, var(--color-border-muted));visibility: visible;">一、LLMs 已经具备了较强能力了,为什么还需要 RAG(检索增强生成)?

尽管 LLM 已展现出显著的能力,但以下几个挑战依然值得关注:

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;letter-spacing: 0.544px;text-wrap: wrap;background-color: rgb(255, 255, 255);line-height: 1.25;border-bottom: 1px solid var(--borderColor-muted, var(--color-border-muted));visibility: visible;">二、介绍一下 RAG?

RAG(Retrieval Augmented Generation, 检索增强生成)是一种技术框架,其核心在于当 LLM 面对解答问题或创作文本任务时,首先会在大规模文档库中搜索并筛选出与任务紧密相关的素材,继而依据这些素材精准指导后续的回答生成或文本构造过程,旨在通过此种方式提升模型输出的准确性和可靠性。
RAG 技术架构图

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;letter-spacing: 0.544px;text-wrap: wrap;background-color: rgb(255, 255, 255);line-height: 1.25;border-bottom: 1px solid var(--borderColor-muted, var(--color-border-muted));">三、RAG 主要包含哪些模块?

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;letter-spacing: 0.544px;text-wrap: wrap;background-color: rgb(255, 255, 255);line-height: 1.25;border-bottom: 1px solid var(--borderColor-muted, var(--color-border-muted));">四、RAG 相较于直接使用 LLMs进行问答 有哪些优点?

RAG(检索增强生成)方法赋予了开发者无需为每个特定任务重新训练大型模型的能力,仅需连接外部知识库,即可为模型注入额外的信息资源,从而显著提升其回答的精确度。这一方法尤其适用于那些高度依赖专业知识的任务。
以下是 RAG 模型的主要优势:
  1. 可扩展性:减小模型规模及训练开销,同时简化知识库的扩容更新过程。
  2. 准确性:通过引用信息源,用户能够核查答案的可信度,进而增强对模型输出结果的信任感。
  3. 可控性:支持知识内容的灵活更新与个性化配置。
  4. 可解释性:展示模型预测所依赖的检索条目,增进理解与透明度。
  5. 多功能性:RAG 能够适应多种应用场景的微调与定制,涵盖问答、文本摘要、对话系统等领域。
  6. 时效性:运用检索技术捕捉最新信息动态,确保回答既即时又准确,相比仅依赖固有训练数据的语言模型具有明显优势。
  7. 领域定制性:通过对接特定行业或领域的文本数据集,RAG 能够提供针对性的专业知识支持。
  8. 安全性:通过在数据库层面实施角色划分与安全管控,RAG 有效强化了对数据使用的管理,相较于微调模型在数据权限管理上的潜在模糊性,展现出更高的安全性。

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;letter-spacing: 0.544px;text-wrap: wrap;background-color: rgb(255, 255, 255);line-height: 1.25;border-bottom: 1px solid var(--borderColor-muted, var(--color-border-muted));">五、对比一下 RAG 和 SFT,说一下两者有哪些区别?

实际上,对于 LLM 存在的上述问题,SFT 是一个最常见最基本的解决办法,也是 LLM 实现应用的基础步骤。那么有必要在多个维度上比较一下两种方法:
当然这两种方法并非非此即彼的,合理且必要的方式是结合业务需要与两种方法的优点,合理使用两种方法。

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;letter-spacing: 0.544px;text-wrap: wrap;background-color: rgb(255, 255, 255);line-height: 1.25;border-bottom: 1px solid var(--borderColor-muted, var(--color-border-muted));">模块一:版面分析

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;letter-spacing: 0.544px;text-wrap: wrap;background-color: rgb(255, 255, 255);line-height: 1.25;border-bottom: 1px solid var(--borderColor-muted, var(--color-border-muted));">为什么 需要 版面分析?

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;letter-spacing: 0.544px;text-wrap: wrap;background-color: rgb(255, 255, 255);line-height: 1.25;border-bottom: 1px solid var(--borderColor-muted, var(--color-border-muted));">尽管RAG(检索增强生成)技术的核心价值在于其结合检索与生成手段以提升文本内容的精确度与连贯性,然而在一些具体应用领域,如文档解析、智能化写作及对话系统构建中,特别是在面对结构化或半结构化信息的处理需求时,其功能边界可能拓展至版面分析。

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;letter-spacing: 0.544px;text-wrap: wrap;background-color: rgb(255, 255, 255);line-height: 1.25;border-bottom: 1px solid var(--borderColor-muted, var(--color-border-muted));">这是由于此类信息往往嵌于特定的布局结构中,需要对页面元素及其相互关系进行深入理解。

此外,当RAG模型面对包含丰富多媒体或多模态成分的数据源,诸如网页、PDF文件、富文本记录、Word文档、图像资料、语音片段、表格数据等复杂内容时,为了能高效地摄取并利用这些非文本信息,具备基本的版面分析能力变得至关重要。这种能力有助于模型精准解析各类信息单元,并成功将它们融合成有意义的整体解读。

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;letter-spacing: 0.544px;text-wrap: wrap;background-color: rgb(255, 255, 255);line-height: 1.25;">step 1:本地知识文件获取

q1:如何进行 本地知识文件获取?

本地知识文件获取涉及从多种数据源(如.txt、.pdf、.html、.doc、.xlsx、.png、.jpg、音频文件等)提取信息的过程。针对不同类型的文件,需要采取特定的访问与解析策略来有效获取其中蕴含的知识。下面我们将介绍对于不同数据源数据的获取方式和难点。

q2:如何获取 富文本txt 中内容?

q3:如何获取 PDF文档 中内容?

q4:如何获取 HTML文档 中内容?

q5:如何获取 Doc文档 中内容?

q6:如何使用 OCR 获取图片内容?

q7:如何使用 ASR 获取语音内容?

step 2:知识文件复原

q1:为什么需要进行 知识文件复原?

本地知识文件获取包含对多源化数据(txt、pdf、html、doc、excel、png、jpg、语音等)进行读取之后,容易将一个多行段落分割成多个段落,从而导致段落遇到被分割,所以需要根据内容逻辑重新组织段落。

q2:如何对 知识文件进行复原?

  1. 方法一:基于规则的知识文件复原
  2. 方法二:基于 Bert NSP 进行上下句拼接

step 3:版面分析———优化策略篇

step 4:Homework

模块二:知识库构建

为什么 需要 知识库构建?

在RAG(Retrieval-Augmented Generation)中构建知识库是至关重要的,原因包括但不限于以下几点:
  1. 扩展模型能力:大规模语言模型如GPT系列虽然具有强大的语言生成和理解能力,但受限于训练数据集的覆盖范围,它们可能无法准确回答一些基于特定事实或详细背景信息的问题。通过构建知识库,RAG可以补充模型自身的知识局限性,允许模型检索到最新、最准确的信息来生成答案。
  2. 实时更新信息:知识库可以实时更新和扩充,确保模型能够获取最新的知识内容,这对于处理时效性强的信息尤为关键,比如新闻事件、科技进展等。
  3. 提高准确性:RAG结合了检索与生成两个过程,在生成回答前先检索相关文档,从而提高了回答问题时的准确性。这样,模型生成的答案不仅基于其内部参数化的知识,还基于外部可靠来源的知识库。
  4. 减少过拟合与hallucination(幻觉生成):大模型有时会因为过度依赖内在模式而出现hallucination现象,即生成看似合理实则无依据的答案。通过引用知识库中的确切证据,RAG可以降低此类错误产生的可能性。
  5. 增强可解释性:RAG不仅能提供答案,还能指出答案的来源,增强了模型生成结果的透明度和可信度。
  6. 支持个性化及私有化需求:对于企业或个人用户,可以通过构建专属知识库满足特定领域或私人定制的需求,使得大模型能更好地服务于特定场景和业务。
综上所述,构建知识库对于RAG模型来说,是实现高效准确地检索并生成答案的核心机制之一,它极大地提升了模型在实际应用中的性能和可靠性。

step 1:知识文本分块

step 2:Docs 向量化(embdeeing)

q1:什么是Docs 向量化(embdeeing)?

Embedding 也是文本语义含义的信息密集表示,每个嵌入都是一个浮点数向量,使得向量空间中两个嵌入之间的距离与原始格式中两个输入之间的语义相似性相关联。
例如,如果两个文本相似,则它们的向量表示也应该相似,这一组向量空间内的数组表示描述了文本之间的细微特征差异。
简单来说,Embedding 帮助计算机来理解如人类信息所代表的“含义”,Embedding 可以用来获取文本、图像、视频、或其他信息的特征“相关性”,这种相关性在应用层面常用于搜索、推荐、分类、聚类。

q2:Embedding 是如何工作的?

举例来讲,这里有三句话:
  1. “The cat chases the mouse” “猫追逐老鼠”
  2. “The kitten hunts rodents” 小猫捕猎老鼠。
  3. “I like ham sandwiches” 我喜欢火腿三明治。
如果是人类来将这三个句子来分类,句子 1 和句子 2 几乎是同样的含义,而句子 3 却完全不同。但我们看到在英文原文句子中,句子 1 和句子 2 只有“The”是相同的,没有其他相同词汇。计算机该如何理解前两个句子的相关性?
Embedding 将离散信息(单词和符号)压缩为分布式连续值数据(向量)。如果我们将之前的短语绘制在图表上,它可能看起来像这样:

在文本被 Embedding 压缩到计算机可以理解的多维向量化空间之后,由于句子 1 和 2 的含义相似,它们会被绘制在彼此附近。句子 3 却距离较远,因为它与它们没有关联。如果我们有第四个短语 “Sally 吃了瑞士奶酪”,它可能存在于句子 3(奶酪可以放在三明治上)和句子 1(老鼠喜欢瑞士奶酪)之间的某个地方。

q3:Embedding 的语义检索方式对比关键词检索的优势?

  1. 语义理解:基于 Embedding 的检索方法通过词向量来表示文本,这使得模型能够捕捉到词汇之间的语义联关系,相比之下,基于关键词的检索往往关注字面匹配,可能忽略了词语之间的语义联系。
  2. 容错性:由于基于 Embedding 的方法能够理解词汇之间的关系,所以在处理拼写错误、同义词、近义词等情况时更具优势。而基于关键词的检索方法对这些情况的处理相对较弱。
  3. 多语言支持:许多 Embedding 方法可以支持多种语言,有助于实现跨语言的文本检索。比如你可以用中文输入来查询英文文本内容,而基于关键词的检索方法很难做到这一点。
  4. 语境理解:基于 Embedding 的方法在处理一词多义的情况时更具优势,因为它能够根据上下文为词语赋予不同的向量表示。而基于关键词的检索方法可能无法很好地区分同一个词在不同语境下的含义。

q4:Embedding检索存在哪些限制?

  1. 输入词数限制:即便借助Embedding技术选取与查询最为匹配的文本片段供大型模型参考,词汇数量的约束依然存在。当检索覆盖的文本范围广泛时,为了控制注入模型的上下文词汇量,通常会对检索结果设定TopK的阈值K,但这不可避免地引发了信息遗漏的问题。
  2. 仅支持文本数据:现阶段的GPT-3.5及诸多大型语言模型尚不具备图像识别功能,然而,在知识检索过程中,许多关键信息往往依赖于图文结合来充分理解。例如,学术论文中的示意图、财务报告中的数据图表,仅凭文本难以精准把握其内涵。
  3. 大模型的胡编乱造:当检索到的相关文献资料不足以支撑大型模型准确回答问题时,为尽力完成响应,模型可能会出现一定程度的“即兴创作”,即在有限信息基础上进行推测与补充。

step 3:Docs 构建索引

模块三:大模型微调

为什么 需要 大模型微调?

通常,要对大模型进行微调,有以下一些原因:
越长的Prompt,大模型的推理成本越高,因为推理成本是跟Prompt长度的平方正向相关的。
另外,Prompt太长会因超过限制而被截断,进而导致大模型的输出质量打折口,这也是一个非常严重的问题。
对于个人使用者而言,如果是解决自己日常生活、工作中的一些问题,直接用Prompt Engineering的方式,通常问题不大。
但对于对外提供服务的企业来说,要想在自己的服务中接入大模型的能力,推理成本是不得不要考虑的一个因素,微调相对来说就是一个更优的方案。

如何对大模型进行微调?

q1:大模型的微调技术路线问题

从参数规模的角度,大模型的微调分成两条技术路线:

q2:大模型的全量微调FFT 技术存在哪些问题

FFT也会带来一些问题,影响比较大的问题,主要有以下两个:

q3:大模型的 PEFT(Parameter-Efficient Fine Tuning) 解决哪些问题

PEFT主要想解决的问题,就是FFT存在的上述两个问题,PEFT也是目前比较主流的微调方案。
从训练数据的来源、以及训练的方法的角度,大模型的微调有以下几条技术路线:
不同的分类角度,只是侧重点不一样,对同一个大模型的微调,也不局限于某一个方案,可以多个方案一起。
微调的最终目的,是能够在可控成本的前提下,尽可能地提升大模型在特定领域的能力。

大模型LLM进行SFT操作的时候在学习什么?

step 1:大模型微调训练数据构建

step 2:大模型指令微调篇

模块四:文档检索

为什么 需要 文档检索?

文档检索 作为 RAG 核心工作,其效果对于下游工作至关重要。
虽然可以通过向量召回的方式从文档库里召回和用户问题相关的文档片段,同时输入到LLM中,增强模型回答质量。
常用的方式直接用用户的问题进行文档召回。但是很多时候,用户的问题是十分口语化的,描述的也比较模糊,这样会影响向量召回的质量,进而影响模型回答效果。
本章主要介绍 文档检索 过程中 存在的一些问题和对应的解决方法。

step 1:文档检索负样本样本挖掘

step 2:文档检索优化策略

模块五:Reranker

为什么 需要 Reranker?

基本的 RAG 应用包括四个关键技术组成部分:
上述的基础 RAG 架构可以有效解决 LLM 产生“幻觉”、生成内容不可靠的问题。但是,一些企业用户对上下文相关性和问答准确度提出了更高要求,需要更为复杂的架构。一个行之有效且较为流行的做法就是在 RAG 应用中集成 Reranker。

什么是 Reranker?

Reranker 是信息检索(IR)生态系统中的一个重要组成部分,用于评估搜索结果,并进行重新排序,从而提升查询结果相关性。
在 RAG 应用中,主要在拿到向量查询(ANN)的结果后使用 Reranker,能够更有效地确定文档和查询之间的语义相关性,更精细地对结果重排,最终提高搜索质量。

step 1:Reranker 篇

模块六:RAG 评测面

为什么需要 对 RAG 进行评测?

在探索和优化 RAG(检索增强生成器)的过程中,如何有效评估其性能已经成为关键问题。

step 1:RAG 评测 篇

模块七:RAG 开源项目推荐学习

为什么 需要 RAG 开源项目推荐学习?

前面已经带你走完了 RAG 的各个流程,下面将推荐一些 RAG 开源项目,帮助大佬们进行消化学习。

RAG 开源项目推荐 —— RAGFlow 篇

RAG 开源项目推荐 —— QAnything 篇

RAG 开源项目推荐 —— ElasticSearch-Langchain 篇

RAG 开源项目推荐 —— Langchain-Chatchat 篇







欢迎光临 链载Ai (https://www.lianzai.com/) Powered by Discuz! X3.5