Skip to content

lxy0068/DocMind

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 

Repository files navigation

DocMind Logo

DocMind

Agentic RAG + MCP 驱动的企业智能知识检索系统

不只是搜索,而是让知识库像专家一样思考、决策、自证

架构 核心 协议 部署 许可证

简介核心特性技术栈架构总览核心流程快速开始部署展示


🚀 简介

DocMind 是一个基于 Agentic RAG(检索增强生成) 架构的企业级智能知识检索系统。它不仅仅是简单的“文档问答”,而是通过 LLM Agent 在运行时动态决策,智能编排检索链路,实现对任意领域私有知识的高质量、可溯源、自适应问答。

核心理念:用 AI 决策替代硬编码流水线。让知识库“学会”根据不同问题,选择最合适的检索策略。

一句话概括:上传你的企业文档(技术手册、规章制度、产品说明等),即可获得一个能深度理解、精准回答、并可无缝接入你 AI 工作流的专家级知识助手。

✨ 核心特性

特性 说明
🤖 真正的 Agentic RAG 基于 Spring AI Function Calling,LLM 实时分析问题意图,动态调用向量检索、关键词检索、联网搜索、长期记忆等工具,不同问题走不同优化路径,告别传统 RAG 的固定流水线。
🔄 七步检索链 查询改写 → LLM 选工具 → 多路召回 → RRF融合 → 重排序 → 上下文压缩 → 自检纠错,每一步均有独立降级方案,工程级保障检索质量与系统鲁棒性。
🔌 MCP 协议开放 通过 Model Context Protocol (MCP) 标准协议,对外暴露所有检索工具。您的 Claude Desktop、Cursor 或自研 Agent 可直接调用企业知识库,实现“知识即服务”。
📊 答案完全可追溯 每条回答均附带精确来源(文档名、章节、页码)、完整的 Agent 推理链(Thought-Action-Observation)、工具调用记录及自检评分,杜绝黑箱。
🧠 跨会话长期记忆 自动识别并记忆用户显式偏好(如“我是Java开发者”),在后续对话中主动召回,实现个性化、有上下文的问答体验。
⚙️ 全链路热配置 所有 RAG 参数(TopK、阈值、模型等)均支持通过管理后台动态调整,无需重启服务。LLM 模型支持运行时热切换,不影响正在处理的请求。
🏗️ 生产级容错 从查询改写到最终生成,每一环节都设计了降级策略(随机向量兜底、规则路由降级、关键词评分降级等),确保单点故障不导致服务中断。

5c00638218829f6f0c8e05677e2f9d64

🛠️ 技术栈

后端框架:

  • Spring Boot 3.4 + Spring AI 1.1.4
  • Spring Security + JWT

AI 与检索:

  • LLM: Spring AI OpenAI Compatible (通义千问、DeepSeek、OpenAI 等)
  • 向量数据库: Milvus 2.x
  • 全文检索: Apache Lucene 8.11 (SmartCN 分词 + BM25)
  • 重排模型: DashScope gte-rerank (云端 Cross-Encoder)
  • 嵌入模型: text-embedding-v3 (1024维)

数据与存储:

  • 关系数据库: MySQL 8
  • 缓存与内存: Redis 7
  • 对象存储: MinIO (S3兼容)
  • ORM: MyBatis-Plus 3.5

前端:

  • Vue 3.5 + TypeScript
  • Vite + Element Plus + ECharts

通信与协议:

  • SSE (Server-Sent Events) 流式输出
  • MCP (Model Context Protocol) via Spring AI MCP Server

🏗️ 架构总览

