链载Ai
标题: RAG的进化之路:从DrQA流水线到LLM的即时上下文服务 [打印本页]
作者: 链载Ai 时间: 前天 22:40
标题: RAG的进化之路:从DrQA流水线到LLM的即时上下文服务
ingFang SC";font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;">一、RAG的本质:参数记忆与外部知识的协同艺术ingFang SC";font-size: medium;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;">检索增强生成(RAG)看似简单——“给定问题,获取相关文档,让模型基于文档作答”,但这背后藏着近十年自然语言处理(NLP)领域在检索、知识表示与模型注入上的持续迭代。其核心是打通两种记忆:ingFang SC";font-size: medium;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;" class="list-paddingleft-1">参数记忆:存储在模型权重中的通用知识(如语言规律、常识);非参数记忆:外部知识库(数据库、维基百科、PDF、工单、代码等)中的专属信息。ingFang SC";font-size: medium;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;">从技术逻辑来看,RAG系统的核心流程可概括为三步:
ingFang SC";font-size: medium;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;" class="list-paddingleft-1">语料索引:将文档拆分片段,转化为向量嵌入(如768维数值数组),存储到相似度检索引擎(FAISS、Milvus、pgvector等);查询检索:将用户问题转化为嵌入向量,通过余弦相似度/点积计算,召回最相关的Top-K文档片段;生成回答:将召回文档作为上下文注入提示词,引导模型基于给定信息生成准确响应。ingFang SC";font-size: medium;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;">用伪代码可简化为:def rag_answer(question):
q_vec = 嵌入模型(question) # 问题转向量
docs = 向量索引.检索(q_vec, top_k=5) # 召回相关文档
prompt = 构建提示词(question, docs) # 注入上下文
return 大语言模型.生成(prompt) # 生成答案
ingFang SC";font-size: medium;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;">而这一切的基础,是嵌入技术构建的“语义坐标系”——语义相似的文本对应空间中邻近的向量,不同语义则相距较远。RAG本质就是“嵌入空间的近邻检索 + 基于检索结果的条件生成”,但其实现方式在不同时代有着天翻地覆的变化。ingFang SC";font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;">二、第一时代(2017-2019):检索-阅读器分离的DrQA范式ingFang SC";font-size: medium;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;">在RAG成为热词前,开放域问答(open-QA)是核心应用场景,斯坦福大学提出的DrQA(2017年)是该时代的标志性系统,确立了“检索器+阅读器”的分离式流水线架构。ingFang SC";font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;">1. 核心流程:两步走的问答逻辑- 文档检索器(Retriever):基于传统信息检索(IR)引擎(如BM25、TF-IDF),通过关键词匹配从维基百科等语料库中召回相关页面。此时尚无嵌入技术,完全依赖“词袋模型”的稀疏特征匹配;
- 文档阅读器(Reader):采用双向LSTM等神经网络模型,对召回的段落进行“跨度预测”——即定位文本中与问题对应的答案区间(如从段落中提取“理查德·道金斯”作为“《自私的基因》作者”的答案)。
2. 典型案例:从检索到提取的完整链路
问题:《自私的基因》是谁写的?
- 检索阶段(BM25):召回《自私的基因》维基百科页面及理查德·道金斯相关文档;
- 阅读阶段:神经网络扫描召回段落,识别并提取“理查德·道金斯”这一答案跨度。
3. 时代特征与局限
- 检索依赖关键词匹配,无法理解语义关联(如“找回密码”与“密码重置”可能匹配失败);
- 输出为固定文本片段,而非自由生成的自然语言回答。
这一阶段的RAG尚处于“雏形期”,核心价值是验证了“检索+神经推理”的可行性,但未解决语义理解与生成灵活性的问题。
三、第二时代(2020-2021):密集检索与端到端RAG的崛起
2020年前后,三项关键技术突破共同推动RAG进入“密集检索+端到端训练”的成熟阶段,彻底摆脱了对关键词匹配的依赖:
1. 密集段落检索(DPR):语义检索的革命
DPR(Dense Passage Retrieval)用“双编码器”架构替代BM25:
- 两者生成的嵌入向量处于同一语义空间,通过点积/余弦相似度计算相关性;
- 模型通过(问题-相关段落)配对数据训练,让语义相似的文本在向量空间自然聚类。
这意味着检索不再依赖字面匹配,而是真正理解“语义关联”,比如“如何找回密码”与“锁定账户的密码重置流程”能精准匹配。
2. REALM:预训练阶段融入检索能力
REALM(Retrieval-Augmented Language Model)首次将检索融入模型预训练过程:
- 预训练时,模型在填充掩码token(如“《自私的基因》作者是[MASK]”)前,会先从维基百科中检索相关文档;
- 通过采样softmax等技术,让检索决策可反向传播,实现检索器与语言模型的协同进化。
这一创新让“主动检索知识”成为模型的原生能力,而非后续拼接的模块。
3. RAG与FiD:检索-生成的端到端融合
- RAG(Retrieval-Augmented Generation):正式确立“检索增强生成”的命名与架构,将预训练seq2seq模型(如BART)与密集检索器、向量索引结合。推理时,先检索Top-K段落,再让生成模型基于“问题+段落”生成自由文本回答,支持“全序列检索(RAG-Sequence)”和“逐token检索(RAG-Token)”两种模式;
- FiD(Fusion-in-Decoder):优化检索结果的利用方式,将每个段落独立编码,解码器生成答案时同时关注所有段落的信息,这种“晚期融合”策略大幅提升了多文档问答的准确性。
4. 时代飞跃:与DrQA的核心差异
- 依赖FAISS等高效向量检索库,解决了大规模语料的检索效率问题。
这一阶段的RAG成为学术研究的主流,在开放域问答、知识密集型任务中刷新SOTA(state-of-the-art)指标,但需大量标注数据与计算资源,门槛较高。
四、第三时代(2022-至今):提示驱动的LLM即时RAG
GPT-3、GPT-4、Claude等大模型的出现,彻底重构了RAG的实现逻辑——凭借海量参数记忆、强大的上下文学习能力与超大上下文窗口,无需再训练专门的RAG模型,只需“检索文档+注入提示”即可实现高效问答。
1. 现代RAG的核心架构:轻量化编排层+通用LLM
(1)索引阶段
- 拆分企业内部文档(PDF、工单、知识库)为合理片段(通常200-500字);
- 用成熟嵌入模型(如text-embedding-3-large、E5)生成向量;
- 存储到向量数据库(Pinecone、Weaviate、pgvector等),支持快速近邻检索。
(2)查询与生成阶段
- 构建提示词模板,明确要求模型“仅基于提供的上下文作答”:
系统提示:你是企业HR助手,仅使用以下上下文回答问题,若上下文无相关信息,回复“暂无相关规定”。
上下文:
[HR政策片段1:新员工入职第一年可享受10天带薪年假...]
[HR政策片段2:年假申请需提前3个工作日提交系统...]
用户问题:新员工第一年有多少天年假?
2. 典型应用:2025年企业内部支持机器人
某公司Slack HR助手的工作流程:
- 检索:召回与“新员工”“年假”相关的3个政策片段;
- 生成:LLM读取上下文后,直接输出“新员工入职第一年可享受10天带薪年假,申请需提前3个工作日提交系统”。
3. 可选增强功能
- 重排序:用Cross-Encoder等模型对召回片段二次排序,提升相关性;
- 引用标注:在回答中注明信息来源(如“来自《2025年HR政策第3章》”),增强可信度;
- 多跳检索:针对复杂问题(如“新员工年假未休可结转多少天?”),先检索“年假政策”,再基于结果检索“结转规则”,实现多轮递进检索。
4. 时代特征:RAG的“去模型化”与普及化
- 无需训练专门的RAG模型,通用LLM充当“万能阅读器+生成器”;
- RAG的核心从“模型架构”转移到“检索编排层”(如LangChain、LlamaIndex或自定义代码);
- 门槛大幅降低,中小企业无需海量数据与计算资源,即可快速搭建生产级RAG应用;
- 应用场景爆发:文档问答、内部支持机器人、代码助手、科研文献分析等。
五、嵌入匹配的底层逻辑:语义相似性的数学实现
RAG的核心竞争力源于嵌入技术的语义匹配能力,其底层工作原理可拆解为三步:
1. 语料嵌入:构建语义向量库
对每个文档片段d_i,通过嵌入模型生成向量d_vec[i](如768维),并存储到向量索引中,同时关联元数据(如文档ID、原文内容)。这些向量在高维空间中自然聚类,语义相似的片段(如“密码重置”与“找回密码”)会形成密集簇。
2. 问题嵌入与检索:寻找近邻向量
对用户问题q,生成向量q_vec后,向量索引通过以下公式寻找最相关的Top-K片段:
neighbors(q) = argmax sim(q_vec, d_vec[i])
其中sim为相似度计算函数(常用余弦相似度或点积),本质是在高维空间中寻找与问题向量距离最近的文档向量。
3. 语义匹配的优势
- 跨表述匹配:用户查询与文档表述不同仍可精准匹配(如“如何备份数据”与“数据备份操作指南”);
- 多语言支持:可跨中英文等多语言语料检索(如英文查询匹配中文文档);
- 抗噪声能力:能处理拼写错误、口语化表达等噪声文本(如“年价”匹配“年假”)。
六、RAG进化脉络总结:从学术模型到工业标配
| | | | | |
|---|
| | | | 检索(BM25/TF-IDF)与阅读分离,输出固定片段 | |
| | | | | |
| | | LangChain+GPT-4、LlamaIndex+Claude | | |
RAG的核心思想始终未变——“检索补充知识,生成优化表达”,但实现路径已从“复杂模型训练”转向“简单流程编排”。这一进化让RAG从少数实验室的尖端技术,成为企业数字化转型的“标配工具”,真正实现了“让模型即时获取外部知识,摆脱参数记忆的局限”。
| 欢迎光临 链载Ai (https://www.lianzai.com/) |
Powered by Discuz! X3.5 |