大语言模型落地应用当中,结合RAG是目前比较热门的技术点,最近也在做相关的落地工作,因此简单总结一下。

1.RAG的工作流程?

RAG的工作流程结合了信息检索和文本生成两个关键阶段。以下是RAG模型的详细工作流程:

1.1 输入处理

用户输入一个查询或问题,这将作为整个流程的起点。

1.2. 信息检索(Retrieval)

在信息检索阶段,RAG模型需要从一个大型文档库(知识库)中找到与用户输入相关的文档。这通常分为以下几个子步骤:

1.2.1 编码输入

首先,将用户输入的查询编码成embedding向量表征。通常使用一个预训练的文本编码器来实现。

1.2.2 检索相关文档

使用查询的向量表征,通过最近邻搜索或其他相似度计算方法,从预先编码好的文档向量索引中检索出与输入查询最相关的文档。通常会检索出多个文档(例如top-k个文档)。

1.3. 文本生成(Generation)

在文本生成阶段,RAG模型将利用检索到的相关文档和原始查询生成最终的回答。这包括以下几个子步骤:

1.3.1 组合输入和检索结果

将原始查询和检索到的文档组合在一起,形成一个新的输入序列。这种组合可以是简单的连接,也可以是更复杂的整合方法。

1.3.2 编码组合后的输入

使用一个生成模型,将组合后的输入序列编码成上下文向量。

1.3.3 生成输出

基于编码后的上下文向量,生成模型生成最终的回答。这个回答是针对用户的原始查询,并结合了从检索到的文档中提取的相关信息。

1.4. 输出结果

最终生成的回答将作为RAG模型的输出,返回给用户。


2. 重要的细节有哪些?

2.1. 文档加载(Document Loading)

  • 从各种来源加载大量文档数据,这些文档将作为知识库,用于后续的信息检索。

2.2. 文档分割(Document Splitting)

  • 将加载的文档分割成更小的段落或部分,提高检索的准确性和效率。

2.3. 嵌入向量生成(Embedding Generation)

  • 对每个文档或文档的部分生成嵌入向量。其中嵌入向量能捕捉文档的语义信息,方便后续的相似度比较。

2.4. 写入向量数据库(Writing to Vector Database)

  • 将生成的嵌入向量存储在一个向量数据库中,数据库支持高效的相似度搜索操作。

2.5. 查询生成(Query Generation)

  • 用户提出一个问题或输入一个提示,RAG模型根据输入生成一个或多个相关的查询。

2.6. 文档检索(Document Retrieval)

  • 使用生成的查询在向量数据库中检索相关文档,选择与查询最相关的文档作为信息源。

2.7. 上下文融合(Context Integration)

  • 将检索到的文档内容与原始问题或提示融合,构成扩展的上下文。

2.8. 答案生成(Answer Generation)

  • 基于融合后的上下文,RAG生成模型产生最终的回答或文本。


3. 为什么要使用 RAG?

    依靠大模型已经可以完成很多任务,而且Fine-tune也可以起到补充领域知识的作用,为什么RAG仍然这么受关注?主要有以下一些方面的原因:

3.1. 资源问题

  • 当然大模型full-tune和Fine-tune训练成本等资源问题,目前为止,还是避不开的大问题。

3.2. 幻觉问题

  • 尽管大模型的参数量很大,但和人类的所有知识相比,仍然有非常大的差距。所以,大模型在生成内容时,很有可能会捏造事实,因此,通过搜索召回相关领域知识来作为特定领域的知识补充还是非常必要的。

3.3. 语料更新时效性问题

  • 大模型的训练数据存在时间截止的问题。尽管可以通过 Fine-tune 来为大模型加入新的知识,但大模型的的训练时间依然是需要面对的难题,很难做到特别迅速的更新,但是在 RAG 模式下,向量数据库和搜索引擎数据的更新都更加容易,这有助于业务数据的实时性。

3.4. 处理知识稀疏性

  • 即使是训练有素的大型语言模型,在处理某些特定领域或最新信息时,可能会因为知识稀疏性而无法给出准确的回答。RAG通过实时检索最新的或特定领域的文档,能够更好地回答这些问题,提供最新和最相关的信息。

3.5. 提高答案的准确性和相关性

  • RAG模型在生成回答之前会先检索到相关的文档,并将这些文档的信息作为生成模型的输入。这可以显著提高生成回答的准确性和相关性,因为生成模型可以直接利用检索到的具体信息。

3.6. 灵活性和扩展性

  • RAG模型的检索部分和生成部分可以独立改进。例如,可以通过改进检索算法或更新知识库来增强系统的知识覆盖面;同时,可以通过改进生成模型来提高回答的流畅性和自然性。这种灵活性使得RAG模型在实际应用中具有较高的扩展性。

3.7. 应对长尾问题

  • 在自然语言处理任务中,长尾问题(即一些低频或罕见的问题)通常很难处理。RAG模型通过检索到相关文档,可以提供有关罕见问题的具体信息,从而更好地应对长尾问题。

3.8. 数据泄露问题


4. RAG常见的具体应用场景

4.1. 问答系统

  • 在回答用户提问时,RAG模型可以先检索相关文档,再基于这些文档生成详细的回答。

4.2. 对话系统

  • 在对话过程中,RAG模型可以通过检索知识库中的信息来生成上下文相关的回复。

4.3. 信息抽取

  • 在需要从大量文档中提取特定信息时,RAG模型可以先检索相关文档,然后从中生成有用的信息。


评论 by Disqus