RAG 核心技术解析:Embedding、Transformer 与 LLM 演进
检索增强生成(Retrieval Augmented Generation, RAG)是近年来人工智能领域的重要技术突破。本文将深入剖析 RAG 背后的关键技术,包括 Embedding 向量表示、Transformer 架构、BERT 模型以及大语言模型(LLM)的发展历程,并阐述它们如何协同工作以构建高效的智能系统。

01. Embedding 技术原理
Embedding 是将离散的非结构化数据转换为连续向量表示的技术。在自然语言处理中,它常用于将文本数据中的单词、句子或文档映射为固定长度的实数向量,使得文本数据能够在计算机中被更好地处理和理解。
通过 Embedding,每个单词或句子都可以用一个实数向量来表示,这个向量中包含了该单词或句子的语义信息。这样,相似的单词或句子就会在嵌入空间中被映射为相近的向量,具有相似语义的词语或句子在向量空间上的距离也会较近。这使得在进行自然语言处理任务时,可以通过计算向量之间的距离或相似度来进行词语或句子的匹配、分类、聚类等操作。
Word2Vec 及其局限性
Word2Vec 是 2013 年由谷歌提出的一套词嵌入方法。作为词向量的经典算法之一,它被广泛应用于各种自然语言处理任务。它通过训练语料库来学习单词之间的语义和语法关系,将单词映射到高维空间中的稠密向量。
Word2Vec 模型可用来映射每个词到一个向量,可用来表示词对词之间的关系。例如,从 man到 woman,要加上一个向右上方向的向量,可以认为这个向量是一种'把男性转换到女性的向量'。如果把 king 也加上这个向量,可以得到 queen 的位置。这一神奇的现象表明了向量在 embedding 内空间并不是一整个杂乱无章随意的分布。向量的相似度代表的就是原始数据的相似度,因此向量搜索实际上代表的就是原始数据的语义搜索。
然而,作为一种早期的技术,Word2Vec 也存在一定的局限性:
- 多义词问题:由于词和向量是一对一的关系,所以多义词的问题无法解决。例如
bank 在不同语境下含义不同(银行、河岸),但 Word2Vec 只能赋予其单一向量。
- 静态表示:Word2Vec 是一种静态的方式,虽然通用性强,但是无法针对特定任务做动态优化,缺乏上下文感知能力。
Transformer 的变革
为了更好地处理上下文依赖和语义理解,Transformer 模型应运而生。Transformer 是一种基于自注意力机制(self-attention)的神经网络模型,最早在 2017 年由 Google 的研究员提出并应用于自然语言处理任务。
Transformer 能够对输入句子中不同位置的单词关系进行建模,从而更好地捕捉上下文信息。与传统的 CNN(卷积神经网络)和 RNN(循环神经网络)相比,Transformer 可以实现更高效的并行计算,因为自注意力机制使得所有位置的输入都可以同时计算,而 CNN 和 RNN 需要按顺序进行计算。传统的 CNN 和 RNN 在处理长距离依赖关系时会遇到困难,而 Transformer 通过使用自注意力机制可以学习长距离的依赖关系。
Transformer 最初被提出来用于机器翻译任务,并取得了显著的性能提升。这个模型由'编码器(Encoder)'和'解码器(Decoder)'组成,其中编码器将输入语言序列编码为一系列隐藏表示,解码器则将这些隐藏表示解码为目标语言序列。每个编码器和解码器由多层自注意力机制和前馈神经网络组成。
随着大规模预训练模型的出现,通过在大量的无监督数据上训练,预训练模型可以学习到更丰富的语义和语法特征,并在下游任务上进行微调。这些预训练模型包括 BERT(Bidirectional Encoder Representations from Transformers)、GPT(Generative Pre-trained Transformer)等,它们在自然语言处理的各个任务上都取得了巨大的成功。
BERT 和 Sentence Embedding
Transformer 的 Encoder 部分发展为 BERT。BERT 使用了两个阶段的预训练方法,即 MLM(Masked Language Model) 完型填空和 NSP(Next Sentence Prediction)。
- MLM 阶段:让 BERT 预测被遮挡词汇,以帮助它理解整个序列的上下文。
- NSP 阶段:让 BERT 判断两个句子是否是连续的,以帮助它理解句子之间的关系。
这两个阶段的预训练使得 BERT 具备了强大的语义信息学习能力。BERT 的一个非常重要的应用就是句子嵌入,即通过一句话生成 embedding 向量。这个向量可以用于多种下游自然语言处理任务,如句子相似度计算、文本分类、情感分析等。
相比传统的基于词嵌入的方法,BERT 的句子嵌入能够捕捉到更多的语义信息和句子级别的关系。通过将整个句子作为输入,模型能够综合考虑句子内部词汇的上下文关系,以及句子之间的语义相关性。
为什么 Embedding 搜索比基于词频搜索效果好?
基于词频搜索的传统算法包括如 TF-IDF、BM25。词频搜索只考虑了词语在文本中的频率,而忽略了词语之间的语义关系。而 Embedding 搜索通过将每个词语映射到一个向量空间中的向量表示,可以捕捉到词语之间的语义关系。
词频搜索只能进行精确匹配,对于近义词或者语义关联词的搜索效果较差。而 Embedding 搜索可以通过计算词语之间的相似度,实现对近义词和语义关联词的模糊匹配,从而提高了搜索的覆盖范围和准确性。
使用基于词频的搜索方法,如果我们查询"cat",那么结果中可能会将包含"cat"词频较高的文章排在前面。但是这种方法无法考虑到"cat"与其他动物的语义关系,比如与"British Shorthair(英国短毛猫)"、"Ragdoll(布偶猫)"等相似的动物。而使用 Embedding 搜索方法,可以将单词映射到高维空间中的向量,使得语义相似的单词在空间中距离较近。当我们查询"cat"时,Embedding 搜索可以找到与"cat"语义相似的单词,如"British Shorthair"、"Ragdoll"等,并将这些相关文章排在结果的前面。这样就能提供更准确、相关性更高的搜索结果。
02. LLM 的发展与演进
目前,大多数大型语言模型(LLMs)都是基于'仅解码器'(decoder-only)的 Transformer 架构的衍生版本,比如 GPT。相比于 BERT 这种只用 Transformer 的 encoder 的结构,LLM 这种只用 decoder 的结构可以用于生成具有一定上下文语义的文本。
Language Model 的训练任务是基于历史上下文来预测下一个词的出现概率。通过不断循环预测和添加下一个词,模型可以获得更准确、流畅的预测结果。这样的训练过程可以帮助语言模型更好地理解语言规律和上下文信息,从而提高其自然语言处理的能力。
从 GPT-1 到 GPT-3
GPT 系列是由 OpenAI 从 2018 年以来,持续迭代和改进的 LLM 模型。
- GPT-1:最早的 GPT-1 在生成长文本时容易出现语义上的不连贯或重复的问题。
- GPT-2:于 2019 年发布的改进版本,在 GPT-1 的基础上进行了多项改进,包括使用更大规模的训练数据、更深层的模型结构,以及更多的训练迭代次数。引入了零样本学习(zero-shot learning)的能力。
- GPT-3:拥有 1750 亿个参数,具备强大的生成能力,可以生成更长、更具逻辑性和一致性的文本。还引入了更多的语境理解和推理能力。
GPT-3 主要展现了以下能力:
- 语言续写:给定一个提示词(prompt),GPT-3 可以生成补全提示词的句子。
- 上下文学习 (in-context learning):遵循给定任务的几个示例,GPT-3 可以参考它们,并为新的用例生成类似的解答(few-shot learning)。
- 世界知识:包括事实性知识 (factual knowledge) 和常识 (commonsense)。
ChatGPT 与 RLHF
2022 年 11 月,OpenAI 发布 ChatGPT,这是一个可以为你回答几乎任何问题的聊天机器人。这强大的功能背后,是从人类反馈中强化学习(Reinforcement Learning from Human Feedback,RLHF)等技术的支持。
RLHF 的具体操作流程包括:模型根据给定的提示生成多个潜在答案,人类评估者对这些答案进行排序,然后使用这些排序结果来训练一个偏好模型,该模型学习如何给出反映人类对答案偏好程度的评分,最后,利用偏好模型对语言模型进行进一步微调。
相比于 GPT-3,ChatGPT 更进一步,解锁了强大的能力:
- 响应人类指令:能够很好地回答指令,而不是仅仅续写。
- 代码生成和代码理解:可以使用 ChatGPT 来生成高质量、可运行的代码。
- 思维链 (chain-of-thought):通过提示词工程使 ChatGPT 更加强大和准确地进行复杂推理。
- 详尽的回答:回应一般都很详细。
- 拒绝其知识范围之外的问题:例如,拒绝在 2021 年 6 月之后发生的新事件。
然而,ChatGPT 目前也存在一些不足:
- 数学能力相对较差:在解决复杂的数学问题时可能会表现出困惑。
- 有时会产生幻觉:提供虚假或不准确的信息。
- 无法实时更新知识:无法像人类一样通过持续学习来更新和获得最新的知识。
好在,我们可以使用 Retrieval Augmented Generation (RAG) 技术解决产生幻觉,和无法实时更新知识这两点不足。RAG 是结合和 LLM 的一项技术应用,通过引入外部知识库,让模型在生成回答前检索相关信息,从而保证回答的准确性和时效性。
03. RAG 核心架构详解
为了更深入地理解 RAG 如何工作,我们需要拆解其核心架构。RAG 通常包含三个主要阶段:索引构建、检索增强和生成。
索引构建 (Indexing)
在索引构建阶段,系统需要将非结构化的文档数据转化为机器可理解的格式。这通常涉及以下步骤:
- 数据清洗:去除 HTML 标签、特殊字符、无关噪音。
- 分块 (Chunking):将长文档切分为适合模型处理的小片段。常见的策略包括固定长度分块、基于语义的分块(如段落边界)。
- 向量化:使用 Embedding 模型将每个文本块转换为向量,并存入向量数据库(Vector Database)。常用的向量数据库包括 Milvus、Faiss、Chroma 等。
检索增强 (Retrieval)
当用户发起查询时,系统首先将查询转换为向量,然后在向量数据库中进行相似度搜索。为了提高检索质量,通常会采用混合检索策略:
- 稠密检索 (Dense Retrieval):基于语义向量相似度,擅长捕捉语义关联。
- 稀疏检索 (Sparse Retrieval):基于关键词匹配(如 BM25),擅长精确匹配专有名词。
- 重排序 (Re-ranking):对初步检索到的结果进行精细化排序,选取最相关的 Top-K 片段。
生成 (Generation)
检索到的相关片段将被作为上下文(Context)注入到大语言模型的 Prompt 中。模型基于提供的上下文和用户问题进行生成。这种方式有效限制了模型的'自由发挥',使其回答有据可依,从而减少幻觉现象。
04. 总结与展望
在这篇文章中,我们从 Embedding 出发,介绍了 Deep Learning 尤其是 NLP 领域目前主流的模型和应用。从早期的 Word Embedding,到现在 ChatGPT 的火热,AI 的发展正在越来越快。
随着技术的不断进步和数据的丰富,我们可以期待更加强大的模型的出现。深度学习的应用将更加广泛,不仅仅局限于自然语言处理领域,而是覆盖到更多的领域,如视觉、语音等。相信随着技术的不断突破和社会的发展,会看到未来更多令人振奋的进展和创新。
RAG 技术作为连接传统检索与大模型生成的桥梁,将在企业知识库、智能客服、专业咨询等领域发挥巨大作用。未来,随着向量检索速度的提升和多模态 Embedding 技术的发展,RAG 系统将变得更加高效和智能。