RAG 开发入门(一):从关键词检索到 Agentic RAG
RAGRetrieval-Augmented Generation检索增强生成做的事情很直接模型回答之前先从外部资料里检索相关内容再把这些内容放进本次对话的上下文让模型基于资料回答。它主要补的是模型参数里没有的知识。公司制度、接口文档、业务规则、产品手册、故障记录这些东西不一定在模型训练数据里。RAG 把回答锚定到外部资料上可以减少模型在没有依据时凭空猜答案的概率。它不是把知识永久写进模型参数也不是单纯上一个向量数据库。文档切块、Embedding、向量库、相似度搜索都是常见实现方式但不是 RAG 的全部。用 Java 后端的视角看RAG 更像是在搜索服务和问答接口之间加了一层上下文组装逻辑。先检索再整理检索结果控制长度、来源和引用最后调用模型生成答案。这篇先不写代码先把 RAG 这条链路的变化讲清楚。从关键词检索到向量检索从文档预处理到多模态资料从固定流程到 Agent 自主检索变化看起来很多落到工程上都是同一个问题怎么把更合适的上下文找出来。在大模型之前搜索系统的主角是倒排索引、TF-IDF、BM25 这一套。Java 开发者对它们并不陌生Elasticsearch、Solr、Lucene 背后都是这条路线。倒排索引解决的是“词在哪些文档里出现过”。用户输入关键词系统找到包含这些词的文档再根据词频、逆文档频率、字段权重、文档长度这些信号排序。BM25 之所以长期好用是因为它非常适合处理明确的词面匹配。比如用户搜索NullPointerException、OrderService、ERR_10027、退款失败关键词检索通常很可靠。错误码、类名、接口名、产品术语、法规条文编号这些东西本来就应该精确匹配。它的问题也明显用户不一定会用文档里的原词。文档里写的是“费用报销审批流程”用户问的是“出差回来钱怎么报”。文档里写的是“账号冻结”用户问的是“为什么登录不了”。词没对上传统检索就可能漏掉。哪怕文档里有答案搜索系统也不一定找得到。所以在大模型时代之前搜索系统已经有很多补丁同义词词典、分词词库、query rewrite、人工运营的搜索规则、学习排序。这些都在试图弥补一个问题关键词检索不理解语义它只是在匹配词。向量检索补上语义召回Embedding 的出现把检索从“词面匹配”推到了“语义相近”。一个 Embedding 模型会把文本转成一串数字也就是向量。两个句子的意思越接近它们在向量空间里的距离通常越近。这样用户问“出差回来钱怎么报”系统也有机会召回“费用报销审批流程”这类文档。2020 年前后Dense Passage Retrieval 和 RAG 这些工作把这条路线推到了开放域问答里。DPR 证明了用稠密向量做段落召回可以在很多问答数据集上超过强 BM25 基线。RAG 则把检索器和生成模型组合起来让模型在生成答案前先拿到外部知识。这就是今天很多人理解的 RAG文档切块向量化召回生成。但这里有个很容易被忽略的点向量不是原文它是压缩后的语义表示。压缩就会丢信息。对自然语言问题向量检索很有用。对代码符号、错误码、版本号、配置项、表字段、枚举值它未必稳定。userId和accountId在语义上可能很接近但在系统里完全不是一回事。S3、S4、P0、P1这种短词在向量空间里也经常不如关键词可靠。所以向量检索不是关键词检索的升级替代而是另一种召回信号。它补上了“同一个意思不同说法”的问题但没有解决所有检索问题。向量化之后关键词又回来了这几年 RAG 走过一个有意思的弯路。早期大家觉得关键词检索太旧向量检索才是未来。后来做了很多真实系统才发现纯向量检索并不稳。它擅长语义相近不擅长精确约束。技术文档、代码仓库、客服知识库、法律条文、企业制度里恰好有大量必须精确匹配的词。于是关键词又回来了只是这次不再是单独回来而是和向量一起回来。现在更常见的做法是混合检索BM25 召回一批向量召回一批再用 RRF、加权融合或 rerank 模型把结果排起来。关键词负责抓住精确术语向量负责补上语义表达重排负责在候选结果里做更细的相关性判断。这不是技术倒退而是工程系统承认了一个事实检索没有一条路线能覆盖所有问题。对 Java 开发者来说不要一上来就把 Elasticsearch 扔掉也不要以为上了向量库就自动有了知识库问答能力。很多时候最稳的第一版方案反而是保留现有搜索能力在旁边加向量召回和重排再用日志和评测决定比例怎么调。文档预处理和工程链路决定 RAG 质量很多 RAG 项目最容易低估的环节是文档预处理。表面看预处理只是把文件读出来切成一段一段再送去 Embedding。真实系统里这一步经常决定后面的检索有没有意义。先看解析。PDF 可能有页眉页脚、脚注、水印、双栏排版和扫描页。Word 里可能有批注、表格、目录和修订痕迹。网页里可能混着导航、广告和无关推荐。接口文档里可能有请求参数、响应字段、错误码和代码块。如果解析阶段把这些结构打散后面再好的向量模型也只能处理一堆碎片。再看切块。按固定字符数切最简单但很容易把一个完整语义拆断。一个接口说明被拆成两块前一块只有字段名后一块只有字段含义检索时就会两边都不完整。技术文档更明显标题、正文、代码块、表格、图片说明经常要作为一个整体处理。还有元数据。文档属于哪个系统、哪个版本、哪个租户、哪个权限范围、哪个发布时间这些信息不能只放在正文里。它们应该成为索引字段用来过滤和引用。否则用户问 2026 年新版流程系统可能把 2024 年旧制度拿出来用户没有某个业务线权限系统也可能召回不该看的资料。所以预处理不是 RAG 的准备工作而是 RAG 的一部分。文档解析、结构保留、切块策略、元数据抽取、权限绑定、去重和版本管理都会影响召回质量。资料处理完之后还要进入完整的 RAG 工程链路。文档块会进入关键词索引、向量索引或多模态索引。用户提问之后系统也不一定直接拿原问题去搜很多场景会先做 query rewrite把口语问题改写成更适合检索的查询也可能拆成多个子问题分别检索。召回之后还要重排把最可能有用的内容放前面。重排之后才是上下文打包。模型上下文窗口有限系统要决定哪些片段能进 prompt哪些片段只能丢掉还要控制来源、引用、权限和版本。生成之后也没结束一个可上线的 RAG 系统还要处理兜底、评测和日志。用户问了什么系统搜到了什么模型用了哪几段答案有没有引用来源这些都要能追踪。如果把它翻译成 Java 后端架构大概会拆成几层文档摄取服务、索引服务、检索服务、重排服务、上下文组装服务、模型调用服务、评测和观测。向量数据库只是其中一块不是整个系统。这几年常被提到的 GraphRAG也可以放在这条工程链路里理解。它不是简单把向量库换成图库而是先从资料里抽取实体和关系再用图结构、社区摘要和局部邻居检索来回答更全局的问题。它适合“这批资料主要在讲什么”“这些事件之间有什么关系”这类问题但它同样要付出索引成本和维护成本。多模态让资料不再只是文本最早的 RAG 主要处理文本。但企业里的知识不只在文本里。很多信息藏在图片、截图、表格、扫描件、流程图、PPT、监控图、架构图里。只把 PDF 里的文字抽出来往往会丢掉版式和视觉关系。比如一个产品手册里的按钮截图、一个报表里的列关系、一个架构图里的箭头方向只靠纯文本很难表达清楚。CLIP 这类图文对齐模型把图片和文本放进同一个语义空间后来更多多模态 Embedding 模型继续扩展这条路线。它们让系统可以用文本搜图片也可以把图片、页面截图、文档块放进同一套检索链路。这一步的意义不是“图片也能向量化”这么简单而是 RAG 的资料边界变宽了。以前 RAG 默认处理的是文档段落。多模态之后一个可检索的知识单元可能是一段文字、一张截图、一块表格、一个页面区域甚至是一段视频里的关键帧。对做企业知识库、客服助手、运维助手、代码助手的人来说这会直接影响文档解析和切块策略。不过多模态也没有让问题消失。图片里的文字要不要 OCR表格要不要结构化截图和说明文字怎么绑定召回后怎么引用来源这些都还是工程问题。模型能力变强了系统设计反而更不能偷懒。Workflow RAG 可控但上限有限很多生产系统会先做 Workflow RAG因为它容易上线。Workflow RAG 的特点是流程固定。用户提问进来系统按预设步骤执行识别意图改写查询选择知识库做关键词和向量召回重排组装上下文调用模型生成答案校验引用返回结果。这种方式的优势是可控。每一步出了问题都能定位是问题改写错了还是召回错了是重排没排上来还是上下文打包丢了关键段落是检索没问题但模型胡答还是模型答案对但引用不完整。对 Java 团队来说Workflow RAG 也更像熟悉的后端系统。每一步都是一个服务或一个组件有明确输入输出可以打日志可以做压测可以加缓存也可以单独写测试。但我现在不太看好它的长期上限。固定流程适合标准问答问题一旦变成跨系统、跨资料、多轮追查Workflow 就会不断膨胀。你会继续加意图识别加分支加规则加兜底最后把一个检索系统写成复杂的流程编排。Workflow RAG 仍然适合做基线。它能让团队先把文档、索引、召回、重排和引用这些基础能力跑通。但如果目标是让系统处理开放问题而不是回答固定 FAQ它很难成为最终形态。Agentic RAG 是给 Agent 一个检索工具Agentic RAG 离不开 Agent 本身。这里不需要先展开 Agent 框架可以先把 Agent 当成一个黑盒它拿到任务能调用工具能观察工具返回结果再决定下一步做什么。从这个视角看Agentic RAG 的本质很简单给 Agent 一个检索工具。这个工具可以叫searchKnowledgeBase也可以叫searchDocs。输入就是一组关键词输出是一批带来源的候选片段。Agent 不需要知道底层是 BM25、向量库、混合检索还是 rerank它只需要知道我可以查资料。区别在于关键词不再完全由用户输入决定也不再完全由工作流提前规定。Agent 会根据任务自己生成多个检索词先查一轮看结果够不够再继续换词、补词、缩小范围或扩大范围。比如用户问“为什么这个订单退款失败用户又收到了两次通知”固定 RAG 可能只会去知识库里搜退款失败。Agentic RAG 会更像一个排查过程。它可能先搜“退款失败”发现结果只解释了业务状态接着搜“退款通知发送规则”再搜“订单状态回调”和“通知幂等”如果工具允许它还可以查接口文档或日志查询工具。每次检索都会改变下一次检索关键词。这也是为什么向量化之后关键词又变重要了。Agent 生成的很多查询不是自然语言问题而是一组更适合检索系统的关键词错误码、状态名、接口名、字段名、业务动作、同义表达。RAG 不再只是“用户问题向量化后搜一下”而是 Agent 在执行过程中持续产生检索查询。这类能力对复杂问题有价值尤其是问题本身需要多跳推理、跨系统定位、动态选择工具的时候。它也带来明显成本调用次数增加延迟变高调试更难失败路径更多。Agentic RAG 不是更省事而是把固定流程里的分支判断挪到了 Agent 的循环里。Java 开发者先抓四层如果暂时不写代码Java 开发者理解 RAG 可以先抓四层。第一层是文档层。它负责把资料变成可检索的知识单元。这里包括解析、清洗、结构保留、切块、元数据、权限、去重和版本管理。第二层是检索层。它负责把候选上下文找出来。这里不只包括向量库也包括 BM25、过滤条件、权限、query rewrite、rerank 和混合检索。第三层是 Agent 和生成层。普通 RAG 里它负责把检索结果变成模型上下文再生成答案。Agentic RAG 里它还负责决定什么时候检索、用什么关键词检索、是否继续检索、什么时候停止。第四层是评测层。它负责回答一个很实际的问题系统答错时到底是文档没处理好没搜到搜到了没排上来排上来了没塞进 prompt还是模型拿到了证据也答错了。很多 RAG 项目做不下去不是因为向量库选错了而是因为没有评测层。没有评测就只能凭感觉调解析规则、chunk size、topK、相似度阈值和 prompt。调到最后线上一换问题集又坏了。后续写代码时我们也会按这个顺序来先讲文档预处理再手写一个最小可跑的 RAG然后补 Embedding、向量库、混合检索、重排和评测。Agentic RAG 放在后面但不是因为它不重要而是因为它依赖前面的检索工具足够可靠。先别急着选框架Java 生态里已经有不少 AI 框架比如 Spring AI、LangChain4j、AgentScope Java。它们都能帮你少写很多胶水代码。但在学 RAG 的第一阶段我不建议直接从框架开始。框架会把很多关键细节藏起来文档怎么切向量怎么存topK 怎么取检索结果怎么进 prompt模型为什么会引用错来源。你如果还没看过这些底层链路遇到问题时很容易只会改配置。更好的路径是先手写一版。代码不用复杂只要能把一篇 Markdown 文档预处理、切块、向量化、存储、召回、塞给模型回答就够了。跑通之后再引入框架你会知道框架到底帮你省了什么也知道它的抽象边界在哪里。这篇先把路线讲清楚。下一篇先讲文档预处理把文件怎么变成可检索的知识单元讲清楚然后再进入 Java 最小 RAG。这里给大家精心整理了一份全面的AI大模型学习资源包括AI大模型全套学习路线图从入门到实战、精品AI大模型学习书籍手册、视频教程、实战学习、面试题等资料免费分享扫码免费领取全部内容1. 成长路线图学习规划要学习一门新的技术作为新手一定要先学习成长路线图方向不对努力白费。这里我们为新手和想要进一步提升的专业人士准备了一份详细的学习成长路线图和规划。可以说是最科学最系统的学习成长路线。2. 大模型经典PDF书籍书籍和学习文档资料是学习大模型过程中必不可少的我们精选了一系列深入探讨大模型技术的书籍和学习文档它们由领域内的顶尖专家撰写内容全面、深入、详尽为你学习大模型提供坚实的理论基础。书籍含电子版PDF3. 大模型视频教程对于很多自学或者没有基础的同学来说书籍这些纯文字类的学习教材会觉得比较晦涩难以理解因此我们提供了丰富的大模型视频教程以动态、形象的方式展示技术概念帮助你更快、更轻松地掌握核心知识。4. 2026行业报告行业分析主要包括对不同行业的现状、趋势、问题、机会等进行系统地调研和评估以了解哪些行业更适合引入大模型的技术和应用以及在哪些方面可以发挥大模型的优势。5. 大模型项目实战学以致用当你的理论知识积累到一定程度就需要通过项目实战在实际操作中检验和巩固你所学到的知识同时为你找工作和职业发展打下坚实的基础。6. 大模型面试题面试不仅是技术的较量更需要充分的准备。在你已经掌握了大模型技术之后就需要开始准备面试我们将提供精心整理的大模型面试题库涵盖当前面试中可能遇到的各种技术问题让你在面试中游刃有余。7. 资料领取全套内容免费抱走学 AI 不用再找第二份不管你是 0 基础想入门 AI 大模型还是有基础想冲刺大厂、了解行业趋势这份资料都能满足你现在只需按照提示操作就能免费领取扫码免费领取全部内容