# smart-agentic-rag **Repository Path**: morusu/smart-agentic-rag ## Basic Information - **Project Name**: smart-agentic-rag - **Description**: Java 版智能 Agentic RAG 系统 — 多步推理引擎 + 金融分析 Agent - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-15 - **Last Updated**: 2026-05-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Smart Agentic RAG — Java 版智能分析系统 > 基于知乎文章「[智能 RAG 系统:让 AI 像人类分析师一样思考](https://www.zhihu.com/question/1923049104222721873/answer/1953934765909583735)」的 Java 实现 ## 📋 项目概述 将 Python/LangGraph 的多步 Agentic RAG 架构翻译为 Java + Spring AI 实现,专为财务分析场景设计。核心思想是让 AI 模拟人类分析师的思维流程: ``` 模糊追问 → 制定计划 → 多工具采集 → 质控审计 → 综合分析输出洞察 ``` ## 🏗️ 系统架构 ```mermaid graph TD A[用户问题] --> B[门卫 Gatekeeper] B -->|问题模糊| C[返回澄清问题] B -->|问题明确| D[规划师 Planner] D --> E[工具执行器 Executor] E --> F[审计员 Auditor] F -->|质量OK| G{还有任务?} F -->|质量低| D G -->|是| E G -->|否| H[策略师 Synthesizer] H --> I[最终分析回答] ``` ### 核心节点 | 节点 | 职责 | 技术实现 | |:---|:---|:---:| | **门卫 Gatekeeper** | 检测问题明确度,模糊时追问 | Spring AI ChatModel | | **规划师 Planner** | 根据问题制定多步工具调用计划 | Spring AI Prompt Template | | **文档管理员 Librarian** | 多步 RAG:查询优化 → 检索 → 重排序 | InMemoryVectorStore + TF-IDF | | **数据分析师 DataAnalyst** | 查询结构化财务数据 | Spring JDBC + H2 Database | | **趋势分析师 TrendAnalyzer** | 趋势分析(同比/环比) | SQL + Java 计算 | | **情报侦察 Scout** | 实时网络搜索 | WebClient (Tavily API) | | **审计员 Auditor** | 质量评估(置信度打分) | Spring AI ChatModel | | **策略师 Synthesizer** | 综合证据生成洞察分析 | Spring AI ChatModel | ## 🚀 快速开始 ### 环境要求 - JDK 17+ - Maven 3.8+ - OpenAI API Key(或其他兼容 API) ### 构建运行 ```bash # 1. 克隆项目 git clone https://gitee.com//smart-agentic-rag.git cd smart-agentic-rag # 2. 配置 API Key export OPENAI_API_KEY="sk-your-key-here" export OPENAI_BASE_URL="https://api.openai.com" # 或兼容 API 地址 export OPENAI_MODEL="gpt-4o-mini" # 3. 编译运行 mvn clean package -DskipTests java -jar target/smart-agentic-rag-1.0.0.jar ``` ### 使用示例 ```bash # 提问 curl -X POST http://localhost:8080/api/rag/ask \ -H "Content-Type: application/json" \ -d '{"question": "分析微软过去两年的收入趋势并评估 AI 相关风险"}' # 健康检查 curl http://localhost:8080/api/rag/health ``` ### 响应格式 ```json { "question": "分析微软过去两年的收入趋势并评估 AI 相关风险", "answer": "📊 **财务趋势分析**\n\n从数据来看...", "phase": "COMPLETED", "steps_executed": 3, "latency_ms": 18350, "needs_clarification": false } ``` ## 📁 项目结构 ``` src/main/java/com/smartrag/ ├── SmartRagApplication.java # 应用入口 ├── RagController.java # REST API ├── AppConfig.java # 配置 ├── model/ │ ├── AgentState.java # 状态模型(工作内存) │ ├── ChunkMetadata.java # 文档块元数据 │ ├── QualityAudit.java # 质量审计结果 │ └── AnalysisEvaluation.java # 评估结果 ├── document/ │ ├── DocumentParser.java # HTML 智能解析 │ └── ChunkProcessor.java # 文档分块 + 元数据 ├── retrieval/ │ ├── DocumentLibrarian.java # 多步 RAG 检索 │ ├── InMemoryVectorStore.java # 内存向量存储 │ └── QueryOptimizer.java # 查询优化 ├── data/ │ ├── DataAnalyst.java # SQL 数据查询 │ └── TrendAnalyzer.java # 趋势分析 ├── search/ │ └── IntelligenceScout.java # 实时网络搜索 ├── engine/ │ └── ReasoningEngine.java # 状态机推理引擎 └── evaluation/ ├── RetrievalEvaluator.java # 检索质量评估 ├── AnalysisEvaluator.java # LLM-as-Judge 评估 └── PerformanceTracker.java # 性能与成本跟踪 ``` ## 📊 评估结果(基于示例数据) | 指标 | 标准 RAG | 本系统 | |:---|:---:|:---:| | 精确率 | ~0.73 | **~0.92** | | 召回率 | ~0.65 | **~0.78** | | 端到端延迟 | ~3s | ~18.5s | | 单次成本 | ~$0.004 | ~$0.032 | ## 🔧 扩展指南 ### 替换为真实向量数据库 ```yaml # application.properties spring.ai.vectorstore.pgvector.host=localhost spring.ai.vectorstore.pgvector.port=5432 spring.ai.vectorstore.pgvector.database=vectordb ``` 详情参考 `docs/feasibility_report.md` 中的实施路线图。 ## 📄 许可证 MIT License ## 🙏 致谢 - 原始文章:[知乎 - 杞鋂](https://www.zhihu.com/question/1923049104222721873/answer/1953934765909583735) - Spring AI 框架 - LangGraph 架构启发