开源推荐 | 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:14b

3️⃣ 配置后端

编辑 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=5

4️⃣ 启动服务

# 启动后端
cd backend && ./start.sh

# 启动前端
cd frontend && ./start.sh

5️⃣ 访问系统

地址说明
http://localhost:3000前端界面 🎨
http://localhost:8000/docsAPI 文档(Swagger)📚
http://localhost:8000/api/system/health健康检查 ✅

📖 核心使用流程

1️⃣ 新建知识库 → 选择图标、填写名称描述
2️⃣ 上传文档   → 支持拖拽上传 / 本地目录批量导入
3️⃣ 等待处理   → 文档自动解析 → 分块 → 向量化(状态实时刷新)
4️⃣ 开始对话   → 基于知识库内容问答,自动引用来源

支持的文档格式

格式说明
.pdf文本直接提取,图片页自动 OCR
.docx段落 + 表格内容提取
.xlsx多 Sheet 提取
.txt / .md / .csv自动编码检测
.jpg / .pngPaddleOCR 中文文字识别
🎯 特别推荐:对于扫描版 PDF 或含图表的文档,项目内置的 PaddleOCR 能自动识别图片中的文字,大幅提升知识库覆盖率。

⚙️ RAG 参数调优指南

参数默认值调优建议
CHUNK_SIZE1000越小检索越精准,但上下文可能不完整;技术文档建议 800-1200
CHUNK_OVERLAP200保持块间连贯性,避免关键信息被截断
TOP_K5返回最相关的片段数,问答场景 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":"请介绍一下系统架构"}'

🌟 为什么推荐这个项目?

  1. 开箱即用:提供完整的前后端代码和启动脚本,5 分钟即可本地运行
  2. 完全私有化:所有数据、模型均在本地,适合对数据安全要求高的企业
  3. 技术栈主流:FastAPI + Vue3 + LangChain,易于二次开发和团队维护
  4. 中文优化:集成 Qwen 系列模型 + PaddleOCR,对中文文档支持友好
  5. 持续更新:作者活跃维护,近期仍有代码优化提交(截至 2026.3)

🔗 项目地址 & 贡献

如果你在使用过程中遇到问题,或有好的功能建议,欢迎通过 GitHub Issues 与作者交流。开源项目的发展,离不开每一位使用者的反馈与贡献 🙌

💬 结语

在私有化大模型应用落地的今天,知识库 + RAG 已成为企业提效的关键路径。ModelX RAG 以轻量、易用、可控为核心,为中小团队提供了一个高质量的起点方案。无论你是想搭建内部技术问答助手,还是为产品集成知识检索能力,这个项目都值得你花 10 分钟尝试一下。

📌 小提醒:首次部署建议预留 30 分钟,用于模型下载和环境配置。遇到报错先查日志,90% 的问题都能快速定位解决。

标签: none

添加新评论