# 🚀 开源推荐 | ModelX RAG:基于 LangChain + Ollama 的企业级知识库系统
开源推荐 | ModelX RAG:基于 LangChain + Ollama 的企业级知识库系统
最近开源了一个非常实用的项目 qyhua0/rag,名为 ModelX RAG。这是一个基于 LangChain v0.3 + FastAPI + Ollama + Vue3 构建的企业级 RAG(检索增强生成)知识库系统。如果你正在寻找一个可私有化部署、支持多格式文档、能流式问答的知识库解决方案,这个项目值得你重点关注。
🎯 项目简介
ModelX RAG 的核心目标是帮助企业快速搭建专属的本地知识库,让大模型能够基于企业内部文档进行精准问答。它支持:
- 📄 多格式文档解析:PDF / Word / Excel / TXT / 图片(PaddleOCR)
- 🔍 向量检索:ChromaDB + Qwen3-Embedding-8B 嵌入模型
- 💬 流式问答:SSE 流式输出,实时打字效果
- 🗂️ 多知识库管理:独立管理,互不干扰
- 📊 引用溯源:每次回答标注文档来源和相似度
特别适合技术团队、知识密集型部门或需要构建内部问答助手的场景。
🏗️ 技术架构一览
后端技术栈
├── FastAPI 0.115 # 高性能 Web 框架
├── LangChain v0.3 # RAG 核心框架
├── langchain-ollama # 本地 LLM 接入
├── langchain-chroma # 向量存储封装
├── ChromaDB # 持久化向量数据库
├── Ollama # 本地模型运行时
│ ├── qwen2.5:7b # 对话模型(可替换)
│ └── qwen3-embedding-8b # 嵌入模型
├── PaddleOCR # 图片文字识别
├── SQLAlchemy 2.0 # ORM 框架
└── MySQL 5.7 # 业务数据存储前端技术栈
├── Vue 3.5 # UI 框架
├── Vite 6 # 构建工具
├── Tailwind CSS 3 # 原子化样式框架
├── Pinia # 状态管理
└── marked # Markdown 渲染💡 亮点:全栈开源、本地部署、无需依赖云服务,数据完全可控。
🚀 5 分钟快速上手
1️⃣ 前置准备
# 检查环境
python3 --version # 需要 3.10+
node --version # 需要 18+
mysql -u root -p # MySQL 5.7+
ollama serve # 启动 Ollama 服务2️⃣ 拉取模型
# 嵌入模型(必须)
ollama pull qwen3-embedding-8b
# 对话模型(按需选择)
ollama pull qwen2.5:7b
# 或更大模型:ollama pull qwen2.5:14b3️⃣ 配置后端
编辑 backend/.env:
DATABASE_URL=mysql+pymysql://root:your_password@localhost:3306/rag_db
OLLAMA_BASE_URL=http://localhost:11434
OLLAMA_LLM_MODEL=qwen2.5:7b
OLLAMA_EMBEDDING_MODEL=qwen3-embedding-8b
UPLOAD_DIR=./uploads
CHUNK_SIZE=1000
CHUNK_OVERLAP=200
TOP_K=54️⃣ 启动服务
# 启动后端
cd backend && ./start.sh
# 启动前端
cd frontend && ./start.sh5️⃣ 访问系统
| 地址 | 说明 |
|---|---|
| http://localhost:3000 | 前端界面 🎨 |
| http://localhost:8000/docs | API 文档(Swagger)📚 |
| http://localhost:8000/api/system/health | 健康检查 ✅ |
📖 核心使用流程
1️⃣ 新建知识库 → 选择图标、填写名称描述
2️⃣ 上传文档 → 支持拖拽上传 / 本地目录批量导入
3️⃣ 等待处理 → 文档自动解析 → 分块 → 向量化(状态实时刷新)
4️⃣ 开始对话 → 基于知识库内容问答,自动引用来源支持的文档格式
| 格式 | 说明 |
|---|---|
.pdf | 文本直接提取,图片页自动 OCR |
.docx | 段落 + 表格内容提取 |
.xlsx | 多 Sheet 提取 |
.txt / .md / .csv | 自动编码检测 |
.jpg / .png | PaddleOCR 中文文字识别 |
🎯 特别推荐:对于扫描版 PDF 或含图表的文档,项目内置的 PaddleOCR 能自动识别图片中的文字,大幅提升知识库覆盖率。
⚙️ RAG 参数调优指南
| 参数 | 默认值 | 调优建议 |
|---|---|---|
CHUNK_SIZE | 1000 | 越小检索越精准,但上下文可能不完整;技术文档建议 800-1200 |
CHUNK_OVERLAP | 200 | 保持块间连贯性,避免关键信息被截断 |
TOP_K | 5 | 返回最相关的片段数,问答场景 3-8 较合适 |
💡 小技巧:如果回答不够准确,可先尝试增大TOP_K或调整CHUNK_SIZE,再观察效果。
🔧 常见问题速查
❓ PaddleOCR 安装失败?
# 使用国内镜像加速
pip install paddlepaddle -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install paddleocr❓ Ollama 连接失败?
# 检查服务是否运行
curl http://localhost:11434/api/tags❓ 文档一直"处理中"?
- 检查后端日志:
logs/app.log - 嵌入模型首次调用需初始化,耐心等待 1-2 分钟
📝 API 调用示例(开发者友好)
# 创建知识库
curl -X POST http://localhost:8000/api/kb \
-H "Content-Type: application/json" \
-d '{"name":"技术文档","icon":"⚙️","description":"内部技术规范"}'
# 上传文件
curl -X POST http://localhost:8000/api/doc/upload \
-F "kb_id=1" -F "[email protected]"
# 导入本地目录(批量处理神器)
curl -X POST http://localhost:8000/api/doc/import-path \
-H "Content-Type: application/json" \
-d '{"kb_id":1,"path":"/data/docs","recursive":true}'
# 发起问答
curl -X POST http://localhost:8000/api/chat/send \
-H "Content-Type: application/json" \
-d '{"kb_id":1,"question":"请介绍一下系统架构"}'🌟 为什么推荐这个项目?
- 开箱即用:提供完整的前后端代码和启动脚本,5 分钟即可本地运行
- 完全私有化:所有数据、模型均在本地,适合对数据安全要求高的企业
- 技术栈主流:FastAPI + Vue3 + LangChain,易于二次开发和团队维护
- 中文优化:集成 Qwen 系列模型 + PaddleOCR,对中文文档支持友好
- 持续更新:作者活跃维护,近期仍有代码优化提交(截至 2026.3)
🔗 项目地址 & 贡献
- 📦 GitHub: https://github.com/qyhua0/rag
- 📄 License: MIT
如果你在使用过程中遇到问题,或有好的功能建议,欢迎通过 GitHub Issues 与作者交流。开源项目的发展,离不开每一位使用者的反馈与贡献 🙌
💬 结语
在私有化大模型应用落地的今天,知识库 + RAG 已成为企业提效的关键路径。ModelX RAG 以轻量、易用、可控为核心,为中小团队提供了一个高质量的起点方案。无论你是想搭建内部技术问答助手,还是为产品集成知识检索能力,这个项目都值得你花 10 分钟尝试一下。
📌 小提醒:首次部署建议预留 30 分钟,用于模型下载和环境配置。遇到报错先查日志,90% 的问题都能快速定位解决。