【数媒在线课堂】RAG 核心技术:在线课堂

整体流程

RAG 的架构如图所示在线课堂。简单来说,RAG 通过检索获取相关知识,并将其融入 Prompt,使大模型能够参考这些知识,从而给出合理回答。因此,RAG 的核心可以理解为 “检索 + 生成”。其中,检索主要利用向量数据库的高效存储和检索能力,召回目标知识;生成则依靠大模型和 Prompt 工程,合理运用召回的知识,生成目标答案。

完整的 RAG 应用流程主要包含两个阶段:

数据预阶段:文本清洗 -> 文本切块 -> 向量嵌入(embedding)-> 向量存储

应用阶段:用户提问 -> 数据召回 -> 注入 Prompt->LLM 生成答案 -> 效果评估

▐ 数据预处理

文本清洗

在 RAG 的工作流程中,文本清洗是一个重要的预处理步骤,旨在提高模型对输入数据的理解和处理能力在线课堂。文本清洗通常包括以下几个方面:

去除杂音:去掉文本中的无关信息或者噪声,比如多余的空格、HTML 标签和特殊符号等在线课堂

标准化格式:将文本转换为统一的格式,如将所有字符转为小写,或者统一日期、数字的表示在线课堂

处理标点符号和分词:处理或移除不必要的标点符号,并对文本进行适当的分词处理在线课堂

去除停用词:移除那些对语义没有特别贡献的常用词汇,例如 “的”、“在”、“而” 等在线课堂

拼写纠错:纠正文本中的拼写错误,以确保文本的准确性和一致性在线课堂

词干提取和词形还原:将词语简化为词干或者词根形式,以减少词汇的多样性并保持语义的一致性在线课堂

这些清洗步骤有助于提高文本质量,使其更适合检索系统和生成模型的处理,从而提升最终生成结果的准确性和相关性在线课堂。在 RAG 框架中,经过清洗的文本将用于更高效的信息检索和生成任务。

文本切块

在构建向量数据库的过程中,首先需要将包含知识的长文本拆分为较小的片段,然后通过文本向量化模型进行处理并存储在线课堂。虽然文本切分看似简单,但它对大模型最终回答的效果有显著影响。接下来,我们将讨论两种情况:文本切分过长和文本切分过短。

文本切块过长

在 Transformer 架构中,文本被表示为向量,其中每个词对应一个特定的向量在线课堂。为了获取一段文本的整体向量表示,常见的方法是对句中的词向量求平均。然而,当句子长度过长时,平均化过程可能会导致细节和语义信息的丢失,进而降低召回的准确率。此外,在使用大型模型进行检索和生成(RAG)任务时,如果模型在总结文本内容方面的能力较弱,长文本的召回会限制可供大模型分析的文本块数量。长文本的向量化本身就容易丢失信息,如果同时减少召回文本的数量,无法涵盖有用知识点的风险就会增加,最终可能影响大模型生成答案的质量。

文本切块过短

对短文本进行向量化更有利于保留文本中细粒度的语义信息在线课堂。然而,这种方式也存在一些问题,比如容易丢失段落和文档层面的主题信息,以及跨段落的上下文信息。对大模型输入这些碎片化的文本块,不利于大模型进行总结。

通过上述分析,我们可以得出一个结论:为向量数据库中的文本采用合适的切分策略,能够确保召回的内容更契合用户的查询意图,从而使大模型更准确地生成正确答案在线课堂。接下来,我们将介绍几种常见的文本切块策略。需要特别指出的是,并不存在所谓的 “最佳” 切块策略,选择时需要根据具体应用场景进行分析和实验。

固定大小文本切块

固定大小的文本切块是一种简单的文本分割方法,只需确定每个块的大小即可在线课堂。然而,在实际使用中,为了减少块与块之间的上下文信息丢失,最好让块之间有些重叠。此外,仅仅按照字数来截断文本而不考虑段落或句子内部的连贯性,可能会影响文本嵌入的效果。因此,为了尽量保持上下文的完整性,文本块的大小可以稍微偏离预设的大小。

特殊格式文本切块

有时候需要对诸如 HTML、Markdown、LaTeX 等具有特殊内在结构的文本进行切块在线课堂。在进行切块时,应充分考虑其结构信息,以减少因文本切块而导致的上下文信息损失。

基于深度学习模型的文本切块

为了让预训练语言模型学习两个句子之间的关系,我们可以在预训练过程中设置一个简单的任务:给模型输入两个句子,预测第二个句子是否是第一个句子的续接句在线课堂。基于这个方法,可以设计一种简单的文本切分策略,即以句子为最小单位。在完整的文本中,通过滑动窗口依次将相邻的两个句子输入到预训练语言模型进行预测。如果预测结果显示这两个句子之间的关系较弱,那么就在这里进行文本切分。

目前基于预训练语言模型的优化也比较多,比如 Cross-Segment 模型,该方法充分利用了更长的上下文信息,预测效率也有提升在线课堂。首先,利用 BERT 模型分别获取每个句子的向量表示。然后,将连续的多个句子的向量表示同时输入到另一个 BERT 或 LSTM 模型中,一次性预测每个句子是否文本分段的边界。又比如 SeqModel 利用 BERT 对多个句子同时编码,建模了更长的上下文之间的依赖关系之后再计算句向量。还有达摩院提出的以 BERT 为底座的 ROM 模型。

本站内容来自用户投稿,如果侵犯了您的权利,请与我们联系删除。联系邮箱:835971066@qq.com

本文链接:http://www.gmstar.cn/post/140.html