当前位置: 首页 > article >正文

【SpringAIAlibaba新手村系列】(12)RAG 检索增强生成技术

第十二章 RAG 检索增强生成技术版本标注Spring AI:1.1.2Spring AI Alibaba:1.1.2.0章节定位本章的RetrievalAugmentationAdvisor VectorStore仍然是经典 RAG 入门方案。但 Spring AI Alibaba1.1.2.x官方代码已经进一步演进到RAG Workflow思路典型流程是Query - Rewrite - Retrieve - Prepare - Agent - Response。因此本章建议理解为“基础版 RAG”复杂业务更推荐升级为 Graph/Workflow 版本的 RAG。s01 s02 s03 s04 s05 s06 s07 s08 s09 s10 s11 [ s12 ] s13 s14 s15 s16 s17 s18先查资料, 再作回答-- RAG 的核心不是更会编, 而是更少胡说。一、为什么需要 RAG1.1 AI 的知识局限AI 大模型虽然很强但它有以下局限知识有时效性训练数据截止某个时间点之后的事不知道专业知识缺乏某些垂直领域的知识可能不准确企业内部信息它不知道你公司的业务和数据1.2 传统解决方式微调Fine-tuning让 AI 重新训练缺点成本高、需要大量数据、时间长适合通用知识需要调整的场景1.3 RAG 的诞生RAGRetrieval-Augmented Generation检索增强生成的核心思想是不改变 AI 的基础能力而是在它回答问题时先去知识库查找相关信息然后把信息连同问题一起发给 AI传统方式 用户 ──→ AI ──→ 直接回答AI靠记忆 RAG方式 用户 ──→ 向量搜索 ──→ 知识库查找相关信息 ──→ ──→ 把问题找到的信息一起发给 AI ──→ AI结合信息回答二、RAG 工作流程2.0 工作流化的 RAG 思路在很多入门教程里我们通常把 RAG 理解成用户提问向量检索把检索结果塞进 Prompt调用 LLM 回答这条链路没有问题但在 Spring AI Alibaba1.1.2.x的官方 workflow 示例中RAG 已经进一步升级成更可控的多步骤流程Query - Rewrite - Retrieve - Prepare - Agent - Response各步骤的含义如下Rewrite先让模型把原始问题改写成更适合检索的查询语句Retrieve基于改写后的查询做向量检索Prepare把命中的文档、用户问题、约束条件整理成更稳定的上下文Agent再交给ReactAgent或普通聊天模型生成最终答案这种做法的好处是检索命中率通常更高Prompt 注入更清晰更容易做调试、观测和节点拆分后续更容易迁移到Graph和工作流编排所以你可以把本章先学成“基础 RAG”再进一步理解成可拆分、可编排的工作流化 RAG。2.1 完整的 RAG 流程┌─────────────────────────────────────────────────────────────┐ │ RAG 完整流程 │ ├─────────────────────────────────────────────────────────────┤ │ │ │ 阶段一数据准备离线 │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │ │ 文档集合 │───→│ 文本分块 │───→│ 向量化 │───→存入向量库│ │ └──────────┘ └──────────┘ └──────────┘ │ │ │ │ 阶段二问答推理在线 │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │ │ 用户问题 │───→│ 向量化 │───→│ 相似度搜索│───→获取相关 │ │ └──────────┘ └──────────┘ └──────────┘ 文档 │ │ ↓ │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │ │ 构建Prompt│←── │ 拼接上下文│←── │ 注入知识 │ │ │ └──────────┘ └──────────┘ └──────────┘ │ │ ↓ │ │ ┌──────────┐ │ │ │ 调用LLM │ │ │ └──────────┘ │ │ ↓ │ │ 返回结合知识后的答案 │ │ │ └─────────────────────────────────────────────────────────────┘2.2 本章场景运维故障查询这一章不是直接让大模型“凭空回答运维问题”而是先给它准备一份本地知识资料再通过 RAG 的方式让它去查资料后回答。这份资料就放在项目的resources目录下文件名通常叫ops.txt你可以把它理解成一份简化版的“运维故障知识库”。里面会提前写好一些故障编码及对应说明例如故障编码A0001故障编码C2222对应解释存储系统异常、网络不通、服务不可用等也就是说本章真正要做的事情不是“训练一个懂运维的大模型”而是先把ops.txt里的故障资料读出来将这些文本切分、向量化并存入向量数据库用户提问时先去向量库里检索最相关的故障说明再把检索结果和用户问题一起交给大模型生成答案这样一来用户在调用接口时不需要自己知道完整故障说明只需要问类似A0001 是什么故障C2222 怎么处理网络不通对应哪个故障编码系统就能先从ops.txt这份知识资料里找到相关内容再让 AI 组织成更自然的回答。所以这一章的场景准确地说应该是基于resources/ops.txt构建一个小型运维知识库然后通过 RAG 实现“查故障码、问故障原因、做运维问答”的效果。三、项目代码详解3.1 配置类package com.atguigu.study.config; import org.springframework.ai.chat.client.ChatClient; import org.springframework.ai.chat.model.ChatModel; import org.springframework.ai.embedding.EmbeddingModel; import org.springframework.ai.vectorstore.VectorStore; import org.springframework.ai.chat.client.ChatClient; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; Configuration public class SaaLLMConfig { /** * 注册 Qwen 的 ChatClient */ Bean(qwenChatClient) public ChatClient qwenChatClient(Qualifier(dashScopeChatModel) ChatModel chatModel) { return ChatClient.builder(chatModel).build(); } /** * 注入已经自动配置好的 VectorStore */ Bean public RagService ragService(ChatClient qwenChatClient, VectorStore vectorStore) { return new RagService(qwenChatClient, vectorStore); } }上面这段代码想表达的重点不是“必须手写某一种向量库实现”而是EmbeddingModel负责文本向量化VectorStore负责向量检索ChatClient Advisor负责把检索结果注入到问答链路中如果你选择 Redis、Milvus、PGVector 或其他实现核心思路都一样。3.2 RAG 控制器package com.atguigu.study.controller; import jakarta.annotation.Resource; import org.springframework.ai.chat.client.ChatClient; import org.springframework.ai.rag.advisor.RetrievalAugmentationAdvisor; import org.springframework.ai.rag.retrieval.search.VectorStoreDocumentRetriever; import org.springframework.ai.vectorstore.VectorStore; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; import reactor.core.publisher.Flux; /** * RAG 控制器 * 展示如何使用检索增强生成来回答专业问题 */ RestController public class RagController { Resource(name qwenChatClient) private ChatClient chatClient; // 注入已配置的向量数据库 Resource private VectorStore vectorStore; /** * RAG 问答接口 * * 接口http://localhost:8012/rag4aiops?msg00000 * 接口http://localhost:8012/rag4aiops?msgC2222 * * 测试步骤 * 1. 先调用 add 接口如果没有历史数据 * 2. 再调用 rag4aiops 接口询问故障码 * * param msg 用户的故障编码查询 * return AI 结合知识库返回的答案 */ GetMapping(/rag4aiops) public FluxString rag(String msg) { // 1. 定义系统提示词 // 告诉 AI 它的角色是运维工程师按照知识库中的编码给出解释 String systemInfo 你是一个运维工程师,按照给出的编码给出对应故障解释,否则回复找不到信息。 ; // 2. 创建检索增强Advisor // 这是 RAG 的核心组件 // - VectorStoreDocumentRetriever 负责从向量数据库中检索相关内容 // - RetrievalAugmentationAdvisor 负责把检索结果注入到Prompt中 RetrievalAugmentationAdvisor advisor RetrievalAugmentationAdvisor.builder() // 指定使用向量数据库进行检索 .documentRetriever( VectorStoreDocumentRetriever.builder() .vectorStore(vectorStore) .build() ) .build(); // 3. 构建并发送请求 // 在 .advisors() 中添加 RAG Advisor // 它会自动执行检索 → 注入 → 调用AI → 返回结果 return chatClient .prompt() .system(systemInfo) .user(msg) .advisors(advisor) // 关键添加RAG增强 .stream() .content(); } }四、RAG 的核心组件4.1 RetrievalAugmentationAdvisor这是 Spring AI 提供的 RAG 增强组件它的作用拦截用户请求从向量数据库检索相关信息将检索结果注入到 Prompt 中调用 AI让它基于检索结果回答返回最终答案4.2 DocumentRetriever文档检索器负责将用户问题转为向量在向量数据库中执行相似度搜索返回匹配度最高的文档五、本章小结5.1 核心概念概念说明RAG检索增强生成让AI结合知识库回答问题VectorStore向量数据库存储文档的向量RetrievalAugmentationAdvisorRAG核心组件自动检索注入DocumentRetriever从向量数据库检索文档的组件5.2 RAG 工作流程提问 → 向量化 → 相似度搜索 → 提取相关文档 → 注入Prompt → 调用AI → 返回答案5.3 应用场景企业内部知识问答产品手册查询客服问答系统专业领域知识库本章重点理解 RAG 的核心原理掌握 RetrievalAugmentationAdvisor 的使用理解 RAG 在实际场景中的应用下章剧透s13学会了 RAG 技术后下一章我们将学习 Tool Calling工具调用——让 AI 能够调用外部函数来完成真实任务编辑者Flittly更新时间2026年4月相关资源Spring AI RAG 官方文档

相关文章:

【SpringAIAlibaba新手村系列】(12)RAG 检索增强生成技术

第十二章 RAG 检索增强生成技术 版本标注 Spring AI: 1.1.2Spring AI Alibaba: 1.1.2.0 章节定位 本章的 RetrievalAugmentationAdvisor VectorStore 仍然是经典 RAG 入门方案。但 Spring AI Alibaba 1.1.2.x 官方代码已经进一步演进到 RAG Workflow 思路,典型流程…...

3个步骤轻松解决B站缓存视频无法播放问题:m4s格式转换完全指南

3个步骤轻松解决B站缓存视频无法播放问题:m4s格式转换完全指南 【免费下载链接】m4s-converter 一个跨平台小工具,将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter 你是否曾遇到这样的情…...

10个必备的Tsuru插件:扩展PaaS平台功能的完整指南

10个必备的Tsuru插件:扩展PaaS平台功能的完整指南 【免费下载链接】tsuru Open source and extensible Platform as a Service (PaaS). 项目地址: https://gitcode.com/gh_mirrors/ts/tsuru Tsuru是一个开源且可扩展的Platform as a Service (PaaS)平台&…...

QQ音乐加密文件终极解决方案:QMCDecode完整使用指南

QQ音乐加密文件终极解决方案:QMCDecode完整使用指南 【免费下载链接】QMCDecode QQ音乐QMC格式转换为普通格式(qmcflac转flac,qmc0,qmc3转mp3, mflac,mflac0等转flac),仅支持macOS,可自动识别到QQ音乐下载目录,默认转换…...

基于SpringBoot + Vue的基于线性回归的音乐推荐系统(爬虫 + 可视化大屏)

文章目录前言一、详细操作演示视频二、具体实现截图三、技术栈1.前端-Vue.js2.后端-SpringBoot3.数据库-MySQL4.系统架构-B/S四、系统测试1.系统测试概述2.系统功能测试3.系统测试结论五、项目代码参考六、数据库代码参考七、项目论文示例结语前言 💛博主介绍&#…...

TVA深度解析(15):同步实现缺陷判定的高鲁棒性与高准确率

在AI视觉智能体与物理世界交互的宏大图景中,视觉系统不仅是智能体感知环境的“眼睛”,更是其执行决策的“导航仪”。无论上层的认知推理多么精妙,底层的感知若是不稳,一切智能都将成为空中楼阁。因此,AI智能体视觉检测…...

2025届必备的五大AI科研方案推荐

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 使AIGC(人工智能生成内容)检测率降低的关键之处在于弱化文本所具有的…...

三自由度机械臂自适应神经网络控制(径向基函数)Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。👇 关注我领取海量matlab电子书和数学建模资料🍊个人信条:格物致知,完整Matl…...

揭秘蒸发冷省电空调,成车间降温设备优选

在工业生产中,大车间的降温一直是个重要问题。传统空调在大车间使用时,往往面临着能耗高、制冷效果不佳等难题。而蒸发冷省电空调的出现,为大车间降温带来了新的解决方案,逐渐成为车间降温设备的优选。蒸发冷省电空调在制冷原理上…...

D3作业1-K8s 存储与服务实验手册(实验1-4)

前置准备:配置Harbor私有仓库 # 在k8s-harbor1上执行# 1. 下载镜像 docker pull registry.cn-hangzhou.aliyuncs.com/zhangshijie/nginx:1.22.0-alpine# 2. 打标签 docker tag registry.cn-hangzhou.aliyuncs.com/zhangshijie/nginx:1.22.0-alpine 192.168.44.104/library/ng…...

Taskwarrior钩子脚本开发终极指南:如何扩展你的任务管理功能

Taskwarrior钩子脚本开发终极指南:如何扩展你的任务管理功能 【免费下载链接】taskwarrior Taskwarrior - Command line Task Management 项目地址: https://gitcode.com/gh_mirrors/ta/taskwarrior Taskwarrior是一款功能强大的命令行任务管理工具&#xff…...

2025届学术党必备的五大降AI率工具推荐

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 现如今的学术环境里头,各种各样的AI内容检测系统正变得越发普及,为原…...

告别手动翻找!用bcftools和Python脚本3分钟搞定VCF文件样本清单提取

告别手动翻找!用bcftools和Python脚本3分钟搞定VCF文件样本清单提取 在基因组数据分析的日常工作中,VCF文件就像一本厚重的电话簿,记录着每个样本的遗传变异信息。而样本ID清单则是这本电话簿的目录页——没有它,我们甚至不知道手…...

AI Agent Harness Engineering 重塑企业运营:从概念到落地的完整路径

AI Agent Harness Engineering 重塑企业运营:从概念到落地的完整路径 一、引言 钩子 你是否曾在企业运营中遇到过这样的场景:市场数据瞬息万变,决策团队却需要花费数周时间收集、分析信息才能做出响应;客户服务部门每天处理大量重复咨询,却仍有大量积压工单;供应链管理…...

MVP.css代码块和引用样式终极指南:提升内容可读性的完整秘诀

MVP.css代码块和引用样式终极指南:提升内容可读性的完整秘诀 【免费下载链接】mvp MVP.css — Minimalist classless CSS stylesheet for HTML elements 项目地址: https://gitcode.com/gh_mirrors/mv/mvp MVP.css是一个极简主义的无类CSS样式表,…...

STM32H7实战:用CubeMX动态切换主频(72M到16M)的保姆级避坑指南

STM32H7动态主频切换实战:从72MHz到16MHz的工程化解决方案 在嵌入式系统开发中,动态调整主频是平衡性能与功耗的关键技术。想象一下,你的智能穿戴设备正在执行运动数据实时分析,此时需要全速运行;而当进入待机状态时&a…...

Tsuru平台安全加固终极指南:10个关键步骤保护你的PaaS环境

Tsuru平台安全加固终极指南:10个关键步骤保护你的PaaS环境 【免费下载链接】tsuru Open source and extensible Platform as a Service (PaaS). 项目地址: https://gitcode.com/gh_mirrors/ts/tsuru Tsuru是一款开源且可扩展的平台即服务(PaaS)解决方案&…...

Cilium v1.17.3深度优化:让容器网络性能提升30%的关键技术解析

Cilium v1.17.3深度优化:让容器网络性能提升30%的关键技术解析 【免费下载链接】cilium eBPF-based Networking, Security, and Observability 项目地址: https://gitcode.com/GitHub_Trending/ci/cilium Cilium是一个基于eBPF的开源容器网络解决方案&#x…...

告别重复操作:用快马ai生成脚本自动化vmware运维任务

告别重复操作:用快马AI生成脚本自动化VMware运维任务 作为VMware管理员,每天面对大量重复性运维操作是家常便饭。手动检查虚拟机状态、逐个创建快照、整理资源报表这些工作不仅耗时耗力,还容易出错。最近我发现用InsCode(快马)平台可以快速生…...

某东H5ST参数逆向避坑指南:定值与动态值的处理策略(以5.1.2版本为例)

某东H5ST参数逆向工程实战:定值与动态值的精准识别与处理策略 在电商平台接口逆向工程中,H5ST参数的生成逻辑往往是工程师需要攻克的难点之一。特别是在某东这样的大型电商平台,其加密策略会随着版本更新而不断演变。本文将以5.1.2版本为例&a…...

实例】四相机测量项目源码使用海康SDK及C#+halcon实现的通俗易懂教程:连接相机、模板匹...

四相机测量项目源码,海康相机SDK,C#halcon,写得比较通俗易懂,四相机四种测量模式,某工厂产线曾使用的项目。 主要功能有连接海康相机采图,模板匹配,圆形拟合,直线拟合,像…...

基于DSP28335逆变器程序,单相全桥逆变器程序,采用双极性调制 程序逻辑清晰,注释详细,详...

基于DSP28335逆变器程序,单相全桥逆变器程序,采用双极性调制 程序逻辑清晰,注释详细,详细到几乎每一句都有注释,对于小白异常友好,有些地方甚至基本原理都补充写明了,百分之99的程序注释不会有我…...

从零到一:在Linux服务器上部署3DGS并驯服你的专属3D数据

1. 环境准备:搭建你的3D数据炼丹炉 第一次在Linux服务器上部署3D Gaussian Splatting(简称3DGS)时,我踩过的坑能写满三页A4纸。现在回想起来,90%的问题都出在环境配置阶段。就像盖房子要打地基,环境配置决定…...

短剧小程序三端互通:微信 / 抖音 / 快手数据同步,会员一键通用

短剧行业已进入全域流量、多端变现的时代。只做微信,公域起量慢;只做抖音快手,私域难沉淀、风控风险高。真正能长期盈利的玩家,都在布局三端互通—— 微信、抖音、快手小程序数据实时同步,会员权益一键通用&#xff0c…...

2026年文档生成工具榜单:8 款实力派工具,效率与体验双优

2026 年,数字化办公已全面迈入智能化深水区,文档作为企业知识沉淀、业务流转与团队协同的核心载体,其智能化程度直接决定组织效率上限。据艾瑞咨询《2025 年中国智能办公应用趋势报告》显示,超 80% 企业将实时内容共创与知识沉淀视…...

华三MSR系列路由器单臂路由配置全记录:从实验环境搭建到真机部署避坑指南

华三MSR路由器单臂路由实战:从实验室到生产环境的全流程指南 单臂路由技术在企业网络架构中扮演着关键角色,特别是在需要实现多VLAN互通又要求流量隔离的中小型网络场景。华三MSR系列路由器(如MSR2600/3600)凭借其稳定的性能和灵活…...

突破3D资产生产瓶颈:Hunyuan3D-2赋能企业级内容创作的实战案例

突破3D资产生产瓶颈:Hunyuan3D-2赋能企业级内容创作的实战案例 【免费下载链接】Hunyuan3D-2 High-Resolution 3D Assets Generation with Large Scale Hunyuan3D Diffusion Models. 项目地址: https://gitcode.com/GitHub_Trending/hu/Hunyuan3D-2 Hunyuan3…...

深度解析bilibili-linux:Linux平台上的专业级B站客户端完整指南

深度解析bilibili-linux:Linux平台上的专业级B站客户端完整指南 【免费下载链接】bilibili-linux 基于哔哩哔哩官方客户端移植的Linux版本 支持漫游 项目地址: https://gitcode.com/gh_mirrors/bi/bilibili-linux bilibili-linux是一款专为Linux系统设计的开…...

【花雕动手做】ESP32-S3 + MimiClaw 实战:为板载 WS2812 添加循环红绿蓝与彩虹灯效果

原标题 【花雕动手做】ESP32-S3 MimiClaw 实战:为板载 WS2812 添加循环红绿蓝与彩虹灯效果 ——从静态颜色到动态光效,让你的嵌入式 AI Agent 拥有更丰富的视觉反馈 概述 适用硬件:ESP32-S3 开发板(板载 WS2812 RGB LED&#x…...

AI大模型风口已至!4大高薪就业方向,助你精准转型少走弯路!

当下,AI大模型正从“技术爆发期”迈入“全面应用期”。对于IT从业者而言,这并非一道“要不要转”的选择题,而是一道“往哪转”的战略题。 很多人想抓住这波红利,却卡在“不知道从哪下手”“不清楚自己适合哪个赛道”的困境中。 …...