掘金 人工智能 前天 18:48
大模型也能开卷答题 - RAG
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

本文深入探讨了RAG(Retrieval-Augmented Generation)架构,这是一种通过外部知识库增强大型语言模型生成能力的技术。RAG具有低成本拓展模型能力、支持实时数据更新、答案可追溯等优点,但也存在回答质量依赖语料和系统设计、耗时较长等问题。文章分析了RAG架构的演进,从Naive RAG到Advanced RAG,再到Modular RAG,并介绍了Agentic RAG。此外,还详细解释了Embedding技术,它是RAG的核心组件,用于将文本等实体转换为浮点向量,以便进行相似性计算。最后,文章概述了使用Embedding增强LLM能力的基本步骤。

🧩RAG架构通过外部知识库增强语言大模型的生成能力,能够低成本拓展模型能力,支持实时数据更新,并提高答案的可追溯性与可解释性,但其回答质量依赖于检索语料和系统设计,且可能因耗时较长而影响性能。

🔍Naive RAG架构包含离线索引构建和在线检索两个阶段。离线索引构建涉及数据整合处理、Embedding向量化以及向量数据库存储;在线检索则通过向量化用户Prompt,计算相似度找出相关文章,并结合用户问题生成最终Prompt。

💡Advanced RAG在Naive RAG的基础上,增加了pre-Retrieval和post-Retrieval两个步骤。pre-Retrieval阶段主要进行Query增强和索引数据增加,post-Retrieval阶段则对检索结果进行二次加工,如排序和压缩。

🧱Modular RAG将RAG流程中的每个步骤视为一个模块,通过不同的编排方式形成RAG Flow,从而提升RAG的性能表现。编排方式包括线性编排、条件编排、分支编排和循环编排,并可使用LLM Agent自动判断。

🧮Embedding技术是RAG的核心组件,它将文本等实体转换为浮点向量,用于相似性计算。Embedding本质上是对token进行降维,将高维稀疏的token转换为低维稠密的向量,从而降低计算复杂度。除了文本,还可以对图片、音频和实体进行Embedding。

一句话:RAG 是通过外部的知识库增强语言大模型的生成能力的技术

RAG 架构演进

Retrieval-augmented generation

从当前 RAG 的问题出发我们推测接下来对 RAG 的优化主要集中在

Navie RAG

离线索引构建

    整合和处理数据源 : 分片,语义分块等通过 Embedding 模型向量化数据存储在向量数据库中 (Faiss 等)

在线检索

    将用户 Prompt 通过 Embeddings 向量化通过计算向量相似度找出有用的文章 (TOPK)文章 + 用户问题 = 最终 Prompt

Advanced RAG

在 Navie RAG 的基础上, query 多加一步 pre-Retrieval , Retrieval 后再加一步 post-Retrieval

Pre-Retrieval

Query 增强:分解,转换(模糊 → 清晰) ,增强(拆解子问题)

索引数据增加: 清晰,分块,Embedding 模型针对性优化

Post-Retrieval

对 Retrieval 结果做二次加工(排序 & 压缩)

Modular RAG

到 advanced RAG 为止,其线性流程可以简化为下面这样 👇

这个流程看起来没什么问题,但是他太简单了,灵活性不够,对于一些可能需要深度搜索或者需要创造性回答的问题表现不够好。

Modular RAG 就是为了解决这个问题出现的。上述的每一个步骤都视为一个模块。通过不同的编排方式,形成 RAG FLow,进而提升 RAG 的性能表现。

更重要的是,这每一个关键的模块都被封装成接口,调用方可以根据自己的需求自定义,大大拓展了 RAG 能力的边界。

使用哪一种编排方式,如何编排,可以使用 LLM Agent 自动判断 ( Adaptive retrieval ) 。

条件编排

分支编排

循环编排

Agentic RAG

顾名思义,将 LLM Agent 作为 RAG 编排和控制的大脑。

什么是 Embedding

Embedding 是 RAG 的核心组件,要讲 RAG Retrieval-Augmented Generation 检索增强生成,就不得不先讲 Embedding

一句话,Embedding 就是将文本等实体,转换成浮点向量用于相似性计算的技术

Embedding 位于 Transformer 的输入层,直接接收原始文本的 token 序列,通过查表将其转化为连续的向量表示。比如下面这个例子,将文本转化为浮点向量后,相似性越高的内容之间的举例越近,比如这里的汽车和单车,而枕头由于关联性较低,则离得较远。

本质上,Embedding 做的其实是 token 的降维。具体一点是将高维稀疏的 token 转换成低维稠密的向量,降低计算的复杂度。

embedding 层的输出(带有位置编码的词向量)直接作为 Transformer (Encoder/Decoder)的输入,供自注意力机制下一步处理。

除了对文本做 Embedding,还可以

使用 Embedding 增强 LLM 能力的基本步骤(以 OpenAI 为例)

    搜集数据:准备知识库数据切块:将数据分为切块数据嵌入:通过 OpenAI API 对切块进行 Embedding向量存储:将 SDK 计算出的数据集使用向量数据库或者其他方法存储

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

RAG 检索增强生成 Embedding LLM
相关文章