docmind-ai-llm
本地优先的智能文档分析平台,隐私默认、LangGraph四代理协作、混合检索、Docker一键部署
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
本地优先的智能文档分析平台,隐私默认、LangGraph四代理协作、混合检索、Docker一键部署
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象你是一位处理大量敏感合同的法律顾问,或是一家需要分析竞品专利文档的科技公司负责人。传统方案要么把文件上传到云端,让第三方AI处理——这意味着商业机密在传输和存储过程中暴露在风险之中;要么自己搭建复杂的RAG系统,配置向量数据库、LLM调用、检索路由等多个组件,门槛高到让人望而却步。
DocMind AI 正是为解决这两个痛点而生:它是一个完全本地化的文档分析应用,用户上传的文档数据永不离开本地环境,同时提供开箱即用的完整技术栈,让"隐私优先"和"零门槛部署"不再是非此即彼的选择。
DocMind AI 由独立开发者 Bjorn Melin 创建并维护(GitHub ID: BjornMelin,48079573),目前版本为 2.0.1,采用 MIT 开源许可证,在 GitHub 上已获得 141 颗星和 26 个 Fork,项目处于活跃开发状态(23 个 open issues),说明社区参与度较高。
项目的设计哲学非常明确:远程 LLM 端点默认被阻止,只有在用户明确授权的情况下才会启用外部 API。这种"隐私默认"的设计思路在当前的 AI 应用中相当少见——大多数 RAG 工具为了追求能力上限,默认允许云端调用,而 DocMind 反其道而行之,将离线运行作为第一公民(first-class citizen)来设计。
DocMind 的文档解析能力是其技术亮点之一。它使用 Docling 作为统一的文档转换后端,支持 PDF、Office 套件(Word、Excel、PPT)、HTML 等多种常见格式的解析。当解析器遇到二进制格式时,会主动报错而不是将源字节解码为乱码文本,这种"fail-fast"策略保证了数据处理的可靠性。
对于扫描版 PDF,DocMind 集成了 RapidOCR(基于 ONNX Runtime 的 CPU 推理引擎)实现本地化 OCR 识别。整个 OCR 推理过程不需要调用任何外部服务,文档图片数据始终在本地处理。
文档解析完成后,使用 LlamaIndex 的 IngestionPipeline 进行文本分块(TokenTextSplitter),并可选择性使用 spaCy NLP 管道进行语义 enrichment(需要单独下载 spaCy 模型:uv run python -m spacy download en_core_web_sm)。
DocMind 的检索层采用 LlamaIndex 的 RouterQueryEngine 作为统一入口,支持以下六种检索模式:
Qdrant 向量数据库负责存储和管理向量,支持服务端融合算法(RRF 和 DBSF),并通过 named vectors(text-dense 和 text-sparse)实现多向量类型的隔离管理。
DocMind 最具特色的设计是 LangGraph supervisor 编排的四代理协作系统:
四个代理通过 LangGraph 的状态图(state graph)进行协调,支持持久化 checkpoint(基于 SQLite-Vec),确保长时间对话的上下文一致性。
DocMind 实现了独特的快照(Snapshot)机制:每次文档集合(corpus)的构建都会生成一个不可变的快照,包含物理文本/图片集合与 corpus 配置哈希、package 版本的绑定记录。这一设计借鉴了软件工程的版本控制思想,允许用户在任意时间点回滚到特定版本的文档索引,保证了分析结果的可重现性。
快照数据以 JSONL/Parquet 格式导出,Parquet 格式需要 PyArrow 依赖。快照元数据存储在 Qdrant 中,而实际的向量数据由 Qdrant 全权管理,实现了"存储解耦"。
对于包含大量图表、截图的视觉丰富型 PDF,DocMind 使用 pypdfium2 将页面渲染为 WebP/JPEG 图片。图片支持 AES-GCM 加密存储为 .enc 文件,实现"静态加密",并在需要视觉评分时实时解密。
多模态聊天界面支持图片源的展示,以及"Visual Search"(视觉搜索)——用户可以上传一张图片,让 DocMind 在文档库中找到视觉上相似的页面,这一功能由 SigLIP 视觉模型驱动。
项目提供了完整的 Dockerfile(多阶段构建,基于 python:3.12.13-slim-bookworm)和三个 docker-compose 配置文件:
docker-compose.yml:CPU 基准配置,包含 DocMind 应用 + Ollama 0.31.2 + Qdrant v1.18.2docker-compose.gpu.yml:NVIDIA GPU 加速配置,Torch 使用 CUDA 12.8 编译版本docker-compose.prod.yml:生产环境配置Ollama 默认使用 Qwen3:4b 作为 LLM 后端,Qdrant 提供向量存储服务,三者通过 Docker 网络互联。健康检查机制完善(Ollama 用 ollama list 检测,Qdrant 用 TCP 端口检测),确保服务就绪后才启动应用。
Dockerfile 构建过程中会预下载默认嵌入模型(通过 tools/models/pull.py),并在镜像构建阶段验证 RapidOCR 的离线推理能力,确保生产环境真正可以"离线运行"。
应用配置通过 .env 文件管理,.env.example 提供了所有可配置项的参考。
DocMind 提供三个主要 Streamlit 页面:
整个 UI 使用 Plotly 进行数据可视化,配合 OpenTelemetry 进行链路追踪和指标采集。
| 层级 | 技术选型 |
|---|---|
| UI 框架 | Streamlit ≥1.52.2 |
| LLM 编排 | LangGraph ≥1.0.10 + LangChain ≥1.2.2 |
| 检索框架 | LlamaIndex ≥0.14.21(多集成) |
| 向量数据库 | Qdrant Client ≥1.15.1 |
| 文档解析 | Docling ≥2.111 + pypdfium2 ≥5.7 |
| OCR 引擎 | RapidOCR ≥3.8(ONNX Runtime ≥1.23) |
| NLP 管道 | spaCy ==3.8.14 |
| 嵌入模型 | Transformers ≥5.0.0(BGE)+ FastEmbed ≥0.5.1(BM42) |
| 重排模型 | Sentence-Transformers ≥5.2.0(BGE CrossEncoder)+ SigLIP |
| ML 运行时 | Torch ==2.11.0(CPU-first)+ Transformers |
| 本地 LLM | Ollama ≥0.6.2 / LMStudio / llama.cpp / vLLM |
| 代理记忆 | SQLite-Vec ≥0.1.6 |
| 日志/追踪 | Loguru ≥0.7.3 + OpenTelemetry SDK |
| 包管理 | uv(Astral) |
DocMind 在设计上做了几个值得关注的取舍:
<25),在依赖管理上需要额外注意。DocMind AI 代表了 RAG 系统在"隐私优先"方向上的深度探索。它不满足于"能用就行",而是在文档解析精度、检索策略多样性、代理协作合理性、数据安全等多个维度都做了精细设计。对于需要处理敏感文档、又希望借助 AI 提升效率的团队来说,DocMind 是一个值得认真评估的技术方案——特别是其 Docker 一键启动的部署体验大幅降低了试用门槛。
推荐人群:法务合规团队、医疗记录分析、科研文献整理、需要处理机密文档且有数据合规要求的各类机构。