【Agent 学习日记】从问题到答案:RAG系统完整处理流程与核心机制深度拆解

作者:小假是真的日期:2026/7/4

目录

🍬前言

🍬一、 RAG 系统全流程总览(宏观视角)

🍬二、 离线预处理:决定 RAG 效果的上限

🍬三、 在线推理第一步:问题是如何被“拆解”的?(Query 拆解)

🍬四、 向量检索与重排序:从“大海捞针”到“精准定位”

🍬五、 大模型(LLM)在 RAG 中到底负责什么?

🍬六、 最终输出:不仅是“答案”

🍬七、 关键痛点与优化方向(总结展望)

🍬八、面试回答

🍡RAG完整处理流程

🍡问题如何拆解?

🍡大模型负责什么?

🍡最终输出什么?

🍬结语


前言

随着大语言模型(LLM)的爆发式增长,幻觉问题、知识时效性以及数据安全壁垒成为了制约其落地的“三座大山”。检索增强生成(RAG, Retrieval-Augmented Generation)技术因其能够外挂知识库、提供可解释的引用而成为目前企业级应用的主流架构。

很多开发者知道 RAG 是“检索 + 生成”,但面对一个复杂的用户提问,系统内部到底经历了怎样的数据流转?大模型在其中究竟是“翻译官”还是“大脑”?本文将绕过浅显的 Demo 级讲解,深入技术底层,详细剖析 RAG 系统的完整生命周期。

一、 RAG 系统全流程总览(宏观视角)

一个标准的 RAG 系统处理流程可以划分为 离线数据预处理在线推理问答 两大阶段。

  • 离线阶段(数据工程):原始文档 -> 数据清洗 -> 文档分块(Chunking)-> 向量化(Embedding)-> 构建索引(Vector Index)-> 存入向量数据库。
  • 在线阶段(推理问答):用户输入问题 -> 问题分析与拆解 -> 向量检索召回 -> 重排序(Rerank)-> 上下文注入(Prompt Engineering)-> LLM 生成 -> 引用溯源与输出。

二、 离线预处理:决定 RAG 效果的上限

在线检索的质量高度依赖离线处理的数据颗粒度。

1. 数据清洗与分块策略
不能简单地将 PDF 或 Word 直接丢进去。我们需要针对 Markdown、表格、代码块进行结构化解析。分块(Chunking)策略是这里的核心难点:

  • 固定大小分块:容易切断语义,导致检索时上下文不完整。
  • 基于语义的递归分块:利用 RecursiveCharacterTextSplitter 根据段落、句子边界切分,保证每个 Chunk 拥有完整的语义单元。
  • 元数据附着:在每个 Chunk 上打上文件名、章节标题、时间戳等标签,便于后续的过滤检索。

2. 向量化模型的选择
并非所有场景都适用通用 Embedding 模型。对于医疗、法律等垂直领域,使用 BGE 或通用文本向量模型进行微调,能显著提升相似度计算的准确性。

三、 在线推理第一步:问题是如何被“拆解”的?(Query 拆解)

这是 RAG 系统中容易被忽视但极具价值的一环。用户的原始问题往往是口语化、模糊甚至包含多重意图的。直接拿原始问题去检索,召回率往往很低。

问题拆解(Query Transformation)的几种主流范式:

拆解策略适用场景技术实现示例
HyDE (假设性文档嵌入)用户问题过于简短让 LLM 先根据问题生成一段“假想答案”,然后用假想答案去向量库检索。这解决了“查询语句”与“文档语句”语义鸿沟的问题。
多路查询(Multi-Query)问题涉及多个实体或对比利用 LLM 将复杂问题扩展为 3-5 个不同视角的相似问题,并行检索,合并结果。例如:用户问“如何优化 MySQL 性能?”扩展为“MySQL 慢查询优化”、“MySQL 索引调优”、“MySQL 缓存策略”。
子问题分解(Decomposition)多跳推理(Multi-hop)问题例如问题:“《三体》作者获过的最高文学奖是什么?”拆解为 (1) 《三体》作者是谁? (2) 该作者获过哪些文学奖? (3) 其中最高级别的是?
Step-back Prompting需要背景知识的问题将具体问题抽象化。问“为什么特定函数报错”,退回一步问“该编程语言的基础异常处理机制”。

在这个阶段,LLM 扮演的是“问题重构师”的角色,它并不负责提供事实,而是负责理解用户意图,生成更利于检索的关键词或伪代码。

四、 向量检索与重排序:从“大海捞针”到“精准定位”

1. 检索(Retrieval)
系统将拆解后的多个 Query 转化为 Embedding 向量,在向量数据库中进行 ANN(近似最近邻)搜索。这一步通常会设置一个较大的召回值(Top K,例如 50),宁可多召回,也不能漏掉。

2. 重排序(Rerank)
这是 RAG 流程中的“精筛”环节。由于向量相似度有时并不完全等于语义相关性,我们需要一个更强大的交叉编码器(Cross-Encoder)对召回的 50 个 Chunks 进行逐一打分(0-1 相关性分数)。最终只选择得分最高的 Top 3 或 Top 5 送入大模型。

注意:重排序模型的计算开销较大,因此通常采用“粗排+精排”的级联架构。

五、 大模型(LLM)在 RAG 中到底负责什么?

很多人误以为大模型在 RAG 里只是负责“把检索到的资料复述一遍”,但实际上,大模型承担了 3 个至关重要的认知职责:

1. 上下文整合与去噪
检索回来的文档可能包含相互矛盾的信息或无关的噪音。大模型需要利用其语义理解能力,自动忽略不相关的检索片段,聚焦于高置信度的信息。

2. 推理与逻辑缝合
大模型不是“搬运工”,而是“逻辑组装师”。它需要将多个碎片化的文本片段,按照逻辑因果、时间顺序或空间结构重新组织成连贯的段落。

3. 未登录知识的拒绝与兜底
这是 RAG 中最体现模型“智能”的地方。如果检索到的文档置信度极低,或者明显与问题无关,优秀的大模型应该能够识别这一点并回复:“根据现有资料无法回答该问题。”——这有效缓解了 LLM 的幻觉问题。

六、 最终输出:不仅是“答案”

RAG 系统的最终输出远比一个简单的 result 字符串要丰富。为了提升用户体验和信任度,一个工业级的 RAG 输出应该包含以下结构:

1{
2  "final_answer": "根据2025年Q3财报,该公司营收增长主要得益于AI芯片业务的爆发...",
3  "references": [
4    {
5      "source": "2025_annual_report.pdf",
6      "page": 42,
7      "content_snippet": "AI芯片出货量同比增长300%..."
8    }
9  ],
10  "thinking_trace": "已检索到 3 篇相关文档,主要依据财务报告章节进行回答。",
11  "related_questions": ["该公司的毛利率是多少?", "主要竞争对手是谁?"]
12}
  • 最终答案:生成的自然语言回复。
  • 溯源引用:告诉用户这句话出自哪份文档的第几页,实现 RAG 的可解释性(这是企业级应用的刚需)。
  • 追问推荐:基于当前上下文,LLM 生成的智能问答引导。

七、 关键痛点与优化方向(总结展望)

  1. 上下文丢失:中间部分的检索内容容易被长上下文模型“遗忘”,需采用 Lost in the Middle 的注意力优化策略。
  2. 检索延迟:重排序和 LLM 推理是主要耗时点,可通过 流式输出(Streaming)Prefetch(预取) 缓解用户等待焦虑。
  3. 评估体系:建议引入 RAGAS 等评估框架,从 Faithfulness(忠实度)和 Answer Relevance(答案相关性)两个维度自动化评估系统效果。

八、面试回答

RAG完整处理流程

第一步:索引阶段(离线)

  • 先把你的文档切分成小块(比如500字一段),然后调用Embedding模型把每一块转成向量。
  • 把这些向量存到向量数据库里(比如Milvus、Pinecone、Faiss),同时最好把原始文本也存下来。

第二步:检索阶段(在线)

  • 用户问一个问题,比如“我们公司的年假政策是什么?”
  • 系统同样用同一个Embedding模型把这个问题转成向量。
  • 去向量数据库里做相似度搜索,找回最相关的Top-K个文本块(比如最相似的3段)。

第三步:生成阶段(在线)

  • 把用户的问题 + 检索到的文本块,拼成一个提示词(Prompt)。
  • 送给大模型(比如GPT、文心一言、Llama)。
  • 大模型基于这些检索到的信息来生成最终答案。

问题如何拆解?

常用的拆解策略:

  • 逻辑步骤拆(因果、时间顺序)
  • 实体关系拆(人名、地名、事件)
  • Few-shot例子让大模型自己拆(比如提示:“请把这个问题拆成3个可检索的子问题”)

大模型负责什么?

大模型在RAG里主要做三件事:

  1. 理解与改写(入口)
    有时先让大模型把用户口语化的问题改写成更适合检索的查询,比如用户说“那个很火的手机是啥来着”,改写成“2024年销量最高的智能手机型号”。
  2. 答案生成(核心)
    拿到检索的文本块后,大模型要做的事是:基于这些信息生成答案,不能瞎编。它还要做融合——如果多块信息有冲突,它能判断哪个更可信;如果信息缺失,它会说“根据现有资料无法回答”。
  3. 可选的后处理
    比如总结、翻译、格式化输出(JSON/表格)。另外也可以让大模型检查答案是否真的来自检索内容,避免幻觉。

最终输出什么?

最基础的输出就是一段自然语言的文本答案,但实际工程中通常输出一个结构化的对象。

还可能附带:

  • 检索到的原文片段(供用户核验)
  • 相关的追问建议(比如“你想了解年假申请流程吗?”)

结语

RAG 系统不仅仅是“向量数据库 + ChatGPT”的简单拼接。从 Query 的拆解改写,到 Rerank 的精准过滤,再到 LLM 的逻辑整合与引用输出,每一个环节都充满了工程与算法的博弈。

希望通过本文的梳理,能帮助你构建一个更稳定、更智能的 RAG 应用。欢迎在评论区留言讨论你在落地过程中遇到的坑!

如果小假的内容对你有帮助,请点赞评论收藏。创作不易,大家的支持就是我坚持下去的动力!


【Agent 学习日记】从问题到答案:RAG系统完整处理流程与核心机制深度拆解》 是转载文章,点击查看原文


相关推荐


GitHub 热榜项目 - 周榜(2026-06-21)
CoderJia_2026/6/26

GitHub 热榜项目 - 周榜(2026-06-21) 生成于:2026-06-21 统计摘要 共发现热门项目: 21 个 Token赞助:siliconflow 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 本期热点趋势总结 本期 GitHub 热榜呈现出明显的 AI 工程化 与基础设施化 趋势:MCP 服务、Agent 技能、提示词安全扫描、RAG 压缩、代码知识图谱等项目集中爆发,说明开发重点已


《PyTorch 深度修炼》Dataset 和 DataLoader:数据如何喂给模型
闵孚龙2026/6/17

一、模型吃的不是文件,是 Batch Tensor 很多人刚学 PyTorch,会把数据加载理解成“读文件”。这个理解太浅。 训练模型时,真正进入模型的不是图片路径,不是 JSON,不是数据库记录,而是整理好的 Batch Tensor。 Dataset 负责回答一个问题:一个样本怎么取。DataLoader 负责回答另一个问题:怎样高效、稳定、成批地把样本送到训练循环。 所以 DataLoader 不是一个普通 for 循环。它是一条数据流水线。它管顺序、管批次、管拼接、管多进程、管预


Java Spring Data JPA 实战指南:Repository 查询、分页与实体映射
唐青枫2026/6/10

简介 Spring Data JPA 是 Spring Data 家族里专门用来简化 JPA 开发的模块。 它不是一个新的 ORM 规范。 更准确地说: JPA 是规范 Hibernate 是常见实现 Spring Data JPA 是 Spring 对 JPA Repository 的封装 在 Spring Boot 项目里,常见调用链大致是: Controller | v Service | v Repository | v Spring Data JPA |


阿里云ECS部署YOLO教程
MR_Colorful2026/6/2

1、阿里云注册 在官网注册账号:阿里云登录 - 欢迎登录阿里云,安全稳定的云计算服务平台 2、ECS配置选择 3、在阿里云 Workbench里为Ubuntu 18/20/22/24安装XFCE桌面(不推荐在这个里面使用,不好用!) stesteps1、通过VNC连接实例 step2、更新软件包列表和已安装的包 sudo apt update && sudo apt upgrade -y step3、安装XFCE桌面环境 sudo apt install -y xfce4 xfc


HarmonyOS 鸿蒙PC平台三方库移植:使用 vcpkg 移植 libzen(ZenLib)
展菲2026/5/25

