第16章-RAG
第 16 章RAG在模型回答前检索可信外部知识把相关证据加入 Prompt让回答更贴近私有数据并具备可追溯来源。前言模型参数中没有企业最新制度、内部文档和实时知识。RAGRetrieval-Augmented Generation不要求重新训练模型而是在每次回答前检索外部资料再把资料作为上下文交给模型。一、RAG 解决什么问题私有知识没有进入通用模型知识更新频繁不适合反复微调回答需要引用来源需要限制模型只参考当前用户可访问的数据。RAG 能降低无依据回答但不能保证绝对正确。检索错误、文档错误和模型误读仍然可能发生。二、完整流程RAG 分为离线和在线两条链。离线加载 → 清洗 → 切分 → Embedding → VectorStore 在线问题 → 检索 → 上下文增强 → 模型生成 → 引用三、文档加载Document Reader 把 PDF、Markdown、网页或数据库内容转换为统一 Document。加载阶段应保留来源、标题、页码、更新时间、租户等 Metadata。扫描 PDF 需要 OCR复杂表格和多栏排版可能丢失结构不能默认“读取成功”等于内容正确。四、文档切分文档通常不能整体入库。Chunk 太大导致语义混杂和 Token 浪费太小则丢失上下文。切分应考虑标题层级、自然段、代码块、表格以及适当重叠。没有适用于所有资料的固定字符数。五、Embedding 与 VectorStore每个 Chunk 生成向量并与原文及 Metadata 一起写入 VectorStore。查询时必须使用兼容的 Embedding 模型。入库模型变更后通常需要重建向量文档删除或更新时必须同步处理旧 Chunk。六、RetrievalListDocumentdocumentsvectorStore.similaritySearch(SearchRequest.builder().query(question).topK(5).build());检索不仅是 TopK还应组合权限 Filter、相似度阈值、关键词检索和必要的重排。七、Prompt Augmentation把检索结果明确标记为参考资料请仅根据下面资料回答。 资料不足时明确说明无法判断。 【资料】 {context} 【问题】 {question}外部资料本身也可能包含恶意指令。应用应把它视为不可信数据而不是更高优先级的系统规则。八、使用 Advisor 组织 RAGSpring AI 可以通过检索 Advisor 在调用前查询 VectorStore 并增强 Prompt。业务 Service 保持简洁returnchatClient.prompt().user(question).advisors(retrievalAdvisor).call().content();具体 Advisor 名称和构造方式随版本变化应以当前项目 API 为准。九、引用来源回答应返回来源文档、页码或链接。引用必须来自实际检索结果不应让模型自由编造。建议由程序保留检索 Document 的 Metadata再把回答和来源组合为业务响应 DTO。十、没有检索结果时怎么办正确策略通常是明确说明资料不足、引导补充问题或转人工而不是让模型脱离资料自由回答。是否允许回退到通用知识应由业务策略决定。十一、RAG 质量评估分开评估检索正确证据是否进入 TopK生成回答是否忠实于证据引用来源是否真实支持结论安全是否跨租户或越权性能检索与生成延迟、Token 和费用。十二、常见优化查询改写把上下文相关的问题改成可独立检索的问题混合检索向量与关键词结合重排对候选文档再次排序元数据过滤提前限制范围上下文压缩只保留支撑回答的片段。优化必须基于评估集不能只凭单个演示问题。十三、从 API 进入源码Retrieval Advisor ↓ Question → SearchRequest ↓ VectorStore.similaritySearch ↓ Document Context ↓ Augmented Prompt → ChatModel重点观察查询参数如何构造、文档怎样写入请求上下文、引用信息如何保留以及流式调用下增强逻辑是否一致。十四、常见误区接入向量库就完成 RAG还缺少切分、过滤、增强和评估。TopK 越大越好噪声和 Token 成本同步增加。RAG 可以消除幻觉只能降低风险。引用让模型自己写即可来源应由程序依据检索结果生成。权限过滤放在生成后越权文档不应进入 Prompt。十五、本章总结RAG 的核心是“先检索证据再基于证据生成”。高质量实现需要同时管理入库、检索、Prompt 增强、引用、权限与评估。完整源码源码地址待补充 对应章节chapter-16-rag参考资料Spring AI RAG 官方文档下一章Tool Calling下一章让模型不只生成文字还能选择并调用应用内部的确定性能力。

相关新闻

终于有人把数据指标体系讲明白了:指标怎么定、怎么分、怎么用一次讲透

终于有人把数据指标体系讲明白了:指标怎么定、怎么分、怎么用一次讲透

很多企业做数据分析,做到最后都会遇到一个很奇怪的问题:报表越来越多,指标越来越多,但企业反而越来越说不清自己的经营状况。财务有一套收入,销售有一套收入,运营还有另一套收入;老板问一句“这…

2026/10/10 2:58:07 阅读更多 →
【会议征稿】第三届数字经济与计算机科学国际学术会议(DECS 2026)

【会议征稿】第三届数字经济与计算机科学国际学术会议(DECS 2026)