DocMind 采用纯 Java 单体架构,逻辑清晰,部署简单。核心是 Agent 驱动的检索引擎,并通过 MCP 层 实现能力开放。

            ┌─────────────────────────────────────────────────────┐
            │                    前端 (Vue 3)                      │
            │        聊天界面 / 知识库管理 / MCP控制台 / 数据大屏    │
            └───────────────┬─────────────────────────────────────┘
                            │ (HTTP/SSE, JWT)
            ┌───────────────▼─────────────────────────────────────┐
            │               后端 (Spring Boot 单体)                │
            │                                                     │
            │  ┌───────────────┐  ┌──────────────────────────┐    │
            │  │   Agent 层    │  │     MCP 工具层            │    │
            │  │ • ReAct Agent │◄─┤ • doc_search (语义检索)   │    │
            │  │ • QueryRouter │  │ • keyword_search (BM25)  │    │
            │  │ • 自检纠错     │  │ • web_search (联网)      │    │
            │  └───────┬───────┘  │ • memory (长期记忆)       │    │
            │          │           └──────────┬───────────────┘   │
            │  ┌───────▼──────────────────────▼───────────────┐   │
            │  │           检索引擎层                          │   │
            │  │ • 多路召回 (向量/BM25) • RRF融合 • 重排序      │   │
            │  │ • 上下文压缩 • Prompt组装 • 安全护栏           │   │
            │  └───────┬──────────────────────┬───────────────┘   │
            │          │                      │                   │
            │  ┌───────▼──────┐    ┌──────────▼──────────────┐    │
            │  │   存储层      │    │      外部服务           │    │
            │  │ • MySQL      │    │ • LLM API (通义/OpenAI) │    │
            │  │ • Milvus     │    │ • Embedding API         │    │
            │  │ • Redis      │    │ • Rerank API            │    │
            │  │ • MinIO      │    │ • Tavily (联网搜索)      │    │
            │  └──────────────┘    └──────────────────────────┘   │
            └─────────────────────────────────────────────────────┘

🔄 核心流程

  1. 查询改写:LLM 将口语化问题优化为更适合检索的表达。
  2. 工具选择:LLM Agent 分析问题,通过 Function Calling 动态决定调用 doc_search(语义)、keyword_search(精确)、web_search(时效)、recall_memory(记忆)中的哪些工具。
  3. 多路召回与 RRF 融合:并行执行所选工具的检索,使用 RRF(倒数秩融合) 算法将不同评分体系的向量、BM25、网页结果统一排序,解决分数不可比问题。
  4. Cross-Encoder 精排:调用云端 gte-rerank 模型对候选文档进行 (query, chunk) 对精细相关度打分,精选 Top-6。(降级方案:模型不可用时采用关键词频率混合评分)。
  5. 上下文压缩:对精排结果进行前缀去重、单片截断、总量控制,在保留核心信息的同时严格控制 Token 消耗。
  6. Prompt 组装与安全护栏:注入带精确来源的参考文档、用户画像、长期记忆、对话历史。进行紧急关键词检测和置信度兜底。
  7. 流式生成与自检:SSE 流式输出答案。生成后,LLM对答案进行事实一致性、完整性、来源匹配度自检,低置信度触发最多2轮重新检索循环。

🚦 快速开始

环境要求

  • JDK 17
  • Maven 3.9+
  • Node.js 18+npm 9+
  • DockerDocker Compose

一键启动(开发模式)

  1. 启动基础设施:确保 Docker 守护进程运行,然后在项目根目录执行: bash docker-compose up -d

    这将启动 MySQL、Redis、Milvus、MinIO 的容器。

  2. 配置应用:复制 application.yml.exampleapplication.yml,并填写您的:

    • 大模型 API Key 和 Base URL(阿里云百炼、OpenAI 等)
    • Tavily API Key(用于联网搜索功能)
  3. 启动后端: bash mvn spring-boot:run

    java -jar target/DocMind.jar

  4. 启动前端: bash cd DocMind-frontend npm install npm run dev

  5. 访问系统:打开浏览器,访问前端控制台输出的地址(通常是 http://localhost:5173)。使用默认账号登录,开始上传文档并体验智能问答。

🐳 部署

使用 Docker Compose 全栈部署

我们提供了生产环境可用的 docker-compose.prod.yml 配置文件,一键部署所有组件。

bash

  1. 构建后端 Docker 镜像 (在项目根目录)

docker build -t docmind-backend:latest .

  1. 调整配置文件

编辑 docker-compose.prod.yml,设置正确的环境变量(API Keys等)。

  1. 启动所有服务

docker-compose -f docker-compose.prod.yml up -d

部署成功后,访问 http://your-server-ip:8080 即可使用系统。

源码链接:https://pan.quark.cn/s/8c1b46a96139?pwd=fv9U

📄 展示

eb8958f595a83dedb337e59e94fe4dcb e147d4a0846a901f7443901f86ab2b8e a412afde7dd87f98eb236a36e6cb8be3 499d1626bdbf7eb2481baa25a6a59130 898a0a34c131e67a477e67cce30e39b0 7e4f4eceb3aa35db2b461938c893e440 72bec761163199acc996b6f6cb278903

Xingyan Liu 构建,用 ❤️ 和 ☕️ 驱动

About

DocMind: The Agentic RAG-Powered Enterprise Intelligent Knowledge Retrieval System (基于Agentic RAG的企业智能知识检索系统)

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors