基于 Spring Boot 4 + LangChain4j 1.11 + Ollama + Qdrant + MCP 的一体化多 Agentic 智能体,RAG 系统
本文结合企业级项目实践,开发一个真正'开箱即用'的企业级智能知识库系统。它不仅支持标准 RAG 问答,更融合了 Agentic 智能体架构、MCP 文件沙盒、金融专用算子 和 混合模型路由,提供从文档上传到复杂推理的完整闭环体验。
1. 总览:技术栈与核心能力 ✨
| 维度 | 技术选型 | 能力说明 |
|---|
| 后端框架 | Spring Boot 4 + SQLite | 轻量级持久化,无需额外数据库,生产可切换为其他数据,如 mysql,pgsql |
| AI 引擎 | LangChain4j 1.11 | 支持 Agentic 工具调用、流式响应、上下文记忆 |
| 语言模型 | Ollama(qwen2.5:7b) + 可选 DashScope(qwen-plus) | 本地私有部署 + 云端高性能混合 |
| 嵌入模型 | Ollama(qwen3-embedding:0.6b) | 固定使用本地,保障数据不出域,高性能,降低成本 |
| 向量库 | Qdrant(1024 维) | 自动建集、高效检索(minScore=0.5) |
| 前端界面 | 纯静态 HTML/JS | 毛玻璃效果 + 渐变设计,5 大功能页面,少依赖,轻量化。 |
| 特色能力 | 🎯 10+ 领域文档管理 | |
| 🧠 Agentic 多工具协作 | | |
| 📊 金融计算(IRR/债券/期权) | | |
| 📎 MCP 文件分析 | | |
| 🌤️ 天气/时间查询 | 企业场景全覆盖 | |
2. 端到端架构 🚀

💡 关键设计:嵌入模型始终走本地 Ollama,确保敏感文档向量化过程完全私有;仅生成模型可动态路由。
3. 模块深度解析
3.1 RAG 检索增强生成 📄
- 入口:
RagService
- 流程:
- 用户提问 → 本地
qwen3-embedding 生成向量;
- Qdrant 检索 top5 相似段落(
min-score: 0.5);
- 拼接上下文 → 路由至 LLM(本地/云端)→ 流式返回带引用的回答。
- 文档支持:PDF/TXT 自动分块(
chunk-size: 500, overlap: 50),元数据含文件名便于溯源。
3.2 Agentic 智能体对话 ⭐
基于 LangChain4j Agentic 架构,实现自主决策与工具协作:
- 记忆机制:
MessageWindowChatMemory,滑动窗口管理最近 2 × context-window-size 条消息(默认 20 条)。
- 内置工具集(Agent 自主调用):
searchKnowledge():向量知识库检索
readFile() / listDirectory() / searchFiles():MCP 文件系统操作
calculate():数学表达式求值(exp4j)
calculateAmortization():贷款摊销计划
getIRR() / getBondPrice() / getOptionPrice():金融专用计算
getCurrentTime() / getWeather():实时信息查询
- 执行追踪:
AgentExecutionInfo 记录完整思考链,前端可展示'Agent 正在读取文件...调用 Black-Scholes...'。
3.3 混合模型路由策略 🔀
通过 ModelRouterService 实现智能分流:
| 策略 | 配置示例 | 适用场景 |
|---|
| PERCENTAGE | aliyun: 30, local: 70 | 测试环境、负载均衡 |
| BUSINESS_TYPE | aliyun-types: [COMPLEX_QUERY, LONG_CONTEXT] | |
local-types: [TOOL_CALLING, SIMPLE_QA] | 生产推荐:复杂任务上云,工具调用走本地 | |
✅ 安全兜底:若未配置 DashScope API Key,自动 100% 路由至本地 Ollama。
3.4 MCP 风格文件沙盒 📎
受 Model Context Protocol (MCP) 启发,实现安全文件交互:
- 路径隔离:所有文件存于
uploads/{conversationId}/,按会话隔离。
- 安全防护:
- 限制根目录(
mcp-allowed-directory)
- 防目录遍历(
.. 被规范化)
- 大文件(>5KB)自动截断预览
典型场景:
用户上传《信访政策.pdf》 → Agent 调用 readFile() 读取 → 结合 searchKnowledge() 检索知识库 → 对比分析合规性。
3.5 现代化前端界面 🎨
5 个功能页面,统一采用渐变设计 + 毛玻璃效果:
| 页面 | 功能亮点 | 截图预览 |
|---|
| 📁 文件上传 | | |
/upload.html | - 支持 PDF / TXT 上传 | |
| - 自动分块 + 向量化入库 Qdrant | | |
- 可指定领域标签(如 FINANCE) |  | |
| 💬 智能问答 | | |
/chat.html | - 标准 RAG 流式对话 | |
| - 回答自动标注引用来源(文件名 + 片段) | | |
| - 响应速度快,体验流畅 |  | |
| 🤖 Agentic 对话 | | |
/agent-chat.html | - 智能体自主调用工具(文件/计算/检索等) | |
| - 实时展示执行轨迹:模型选择 → 工具调用 → 结果整合 | | |
| - 支持复杂多步推理 |  | |
| 📚 领域文档管理 | | |
/domain.html | | |
- 管理 10+ 领域知识库(如 TECH, FINANCE, POLICY) | | |
| - 查看各领域文档数量与状态 | | |
| - 支持异步处理进度反馈 | | |
| 也可以改造为 mq 等方式作为 ai 服务,接受数据存储知识库。 | | |
| 🗃️ Qdrant 管理 | | |
/qdrant.html | - 查看现有向量集合(Collections) | |
| - 创建新集合(自动配置 1024 维) | | |
| - 调试向量存储状态 |  |
4. 快速启动与配置 ⚙️
4.1 本地全栈运行
ollama serve ollama pull qwen2.5:7b ollama pull qwen3-embedding:0.6b
docker run -d -p 6333:6333 -p 6334:6334 qdrant/qdrant
mvn spring-boot:run
open http://localhost:8080
4.2 关键配置 (application.yaml)
model-router:
strategy: BUSINESS_TYPE
business-type:
aliyun-types: [COMPLEX_QUERY, LONG_CONTEXT]
local-types: [SIMPLE_QA, TOOL_CALLING]
rag:
chunk-size: 500
chunk-overlap: 50
max-results: 5
min-score: 0.5
agent:
context-window-size: 10
mcp-allowed-directory: ./uploads
mcp-file-enabled: true
🔑 DashScope 配置:设置环境变量 DASHSCOPE_API_KEY 即可启用云端模型。
5. 企业级细节与扩展点 💡
- 金融计算深度支持:
- 投资分析:IRR(牛顿法)、NPV、摊销计划
- 债券:定价、到期收益率(YTM)、久期、凸度
- 期权:Black-Scholes 模型 + Greeks(Delta/Gamma/Vega)
- 领域知识管理:支持
TECHNOLOGY、FINANCE 等 10+ 领域,异步处理入库。
- 可扩展建议:
- 安全:反向代理层增加上传大小限制,收紧
mcp-allowed-directory
- 可观测性:将
AgentExecutionInfo 接入日志系统,构建完整审计链
- 前端:当前静态页可无缝替换为 React/Vue SPA,后端 SSE 接口已就绪