
title: 【RAG 4.0】从VectorRAG到GraphRAG到Agentic RAGSpring AI Neo4j三代演进与工程化实战 description: RAG正在经历第四次范式跃迁。本文用完整代码带你走完VectorRAG → GraphRAG → Agentic RAG三代演进路线给出基于Spring AI 2.0 Neo4j的工程化落地方案含选型决策框架。 tags: [RAG, Agentic RAG, Spring AI, Neo4j, GraphRAG, 大模型]【RAG 4.0】从VectorRAG到GraphRAG到Agentic RAGSpring AI Neo4j三代演进与工程化实战大模型工程师修炼手记系列文章 | 2026年7月RAG检索增强生成正在经历第四次范式跃迁——从无脑检索到智能体自主决策。本文用3000字和完整代码带你走完 VectorRAG → GraphRAG → Agentic RAG 的三代演进路线并给出基于 Spring AI 2.0 Neo4j 的工程化落地方案。一、为什么需要RAG的三代演进2026年大模型的幻觉问题依然没有从根本上解决。无论你用 GPT-5.6 还是 DeepSeek-R1当面对企业内部私有知识、实时业务数据、复杂关系推理时纯靠模型参数里的记忆是远远不够的。RAG 作为外挂大脑的核心技术经历了三代的快速演进维度VectorRAG第一代GraphRAG第二代Agentic RAG第三代核心思想向量化 → 相似度检索实体关系抽取 → 知识图谱 → 图遍历Agent自主决策检索策略检索方式Embedding Top-K图遍历 向量混合检索动态路由 多源召回 迭代细化决策能力无——固定流程静态图结构查询自主规划、反思、工具调用多步推理不支持支持图多跳推理支持多步分解 多轮召回典型局限语义理解差、碎片化图构建成本高架构复杂度高适用场景FAQ、知识库检索复杂关系推理、企业知识网络复杂工作流、多数据源整合一句话总结三代关系的本质VectorRAG解决了找得到的问题——通过向量相似度把相关文档找出来GraphRAG解决了找得准的问题——通过实体关系把碎片化知识连接起来Agentic RAG解决了找得对的问题——让Agent自己判断该不该找、去哪找、够不够、要不要再找二、VectorRAG最基础也最容易出问题的方案VectorRAG 是大多数团队的第一选择也是最容易被忽视坑的方案。2.1 核心流程用户查询 → Embedding向量化 → 向量数据库Top-K检索 → 拼接上下文 → LLM生成答案2.2 Spring AI 中的基础实现Spring AI 2.0 提供了QuestionAnswerAdvisor来实现最基础的 RAG 检索增强Component public class BasicRagService { private final ChatClient chatClient; public BasicRagService(ChatClient.Builder builder, VectorStore vectorStore) { this.chatClient builder .defaultSystem(你是一个企业知识助手基于检索到的上下文回答问题。) .build(); } public String query(String question) { return chatClient.prompt() .user(question) .advisors( QuestionAnswerAdvisor.builder(vectorStore) .searchRequest(SearchRequest.builder() .query(question) .topK(5) .similarityThreshold(0.3) .build()) .build() ) .call() .content(); } }2.3 VectorRAG的三大痛点痛点一语义对齐偏差用户问退款需要多久但知识库文档里写的是资金返还周期为3-5个工作日。单纯的向量相似度检索可能匹配不到。痛点二知识碎片化一段完整的政策文档被切成1000字符的chunk关系链断裂。用户问A服务和B服务有什么区别两个chunk分散在向量空间两端Top-K检索可能只召回到其中一个。痛点三无法处理否定/复杂逻辑用户问以下哪些情况不支持退改VectorRAG无法理解否定逻辑可能返回支持退改的文档。三、GraphRAG用知识图谱连接碎片化知识GraphRAG 的核心突破在于不再只把文档切碎存储而是先从文档中抽取实体和关系构建知识图谱让知识之间有连线。3.1 核心流程文档 → LLM实体关系抽取 → 知识图谱Neo4j → 图遍历 向量检索 → LLM生成答案3.2 Spring AI Neo4j 实现知识图谱构建首先定义图谱的节点和关系模型Data Builder NoArgsConstructor AllArgsConstructor Node(KgEntity) public class KgEntityNode { Id GeneratedValue private Long id; private String entityId; // 业务唯一标识UUID private String name; // 实体名称 private String type; // 实体类型服务、流程、规则、费用等 private String description; // 实体描述 private Long knowledgeId; // 来源知识库ID Relationship(type RELATED_TO, direction Relationship.Direction.OUTGOING) private ListKgRelationship relationships; } Data Builder NoArgsConstructor AllArgsConstructor RelationshipProperties public class KgRelationship { Id GeneratedValue private Long id; private String relationType; // 包含、属于、前置步骤、适用于等 private String description; TargetNode private KgEntityNode target; }利用 LLM 自动从文档中抽取实体和关系——这是 GraphRAG 的核心环节Service public class KgExtractionService { private final ChatClient chatClient; private static final String EXTRACTION_PROMPT 你是一个知识图谱构建专家。请从文本中抽取实体和关系以JSON格式输出。 ## 抽取规则 1. 实体类型包括服务、流程、规则、费用、商品、角色、时间、地点 2. 关系类型包括包含、属于、前置步骤、适用于、限制、触发 3. 只抽取文本中明确表达的关系不要推测 4. 实体名称2-8个字为宜 ## 输出格式 { entities: [{name: 实体名称, type: 实体类型, description: 描述}], relationships: [{source: 源实体, target: 目标实体, relation: 关系类型}] } ; public KgExtractionResult extract(String content) { String response chatClient.prompt() .system(EXTRACTION_PROMPT) .user(content) .call() .content(); // JSON解析需处理LLM输出格式不稳定问题 return parseJson(response); } }3.3 Neo4j 部署与配置docker run -d \ --name neo4j \ -p 7474:7474 -p 7687:7687 \ -e NEO4J_AUTHneo4j/password \ neo4j:5.15.0spring: neo4j: uri: bolt://localhost:7687 authentication: username: neo4j password: password3.4 GraphRAG 的局限GraphRAG 解决了关系推理和知识碎片化问题但它有一个致命的局限——检索策略仍然是静态的。无论用户问题简单还是复杂系统都执行相同的图遍历逻辑。对于需要先查A系统再查B系统最后综合判断这类动态场景GraphRAG显得力不从心。四、Agentic RAG让Agent自主决策检索策略Agentic RAG 是 2026 年 RAG 领域最热的方向它的核心突破在于引入了 AI Agent 的自主决策能力将检索-生成线性流程升级为感知-决策-执行闭环。4.1 Agentic RAG 的四大核心能力核心能力说明典型实现反思ReflectionAgent评估自己的输出识别不足并迭代优化Answer Critic 评判器规划Planning将复杂问题拆解为多步子任务Query Router 路由器工具使用Tool Use调用外部检索器、API、数据库多Retriever Agent多Agent协作多个Agent分工协作共享信息Router Retriever Judge4.2 完整架构设计一个生产级 Agentic RAG 系统通常包含三层核心组件┌─────────────────┐ │ Query Router │ ← 接收问题路由到合适的检索器 └────────┬────────┘ │ ┌──────────────┼──────────────┐ ▼ ▼ ▼ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │ Vector Store │ │ Graph Traversal│ │ Web/API │ ← 多个Retriever Agent │ Retriever │ │ Retriever │ │ Retriever │ └──────┬───────┘ └──────┬───────┘ └──────┬───────┘ │ │ │ └──────────────┼──────────────┘ ▼ ┌─────────────────┐ │ Answer Critic │ ← 评判答案完整性决定是否继续检索 │ (Judge Agent) │ └─────────────────┘4.3 Spring AI 2.0 实现 Agentic RAGSpring AI 2.0 的Advisor机制和ToolCallingAdvisor天然适配 Agentic RAG 的架构Configuration public class AgenticRagConfig { // 检索工具定义 Component public class RagRetrieverTools { private final VectorStore vectorStore; private final Neo4jTemplate neo4jTemplate; private final ChatClient chatClient; Tool(description 通过向量相似度搜索知识库文档。适用于事实性问答、概念解释类问题) public String vectorSearch( ToolParam(description 用户问题) String query, ToolParam(description 返回文档数量默认5) int topK) { var results vectorStore.similaritySearch( SearchRequest.builder() .query(query) .topK(topK) .build()); return results.stream() .map(doc - 【 doc.getMetadata().get(source) 】 doc.getContent()) .collect(Collectors.joining(\n\n)); } Tool(description 通过知识图谱关系遍历查找关联实体。适用于A和B有什么关系、影响X的因素有哪些等问题) public String graphSearch( ToolParam(description 起始实体名称) String entityName, ToolParam(description 关系类型如包含、适用于、属于) String relationType, ToolParam(description 遍历深度默认2) int depth) { String cypher MATCH (a:KgEntity {name: $name})-[*1..%d]-(b:KgEntity) RETURN b.name, b.type, b.description LIMIT 10 .formatted(depth); var result neo4jTemplate.findAll(cypher, Map.of(name, entityName)); return result.stream() .map(node - node.get(b.name) [ node.get(b.type) ]: node.get(b.description)) .collect(Collectors.joining(\n)); } Tool(description 直接回答问题。当已有对话上下文中的信息足以完整回答问题时使用此工具无需再检索) public String directAnswer( ToolParam(description 从现有对话上下文总结出的直接答案) String answer) { return answer; } } // Agentic RAG 核心服务 Service public class AgenticRagService { private final ChatClient chatClient; public AgenticRagService(ChatClient.Builder builder, RagRetrieverTools tools) { this.chatClient builder .defaultSystem( 你是一个智能知识检索助手。对于每个用户问题你需要 1. 分析问题类型选择最合适的检索工具 2. 如果问题涉及实体间的关系优先使用 graphSearch 3. 如果是简单的事实问答使用 vectorSearch 4. 如果已有上下文信息足够回答使用 directAnswer 5. 检索后评估答案完整性如有必要进行二次检索 ) .defaultTools(tools) .build(); } public String query(String question) { return chatClient.prompt() .user(question) .call() .content(); } } }4.4 高级模式带评判器的迭代式 Agentic RAG对于高准确性要求的场景金融、法律、医疗可以在外层增加一个Answer Critic评判器形成迭代检索闭环Service public class IterativeAgenticRagService { private final ChatClient retrieverClient; // 检索Agent private final ChatClient judgeClient; // 评判Agent private static final int MAX_ITERATIONS 3; public String queryWithCritique(String question) { String conversationHistory ; for (int i 0; i MAX_ITERATIONS; i) { // 第一步检索Agent获取答案 String draftAnswer retrieverClient.prompt() .user(conversationHistory \n用户问题 question) .call() .content(); conversationHistory \n检索结果 draftAnswer; // 第二步评判Agent评估答案完整性 String critique judgeClient.prompt() .system( 你是答案评判器。判断检索到的信息是否足以完整回答用户问题。 如果信息充分输出{complete: true, answer: 最终答案} 如果信息不足输出{complete: false, missing: 缺失的关键信息, followup: 补充检索建议} ) .user(原始问题 question \n已检索信息 draftAnswer) .call() .content(); if (critique.contains(\complete\: true)) { return extractFinalAnswer(critique); } // 信息不足将缺失信息作为补充查询 conversationHistory \n评判反馈 critique; } return retrieverClient.prompt() .user(conversationHistory \n请基于以上所有检索结果给出最终综合答案。) .call() .content(); } }4.5 Spring AI 2.0 的 RetrievalAugmentationAdvisorSpring AI 2.0 还提供了RetrievalAugmentationAdvisor支持在 Advisor 链中配置更复杂的 RAG 流水线Advisor ragAdvisor RetrievalAugmentationAdvisor.builder() // 文档检索器 .documentRetriever(VectorStoreDocumentRetriever.builder() .similarityThreshold(0.50) .vectorStore(vectorStore) .build()) // 查询重写——让口语化问题变成更适合检索的表述 .queryTransformers( RewriteQueryTransformer.builder() .chatClientBuilder(ChatClient.builder(chatModel)) .build() ) // 空结果时的兜底策略 .queryAugmenter(ContextualQueryAugmenter.builder() .allowEmptyContext(false) .emptyContextPromptTemplate(PromptTemplate.builder() .template(知识库中未找到相关信息请基于你的通用知识回答并注明信息来源为AI推断。) .build()) .build()) .build(); // 组合多个Advisor形成完整的Agentic链 ChatClient agenticClient chatClientBuilder .defaultAdvisors( new SimpleLoggerAdvisor(), // 日志 new MessageChatMemoryAdvisor(chatMemory), // 记忆 ragAdvisor, // RAG检索增强 new ToolCallingAdvisor(toolCallbacks) // 工具调用 ) .build();五、三代RAG选型决策框架不是所有场景都需要 Agentic RAG。根据成本和复杂度的不同以下是选型建议场景特征推荐方案理由内部FAQ、简单知识问答VectorRAG成本最低、开发快、维护简单金融/法律等关系密集场景GraphRAG需要多跳关系推理图谱能力是刚需查询类型多样化、需动态路由Adaptive RAG查询分类器决定检索策略多数据源整合、复杂工作流Agentic RAGAgent自主编排多源检索高准确性医疗/金融风控Agentic RAG Critic迭代检索 评判确保准确性多模态数据图文表格Multimodal RAG统一处理文本、图像、表格决策树你的场景是 ├── 简单问答/FAQ → VectorRAG快速上线 ├── 需要关系推理 │ ├── 是但场景单一 → GraphRAG │ └── 是且需要动态决策 → Agentic RAG ├── 多数据源/API调用 │ ├── 是 → Agentic RAG │ └── 否 → VectorRAG 或 GraphRAG └── 对准确性要求极高 └── 是 → Agentic RAG Answer Critic 迭代模式六、Spring AI 2.0 RAG 技术栈全景图基于 Spring AI 2.0 构建三代 RAG 系统的完整技术栈技术组件VectorRAGGraphRAGAgentic RAG向量数据库PGVector / Milvus / QdrantNeo4j兼做向量存储同左图数据库不需要Neo4j 5.xNeo4j Neo4jVectorStoreAI框架Spring AI 2.0Spring AI 2.0 Spring Data Neo4jSpring AI 2.0核心APIQuestionAnswerAdvisor自定义 Cypher VectorStoreToolCallingAdvisor 自定义 Tools查询增强无无RewriteQueryTransformer记忆管理MessageChatMemoryAdvisor同左分层记忆 可检索知识库工具调用不需要不需要Tool 注解 ToolCallingAdvisorMCP集成可选可选spring-ai-starter-mcp-clientMaven 依赖dependencyManagement dependencies dependency groupIdorg.springframework.ai/groupId artifactIdspring-ai-bom/artifactId version2.0.0/version typepom/type scopeimport/scope /dependency /dependencies /dependencyManagement dependencies !-- Spring AI 模型以 OpenAI 兼容接口为例 -- dependency groupIdorg.springframework.ai/groupId artifactIdspring-ai-starter-model-openai/artifactId /dependency !-- 向量存储 -- dependency groupIdorg.springframework.ai/groupId artifactIdspring-ai-starter-vector-store-pgvector/artifactId /dependency !-- Neo4j 图数据库GraphRAG/Agentic RAG需要 -- dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-data-neo4j/artifactId /dependency !-- MCP 客户端可选接入外部工具 -- dependency groupIdorg.springframework.ai/groupId artifactIdspring-ai-starter-mcp-client/artifactId /dependency /dependencies七、2026年RAG技术趋势展望7.1 RAG 4.0Agentic LLM Native RAG SDK2026年RAG已演进到第四代——Agentic LLM Native RAG提供 Java/Go/NodeJS/Python SDK 绑定和命令行模式可被 Cursor、Claude Code 等 Code Agent 直接调用。这是 RAG 从应用架构走向基础设施的重要一步。7.2 Vectorless RAG一个新的探索方向是 Vectorless RAG——完全抛弃向量数据库让 LLM 直接对文档结构进行推理。与 GraphRAG 形成两种解决传统 RAG 局限的不同路径。7.3 企业级关键挑战敏感数据过滤知识库中包含不同密级的信息Agent 如何自主判断可检索范围知识版本管理业务规则频繁变更图谱如何实时更新而非全量重建缓存增强生成CAG对高频查询预计算并缓存降低推理成本八、总结RAG 的三代演进本质上是从被动检索到主动决策的升级过程VectorRAG是基石解决了给 LLM 外挂知识库的基本问题GraphRAG是进阶通过实体关系解决知识碎片化和多跳推理Agentic RAG是目标让 Agent 自主决策是否检索、去哪检索、够不够完整Spring AI 2.0 的Advisor链机制、ToolCallingAdvisor、RetrievalAugmentationAdvisor等组件为 Java 开发者提供了构建三代 RAG 系统的完整工具链。结合 Neo4j 做知识图谱、MCP 协议接入外部工具、LangGraph4j 做多 Agent 编排可以构建出生产级的智能检索系统。技术选型口诀FAQ 用 Vector关系用 Graph复杂工作流上 Agent。本文是大模型工程师修炼手记付费专栏的公开文章。专栏持续更新 MCP协议、vLLM推理引擎、Spring AI Agent、LoRA微调、RAG工程化等实战内容。 关注专栏大模型工程师修炼手记获取最新技术实战内容