网罗开发 (小红书、快手、视频号同名)   大家好,我是 展菲,目前在上市企业从事人工智能项目研发管理工作,平时热衷于分享各种编程领域的软硬技能知识以及前沿技术,包括iOS、前端、Harmony OS、Java、Python等方向。在移动端开发、鸿蒙开发、物联网、嵌入式、云原生、开源等领域有深厚造诣。 图书作者:《ESP32-C3 物联网工程开发实战》 图书作者:《SwiftUI 入门,进阶与实战》 超级个体:COC上海社区主理人 特约讲师:大学讲师,谷歌亚马逊分享嘉宾 科技


决定命运的,从来不是市场,而是你看待市场的方式
怕浪猫2026/5/4

真正拉开差距的,从来不是信息,而是认知。 在金融市场中,绝大多数人输掉的,不是技术,而是思维方式。 真正站在顶层的投资者,往往遵循一些看似简单、却极难长期执行的原则。这些原则,构成了投资世界的底层逻辑。 以下 9 种投资思维,不仅被反复验证,更塑造了历史上最成功的一批投资者。 一、长期主义:真正的财富,是"熬"出来的 "如果你不打算持有一只股票10年,那就不要持有10分钟。" —— Warren Buffett 真实故事:可口可乐的"慢性暴利" 1988年,巴菲特开始大量买入 Coca-


S10-蓝桥杯 17822 乐乐的积木塔
郑恩赐2026/4/25

S10-蓝桥杯 17822 乐乐的积木塔 摘要:本文详细解析蓝桥杯17822题"乐乐的积木塔",重点剖析题目中"连续递减积木塔"等绕口表述的真实含义,分享个人从困惑到理解的解题历程,并提供简洁的Python题解。 1. 题目描述 📋 1.1 问题描述 在乐乐的玩具箱中,有一系列的积木,每个积木上都标记有一个高度值。乐乐想要找出每个积木能够成为最高的连续递减积木塔的一部分的最大高度。对于每个积木,求出包含该积木的最长递减积木序列的长度。 1.2 输入格式 第一行包含一个整数 NNN。 第二行


GitHub 热榜项目 - 日榜(2026-04-14)
CoderJia_2026/4/16

GitHub 热榜项目 - 日榜(2026-04-14) 生成于:2026-04-14 统计摘要 共发现热门项目: 16 个 榜单类型:日榜 Token赞助:siliconflow 本期热点趋势总结 本期热榜彰显了 AI Agent 深度渗透垂直场景的技术趋势。Claude 生态及其相关的代码辅助开发工具(如 Claude Code 高级优化技巧、记忆插件及自动开发框架)成为绝对核心,反映出开发者对提高 LLM 编码确定性和确定化工作流的强烈需求。同时,金融领域的 Found


《从同步到消息驱动:现代后端交互模式的深度解析与工程实践》
铭渊老黄2026/4/8

《从同步到消息驱动:现代后端交互模式的深度解析与工程实践》 ——以百万行报表导出为例,谈用户体验、可观测性、失败处理与成本权衡 在过去十多年里,我见证了 Python 从“小巧优雅的脚本语言”成长为支撑全球互联网、数据科学、AI 产业的核心力量。无论是 Web 服务、自动化任务、数据处理,还是如今的 LLM 应用,Python 都以其灵活、可读、生态丰富的特性成为开发者的首选。 而在所有后端系统中,一个绕不开的问题是: “系统应该如何与用户交互?” 是同步返回?异步任务?还是彻底消息驱动? 这篇


腾讯这只小程序Agent🦀,帮我找到了最强日程、文件、知识管理姿势
AI袋鼠帝2026/3/31

大家好,我是袋鼠帝。 这两天,我发现微信里悄悄接入了一个全新的Agent入口:WorkBuddy 微信小程序。 通过这个小程序,你不仅能在云端直接召唤龙虾,甚至还能把你办公桌上那台电脑里的本地WorkBuddy,直接拉进微信里干活! 简单来说,就是你可以通过workbuddy小程序,操控你本地电脑上的workbuddy,进而控制你的电脑干活~ 更重要的是,进一步打通了微信的生态,用起来更舒服了。 经常看我文章的朋友对 WorkBuddy 应该不陌生。之前我写过一篇关于它的测评,我也是没想到,阅

首页编辑器站点地图

本站内容在 CC BY-SA 4.0 协议下发布

Copyright © 2026 聚合阅读