【大模型RAG开发实战】
文章平均质量分 94
本系列博客将以一个完整的 Spring Boot + Spring AI 实战项目为蓝本,从零到一拆解一个生产级 RAG 知识库系统的设计与实现。涵盖了从基础对话、文档向量化、检索增强、对话记忆,到敏感词过滤、来源追溯、跨向量聚合等完整功能链路。
小小工匠
show me the code ,change the world
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
LLM - 什么是 RAG?在百万 Token 时代,我们还需要它吗
文章摘要 本文探讨了检索增强生成(RAG)与长上下文窗口在知识管理中的适用边界。核心结论是:RAG 的定位已从弥补模型记忆的补丁,转变为上下文工程的关键组件,负责筛选最相关的信息进入模型视野。 关键要点: RAG 的核心价值:解决模型记忆局限、私有数据访问和幻觉问题,通过检索-生成流程实现精准回答。 技术细节: 切分策略:需保持语义自洽,推荐递归分隔符切分+重叠窗口,结合结构感知(如Markdown标题)优化召回。 向量化:需批量处理、锁定维度,中文场景建议选用BGE等本地化模型。 方案选择: 长上下文:适原创 2026-08-12 22:41:29 · 388 阅读 · 0 评论 -
Spring AI RAG 工程实践:RAG 来源追溯_让 AI 回答“有据可查“
本文介绍了RAG系统中实现来源追溯的三步法:1)文档入库时通过元数据标记来源文件;2)检索后通过自定义Advisor将来源信息注入上下文;3)在系统提示中引导AI模型主动标注信息来源。该方法通过数据层、检索层和生成层的协作,实现了回答内容与原始文档的精准对应,有效提升了RAG系统的可信度和可验证性。关键实现包括元数据管理、上下文增强和提示词工程,最终输出会明确标注"来源文件",方便用户查证。原创 2026-05-21 06:45:00 · 713 阅读 · 0 评论 -
Spring AI RAG 工程实践:解决 RAG 系统的“胡编乱造“_大模型幻觉的工程化防治
本文探讨了RAG系统中大模型"幻觉"问题的解决方案。当用户提问超出知识库范围时,大模型容易编造看似合理实则错误的答案。文章提出两种互补方案:1)通过提示词约束明确限制模型仅基于知识库内容回答;2)利用Spring AI框架的RetrievalAugmentationAdvisor组件,在检索为空时自动替换用户问题为预设提示。两种方案结合使用时效果最佳,既能快速上线又确保框架级防护。实践表明,提高相似度阈值并设置严格约束可有效防止模型"胡编乱造",宁可拒绝回答也不提供错误信息。原创 2026-05-21 05:30:00 · 561 阅读 · 0 评论 -
Spring AI RAG 工程实践:RAG 召回率优化_从数据准备到检索策略的全链路提升
本文系统性地探讨了提升RAG(检索增强生成)系统召回率的全链路优化策略。从数据准备、向量化、存储到检索环节,提出了一系列优化方法:数据清洗与准入机制确保质量;选择合适的Embedding模型优化语义表征;向量数据库层通过索引选择、阈值调整和元数据过滤提升效率;检索阶段采用Rerank重排序、查询改写和混合检索策略。实践表明,这些方法能显著提升简单和复杂问题的准确率(分别达95%和82%)。核心在于先保证召回率再优化精确度,形成完整的优化闭环。原创 2026-05-20 06:45:00 · 675 阅读 · 0 评论 -
Spring AI RAG 工程实践:RAG 知识库的生命周期管理_资料过期更新与全链路清洗
本文探讨知识库文档管理的两种场景处理方案:对于文档版本迭代,建议采用版本隔离策略,新旧文档共存并通过metadata区分;对于误传文件删除,需实现全链路清洗(MySQL→Milvus→OSS)。核心实现包括:1)版本隔离通过source字段标识;2)删除时利用vectorId映射机制精确定位向量数据。关键原则是避免修补向量数据,确保数据一致性。文章提供了详细代码示例,并强调事务处理与异常补偿机制的重要性。原创 2026-05-20 05:45:00 · 545 阅读 · 0 评论 -
Spring AI RAG 工程实践: 打破 Top-K 限制_跨向量聚合问题的 Text-to-SQL 解决方案
本文提出了一种解决RAG系统聚合查询限制的Text-to-SQL方案。针对向量检索Top-K机制无法处理统计类查询的问题,通过Spring AI Tool Calling让LLM自动识别聚合意图并调用SQL工具。核心实现包括:1)使用@Tool注解定义聚合查询工具;2)SuperSQL引擎将自然语言转换为SQL;3)LLM自主决策工具调用。相比Router方案,该方法减少了额外意图识别步骤,实现了向量检索与SQL查询的优势互补,有效解决了跨向量聚合难题。验证表明,系统能准确区分统计查询与普通问题,自动生成并原创 2026-05-19 06:15:00 · 673 阅读 · 0 评论 -
Spring AI RAG 工程实践:5种文档分块策略的选择与调优
本文系统梳理了RAG系统中五种主流文档分块策略及其适用场景。分块本质是信息密度与语义完整性的权衡,关键在于根据业务需求选择合适策略:固定大小分块适合通用场景,语义分块适合长文档,递归分块适合结构化文本,文档结构分块适合技术规范,LLM分块则适合高价值数据。文章特别介绍了TokenTextSplitter的默认配置(800 tokens/块)及重叠机制的重要性,并提供了参数调优建议。最后强调分块策略需结合数据类型和业务场景灵活选择,建议先采用默认参数跑通流程,再通过实际效果反馈持续优化。原创 2026-05-19 05:15:00 · 656 阅读 · 0 评论 -
Spring AI 实战:RAG 问答与检索增强生成的完整实现
本文介绍了基于Spring AI的RAG问答系统实现方案。系统采用Advisor链式架构,包含敏感词检测、对话记忆、向量检索等模块。核心流程包括:用户提问后,系统通过Milvus向量数据库检索相关文档片段,将结果注入Prompt模板,最终由大语言模型生成回答。关键技术点包括条件性RAG触发、元数据过滤检索、动态Prompt调整、多轮对话记忆和流式输出。文章详细拆解了ChatClient构建、检索增强逻辑和QuestionAnswerAdvisor内部原理,展示了如何通过Spring AI实现高效的知识库问答原创 2026-05-18 07:15:00 · 922 阅读 · 0 评论 -
Spring AI 实战:RAG 资料上传、分词与向量化全链路实现
本文介绍了基于Spring AI、Milvus和阿里云OSS的RAG系统文档入库全流程。系统通过多环节协同工作实现知识向量化:用户上传文件后,原件存储至OSS;使用Tika解析文档为纯文本,经TokenTextSplitter分块处理;调用Embedding模型生成向量并存入Milvus;最后在MySQL保存文件名、OSS URL与向量ID的映射关系。架构设计强调原件保留、ID映射和解耦存储三大原则,确保后续检索质量。技术栈包含Apache Tika文档解析、Milvus向量数据库和通义千问Embeddin原创 2026-05-18 05:30:00 · 747 阅读 · 0 评论 -
Spring AI RAG - 14 网络检索增强:Web Search 集成
本文介绍了RAG系统中网络检索增强的设计方案。系统通过三种知识来源(内部知识库、数据库和互联网)动态响应不同查询需求,重点解析了Web Search的两种集成方式:商业API(如Tavily)和自托管搜索引擎(SearXNG)。Tavily API提供结构化搜索结果,而SearXNG支持多引擎聚合搜索。文章详细说明了网络检索与RAG流程的三种整合模式(路由式、补充式、Tool式),并提供了SearchUtils工具类的源码解析,展示如何实现Tavily API调用。该系统设计灵活,可根据需求切换不同检索模式原创 2026-05-16 18:06:47 · 458 阅读 · 0 评论 -
Spring AI RAG - 13 防幻觉与召回率优化
摘要: 本文针对RAG系统中的"AI胡编"和"召回不全"问题,提出系统性优化方案。首先分析幻觉的两类根因:检索为空时的被迫编造和错误信息误导,对应解决方案分别为Prompt约束和召回质量提升。通过增强版RetrievalAugmentationAdvisor实现检索空值fallback、查询改写和元数据过滤;采用Rerank二次精排解决向量检索的精度不足问题;结合Prompt严格限定回答范围(如"未知则明示")。最终通过多阶段优化(粗召回→精排→LLM生成)平衡召回率与精准率,显著降低幻觉风险。源码示例展示原创 2026-05-17 07:30:00 · 635 阅读 · 0 评论 -
Spring AI RAG - 12 文档更新与全链路删除
本文介绍了知识库文档生命周期管理的设计方案,重点解决文档更新和删除时的数据一致性问题。核心思路包括: 文档更新采用"版本隔离"策略,通过删除旧版+上传新版实现,避免复杂的内容比对 删除操作采用"三层联动清理"机制,确保业务数据库、向量库和OSS存储同步清理 通过入库时记录向量ID(vector_id)建立数据关联,实现精准删除 采用事务+异步补偿机制保证删除操作的可靠性 技术实现上,系统在文档入库时记录所有chunk的向量ID,删除时通过反序列化这些ID实现精准清理,同时设计了完善的错误处理机制。该方案有效原创 2026-05-17 05:30:00 · 919 阅读 · 0 评论 -
Spring AI RAG - 11 Text-to-SQL 实现跨向量聚合
本文介绍了如何通过SuperSQL与Spring AI Tool实现Text-to-SQL功能,解决向量检索在统计类、计数类和范围类查询中的局限性。系统采用混合架构,当LLM识别到聚合查询时自动调用RagTool工具,通过SuperSQL将自然语言转换为SQL并执行查询。SuperSQL封装了数据库schema训练、SQL生成和执行流程,通过Spring AI的@Tool机制实现无缝集成。该方法避免了额外LLM调用,直接利用结构化数据完成聚合运算,显著提升了复杂查询的处理能力。原创 2026-05-16 17:37:36 · 686 阅读 · 0 评论 -
Spring AI RAG - 10 来源追溯:自定义 Advisor 实现
本文介绍了在企业级RAG系统中实现AI回答来源追溯的方案。针对默认QuestionAnswerAdvisor无法提供文档来源的问题,提出通过自定义MetadataAwareAdvisor在检索后重新拼接Prompt的方案。该方案利用Spring AI的Advisor优先级机制(Integer.MAX_VALUE-1),在检索完成后将文档文本与元数据(如文件名)拼接,使AI能准确引用来源。文章详细解析了Advisor间的通信机制、Document元数据处理以及完整的MetadataAwareQuestionA原创 2026-05-16 16:45:00 · 377 阅读 · 0 评论 -
Spring AI RAG - 09 AI 绘图 ImageModel 集成
本文介绍了基于Spring AI的AI绘图功能实现方案。通过ImageModel抽象层统一接入不同厂商的图像生成API,后端采用代理下载模式将临时URL转换为图片字节流返回。文章详细解析了从Prompt到图片的端到端流程,包括Spring AI的Image抽象设计、DashScope图像模型自动装配、DrawImageController实现代码,以及前端集成方式。该方案具有接口统一、隐藏实现细节、便于扩展优化等特点,支持同步和异步两种调用方式,生成一张1024×1024图片耗时约5-15秒。未来可进一步优原创 2026-05-16 15:45:00 · 326 阅读 · 0 评论 -
Spring AI RAG - 08 JWT 认证与用户体系设计
本文介绍了基于JWT的无状态认证方案在RAG知识库系统中的应用。通过对比传统Session方案的不足,阐述了JWT在分布式系统中的优势:无状态、跨域友好、自包含和签名校验。详细拆解了认证流程,包括登录签发Token、拦截器校验、ThreadLocal上下文传递等核心环节。重点分析了JWT的三段式结构、配置驱动的密钥管理,以及工具类JwtUtil的实现原理。同时展示了登录接口如何生成Token,以及UserService的密码验证逻辑。该方案通过ThreadLocal实现用户信息传递,使业务代码无需感知HTT原创 2026-05-16 11:31:05 · 401 阅读 · 0 评论 -
Spring AI RAG - 07 AOP 日志记录与热词统计
本文介绍了一种基于AOP和定时任务的知识库系统热词分析方案。通过自定义@Loggable注解和切面自动收集对话日志,利用IK Analyzer中文分词器对日志进行定时分析,实现了热词统计功能。该设计采用非侵入式日志采集与离线处理方式,避免了实时分词对系统性能的影响,同时通过Redis缓存优化查询性能。方案包含完整的实现链路:从注解定义、切面日志采集、定时分词任务到热词数据展示,为知识库系统的运营优化提供了数据支持。原创 2026-05-16 11:02:48 · 419 阅读 · 0 评论 -
Spring AI RAG - 06 敏感词过滤与内容安全防护
摘要: 本文探讨了大模型业务中敏感词过滤的设计与实现。通过前置拦截、多层防护策略(用户输入过滤+模型安全机制+后置审核),有效降低合规风险。系统采用分类分级管理,支持敏感词CRUD操作,并通过朴素字符串匹配实现高效拦截。核心方案包含表结构设计、实体类定义及基于MyBatis-Plus的接口实现,适用于中小规模词库,兼顾开发效率与业务需求。源码展示了敏感词管理、分类控制及对话链路中的实时拦截逻辑,为内容安全提供基础保障。原创 2026-05-16 10:44:22 · 555 阅读 · 0 评论 -
Spring AI RAG - 05 RAG 检索阶段与 QuestionAnswerAdvisor
本文深入解析了Spring AI中QuestionAnswerAdvisor的工作原理及其在RAG(检索增强生成)中的应用。文章首先指出RAG的关键在于高效检索,随后详细介绍了QuestionAnswerAdvisor的设计优势,包括解耦业务逻辑、支持多Advisor叠加等。核心部分阐述了QuestionAnswerAdvisor的工作流程、默认Prompt模板以及SearchRequest的关键参数设置,如相似度阈值、召回数量和元数据过滤。最后通过两个版本(v1.0基础版和v2.0支持来源过滤)的代码示例原创 2026-05-16 08:00:00 · 840 阅读 · 0 评论 -
Spring AI RAG - 04 RAG 文档上传与向量化入库全流程
本文介绍了RAG系统中知识入库管线的设计与实现。系统采用五阶段流程:文件上传OSS、文档解析、文本分块、向量化入库和元数据记录。关键技术选型包括:使用Tika统一解析多种文档格式,采用TokenTextSplitter按token数分块保持语义完整,通过Milvus向量库存储语义向量,并记录分片ID以便精准管理。系统基于Spring AI框架,将文档抽象为统一结构,自动调用阿里DashScope模型完成向量化。文章详细阐述了设计决策、原理方案和核心代码实现,为构建高效RAG系统提供了工程实践参考。原创 2026-05-16 06:15:00 · 1117 阅读 · 0 评论 -
Spring AI RAG - 03对话记忆 ChatMemory 实现多轮会话
摘要: Spring AI的ChatMemory机制通过存储历史对话实现多轮交互,解决大模型无状态问题。核心设计包括ChatMemory接口(存储/检索消息)和MemoryAdvisor(自动注入历史消息),支持内存、JDBC或Redis存储。通过conversationId实现用户隔离,确保对话独立。提供PromptChatMemoryAdvisor(文本拼接)和MessageChatMemoryAdvisor(原生消息格式)两种注入方式,适配不同模型需求。代码示例展示了如何集成Advisor、使用Thr原创 2026-05-16 05:30:00 · 579 阅读 · 0 评论 -
Spring AI RAG -02 ChatClient 基础对话与流式输出
本文介绍了Spring AI中ChatClient的设计与实现,重点解析了其作为高层抽象相较于直接调用ChatModel的优势。ChatClient通过Fluent API设计、Advisor机制、默认配置和流式支持等特性,为开发者提供了更便捷的大模型交互方式。文章详细展示了ChatClient的两种构建模式,并深入分析了流式输出与SSE的实现原理。通过代码示例演示了如何在实际应用中集成敏感词过滤、用户隔离等功能,同时支持动态System Prompt以实现AI角色灵活切换。整体呈现了Spring AI如何原创 2026-05-15 06:00:00 · 524 阅读 · 0 评论 -
Spring AI RAG -01 知识库系统架构全解——系列总览
本文介绍了一个基于Spring Boot和Spring AI的企业级RAG知识库系统设计与实现。系统采用前后端分离架构,后端使用Spring Boot 3.4.2和Spring AI 1.0.0 GA,前端采用Vue 3技术栈。核心功能包括基础对话、文档向量化、检索增强、对话记忆等完整链路,并整合了Milvus向量数据库、MySQL、Redis等技术组件。文章详细阐述了系统架构、核心模块划分、技术选型以及数据库设计,并预告了后续系列文章将深入讲解各功能模块的实现细节。该系统有效解决了大模型的知识截止和幻觉问原创 2026-05-15 05:15:00 · 673 阅读 · 0 评论
分享