MySQL +
FastAPI+
MinIO+
Ollama+
OpenAI GPT Latest + Docker Compose v2.0++ Node.js 18++ Python 3.9++ ChromaDB
FastAPI+
MinIO+
Ollama+
OpenAI GPT Latest + Docker Compose v2.0++ Node.js 18++ Python 3.9++ ChromaDB基于RAG的自建知识库智能问答系统,文档检索+大模型生成可靠回答
FastAPI提供异步后端,MySQL存关系数据,ChromaDB做向量检索,MinIO分布式存文件,LLM生成答案
✓ 支持云端与本地Ollama部署,兼顾隐私✓ 支持ChromaDB、Qdrant向量库 ✕ 需要8GB以上内存✕ 文档截断,完整部署细节需查原仓库
方案简介
RAG Web UI 是一套基于 RAG(检索增强生成)技术的智能对话系统,帮助用户基于自己的知识库搭建智能问答服务。它将文档检索与大语言模型结合,实现准确、可靠的知识型问答。
该方案支持多种 LLM 部署方式:既可接入 OpenAI、DeepSeek、MiniMax 等云端服务,也可通过 Ollama 本地部署模型,满足不同场景下的隐私与成本需求。系统还提供 OpenAPI 接口,方便通过 API 调用访问知识库。
适合希望将私有文档(PDF、DOCX、Markdown、TXT 等)变成可对话知识库的开发者与团队,尤其是需要数据私有化部署、或需要通过 API 集成问答能力到自有产品的场景。
亮点与能力
- 智能文档管理:支持 PDF、DOCX、Markdown、Text 多种文档格式,自动分块与向量化,支持异步文档处理与增量更新
- 高级对话引擎:基于 RAG 的精准检索与生成,支持多轮上下文对话,对话中支持引用出处标注
- 健壮架构:前后端分离设计,分布式文件存储
- 高性能向量数据库:支持 ChromaDB、Qdrant,通过 Factory 模式轻松切换
- OpenAPI 接口:通过 API Key 管理与 API 调用访问知识库
- 异步处理流程:文档上传后返回 Job ID,可轮询处理状态(Processing/Completed/Failed)
组成与分工
- FastAPI:高性能异步 Web 框架,承担后端 API 服务
- MySQL:关系型数据库,存储用户、知识库等结构化数据
- ChromaDB:向量数据库,存储文档向量化结果,支撑检索
- MinIO:分布式对象存储,存放上传的原始文档文件
- Ollama / OpenAI / DeepSeek / MiniMax:大语言模型服务,负责基于检索上下文生成回答
- Embedding Service:Embedding API 与 Embedding Server,将文本切分片段向量化后写入向量库
- NFS:分布式文件存储环节,对接文档预处理流程
前置要求
- Docker & Docker Compose v2.0+
- Node.js 18+
- Python 3.9+
- 8GB+ RAM
使用与配置要点
服务启动后通过以下地址验证与使用:
- 🌐 前端 UI:http://127.0.0.1.nip.io
- 📚 API 文档:http://127.0.0.1.nip.io/redoc
- 💾 MinIO 控制台:http://127.0.0.1.nip.io:9001
日常使用流程:在前端管理界面创建知识库并上传文档(PDF/MD/TXT/DOCX),系统返回 Job ID 并异步完成预处理、分块、向量化入库,可通过 Job 状态查询轮询进度;随后在对话界面即可基于知识库进行多轮问答并查看引用;也可通过 API Key 管理,使用 OpenAPI 接口以检索上下文方式集成到自有应用。
优缺点
- ✓ 支持云端与本地Ollama部署,兼顾隐私
- ✓ 支持ChromaDB、Qdrant向量库
- ✕ 需要8GB以上内存
- ✕ 文档截断,完整部署细节需查原仓库
出处
本方案挖掘自开源项目 rag-web-ui/rag-web-ui,方案内容与实施命令均来自其 README 原文。
方案出处
rag-web-ui/rag-web-ui:RAG Web UI is an intelligent dialogue system based on RAG (Retrieval-Augmented G 3279 star RAG Web UI is an intelligent dialogue system based on RAG (Retrieval-Augmented Generation) technology.
本方案由真实开源项目挖掘整理,实施命令均来自其 README 原文,安装使用请遵循项目开源协议。