第三届数字经济与计算机科学国际学术会议 (DECS 2026) 2026 3rdInternational Conference on Digital Economy and Computer Science 会议官网: 第三届数字经济与计算机科学国际学术会议(DECS 2026)https://ais.cn/…

2026/10/10 2:57:07 阅读更多 →
论文阅读-EATA

论文阅读-EATA

EATA:Efficient Test-Time Model Adaptation without Forgetting论文:Efficient Test-Time Model Adaptation without Forgetting 会议:ICML 2022 核心思想:不是所有测试样本都值得用于模型更新。EATA 在 TENT 的熵最小化基础上&a…

2026/10/10 2:57:07 阅读更多 →

最新新闻

GPS天线设计 GNSS天线设计建议

GPS天线设计 GNSS天线设计建议

GPS天线设计 GNSS天线设计建议 天线作为导航定位设备中最重要的接收器件,它起到的作用就像是人的“耳朵”;是将卫星发送下来的电磁波能量变换成电子器件可解析的电流。因此天线的性能好坏将直接关系到GPS整机的产品性能。目前GNSS系统开放民用定位系统主要是美国GPS…

2026/10/10 5:16:30 阅读更多 →
Python实战:不规则JSON解析的容错技巧

Python实战:不规则JSON解析的容错技巧

真实项目里摸爬滚打的同学,大概率都遇到过这种场面:接口文档写得清清楚楚,联调时返回的 JSON 却一个比一个“野”。字段时有时无,价格一会儿是数字一会儿是字符串,嵌套结构深浅不一,偶尔还直接甩给你一个 J…

2026/10/10 5:16:30 阅读更多 →
vsode配置settings.json

vsode配置settings.json

一、打开方式命令面板运行“首选项:打开用户设置 (JSON)”命令 (CtrlShiftP)打开 settings.json 文件来更改默认设置二、配置文件内容{// 编辑器基本配置// 设置编辑器字体大小为 16"editor.fontSize": 16,// 控制字体样式"editor.fontFamily":…

2026/10/10 5:16:30 阅读更多 →
解密 Rust 裸指针操作的内存对齐(Alignment):未对齐访问的硬件陷阱与 read_unaligned 的真实代价

解密 Rust 裸指针操作的内存对齐(Alignment):未对齐访问的硬件陷阱与 read_unaligned 的真实代价

在编写系统底层网络协议解析、二进制序列化引擎或者直接与硬件寄存器打交道时,我们经常需要把一段原始的字节切片(&[u8])强行转译为高级结构体或整型数字。 很多从 C/C 转过来的开发者,习惯随手敲下这样的转换: //…

2026/10/10 5:16:30 阅读更多 →
vue使用el-tree 数据回显问题

vue使用el-tree 数据回显问题

treeMenus.forEach(menu > {if(!menu.hashChildren){//如果没有子节点,就勾选,这样就可以在父节点上有半选状态this.$refs.menuTree.setChecked(menu.id, true, false);} })menuTree:标签中设置的refmenu.id:节点的值找到叶子节…

2026/10/10 5:16:30 阅读更多 →
基于预训练技术的BIM与IoT数据融合及偏差预警算法实战

基于预训练技术的BIM与IoT数据融合及偏差预警算法实战

简介:这份文档面向建筑施工管理、BIM工程与智能建造方向的技术人员及研究者,围绕施工进度管控中数据维度单一、偏差预警滞后等痛点,给出基于DeepSeek预训练技术的BIM与IoT数据融合及偏差预警算法方案。全文共196页、50个大章节,从…

2026/10/10 5:15:29 阅读更多 →

日新闻

卫星轨道分类全解析:从LEO到GEO的选型逻辑与工程实践

卫星轨道分类全解析:从LEO到GEO的选型逻辑与工程实践

1. 从“卫星轨道分类”这个标题说起:为什么值得花时间搞懂第一次接触“卫星轨道分类”这个概念,很多人会觉得它离自己很远——不就是天上的星星怎么转吗?但如果你正在做航天任务规划、遥感数据接收、星座设计,甚至只是准备一场航天…

2026/10/10 0:00:39 阅读更多 →
Spring AOP 核心原理与实战:从概念到日志切面落地

Spring AOP 核心原理与实战:从概念到日志切面落地

1. 从一个真实痛点说起:为什么你的代码里到处都是重复逻辑刚入行那会儿,我写过一个用户管理模块,注册、登录、改密码、注销四个接口。每个接口里都塞了几乎一样的日志打印、参数校验、事务开启和提交。当时觉得没什么,能跑就行。直…

2026/10/10 0:00:40 阅读更多 →
Python招聘数据采集与分析可视化:从采集清洗到薪资技能城市可视化全链路

Python招聘数据采集与分析可视化:从采集清洗到薪资技能城市可视化全链路

简介:这是一套面向计算机相关专业学生与项目实战学习者的Python数据采集与分析可视化完整项目,以Boss直聘岗位数据为对象,适合用作毕业设计、课程设计或期末大作业。资源包共38个文件,约246KB,以13个py源码文件为核心&…

2026/10/10 0:00:40 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 15:26:32 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 1:36:08 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 10:11:06 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 21:13:17 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 21:32:20 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 6:17:20 阅读更多 →