logo
181
1
Login
Johannlai<johann_lai@outlook.com>
feat(nginx): Update Nginx configuration for flexible domain and IP access
RAG Web UI

基于 RAG (Retrieval-Augmented Generation) 的知识库管理

License Python Node PRs Welcome

特性快速开始部署指南技术架构开发指南贡献指南

English | 简体中文

📖 简介

RAG Web UI 是一个基于 RAG (Retrieval-Augmented Generation) 技术的智能对话系统,它能够帮助构建基于自有知识库的智能问答系统。通过结合文档检索和大语言模型,实现了准确、可靠的知识问答服务。

系统支持多种大语言模型部署方式,既可以使用 OpenAI、DeepSeek 等云端服务,也支持通过 Ollama 部署本地模型,满足不同场景下的隐私和成本需求。

同时提供 OpenAPI 接口,方便用户通过 API 调用知识库。

你可以通过RAG 教程来了解整个项目的实现流程。

✨ 特性

  • 📚 智能文档管理

    • 支持多种文档格式 (PDF、DOCX、Markdown、Text)
    • 文档自动分块和向量化
    • 支持异步文档、增量处理
  • 🤖 先进的对话引擎

    • 基于 RAG 的精准检索和生成
    • 支持上下文多轮对话
    • 支持对话中引用角标查看原文
  • 🎯 合理架构

    • 前后端分离设计
    • 分布式文件存储
    • 高性能向量数据库: 支持 ChromaDB、Qdrant,通过 Factory 模式,可以方便的切换向量数据库

🖼️ 截图

Knowledge Base Management

知识库管理 Dashboard

Chat Interface

文档处理 Dashboard

Document Processing

文档列表

System Settings

带引用序号的智能对话界面

Analytics Dashboard

API Key 管理

Analytics Dashboard

API 参考

项目流程图

🚀 快速开始

环境要求

  • Docker & Docker Compose v2.0+
  • Node.js 18+
  • Python 3.9+
  • 8GB+ RAM

安装步骤

  1. 克隆项目
git clone https://github.com/rag-web-ui/rag-web-ui.git cd rag-web-ui
  1. 配置环境变量

注意配置文件中的环境,详细配置往下看配置表格~

cp .env.example .env
  1. 启动服务(开发环境的配置)
docker compose up -d --build

验证安装

服务启动后,可以通过以下地址访问:

🏗️ 技术架构

后端技术栈

  • 🐍 Python FastAPI: 高性能异步 Web 框架
  • 🗄️ MySQL + ChromaDB: 关系型数据库 + 向量数据库
  • 📦 MinIO: 对象存储
  • 🔗 Langchain: LLM 应用开发框架
  • 🔒 JWT + OAuth2: 身份认证

前端技术栈

  • ⚛️ Next.js 14: React 应用框架
  • 📘 TypeScript: 类型安全
  • 🎨 Tailwind CSS: 原子化 CSS
  • 🎯 Shadcn/UI: 高质量组件库
  • 🤖 Vercel AI SDK: AI 功能集成

📈 性能优化

系统在以下方面进行了性能优化:

  • ⚡️ 文档增量处理和异步分块
  • 🔄 流式响应和实时反馈
  • 📑 向量数据库性能调优
  • 🎯 分布式任务处理

📖 开发指南

使用 docker compose 启动开发环境,可热更新

docker compose -f docker-compose.dev.yml up -d --build

访问地址:http://127.0.0.1.nip.io

🔧 配置说明

核心配置项

配置项说明默认值必填
MYSQL_SERVERMySQL 服务器地址localhost
MYSQL_USERMySQL 用户名postgres
MYSQL_PASSWORDMySQL 密码postgres
MYSQL_DATABASEMySQL 数据库名ragwebui
SECRET_KEYJWT 加密密钥-
ACCESS_TOKEN_EXPIRE_MINUTESJWT token 过期时间(分钟)30

LLM 配置

配置项说明默认值适用场景
CHAT_PROVIDERLLM 服务提供商openai
OPENAI_API_KEYOpenAI API 密钥-使用 OpenAI 时必填
OPENAI_API_BASEOpenAI API 基础 URLhttps://api.openai.com/v1使用 OpenAI 时可选
OPENAI_MODELOpenAI 模型名称gpt-4使用 OpenAI 时必填
DEEPSEEK_API_KEYDeepSeek API 密钥-使用 DeepSeek 时必填
DEEPSEEK_API_BASEDeepSeek API 基础 URL-使用 DeepSeek 时必填
DEEPSEEK_MODELDeepSeek 模型名称-使用 DeepSeek 时必填
OLLAMA_API_BASEOllama API 基础 URLhttp://localhost:11434使用 Ollama 时必填, 注意需要先拉取模型
OLLAMA_MODELOllama 模型名称-使用 Ollama 时必填

Embedding 配置

配置项说明默认值适用场景
EMBEDDINGS_PROVIDEREmbedding 服务提供商openai
OPENAI_API_KEYOpenAI API 密钥-使用 OpenAI Embedding 时必填
OPENAI_EMBEDDINGS_MODELOpenAI Embedding 模型text-embedding-ada-002使用 OpenAI Embedding 时必填
DASH_SCOPE_API_KEYDashScope API 密钥-使用 DashScope 时必填
DASH_SCOPE_EMBEDDINGS_MODELDashScope Embedding 模型-使用 DashScope 时必填
OLLAMA_EMBEDDINGS_MODELOllama Embedding 模型-使用 Ollama Embedding 时必填

向量数据库配置

配置项说明默认值适用场景
VECTOR_STORE_TYPE向量存储类型chroma
CHROMA_DB_HOSTChromaDB 服务器地址localhost使用 ChromaDB 时必填
CHROMA_DB_PORTChromaDB 端口8000使用 ChromaDB 时必填
QDRANT_URLQdrant 向量存储 URLhttp://localhost:6333使用 Qdrant 时必填
QDRANT_PREFER_GRPCQdrant 优先使用 gRPC 连接true使用 Qdrant 时可选

对象存储配置

配置项说明默认值必填
MINIO_ENDPOINTMinIO 服务器地址localhost:9000
MINIO_ACCESS_KEYMinIO 访问密钥minioadmin
MINIO_SECRET_KEYMinIO 密钥minioadmin
MINIO_BUCKET_NAMEMinIO 存储桶名称documents

其他配置

配置项说明默认值必填
TZ时区设置Asia/Shanghai

🤝 贡献指南

我们非常欢迎社区贡献!

贡献流程

  1. Fork 本仓库
  2. 创建特性分支 (git checkout -b feature/AmazingFeature)
  3. 提交改动 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 创建 Pull Request

开发规范

🚧 Roadmap

  • 知识库 API 集成
  • 自然语言工作流
  • 多路召回
  • 支持多模型
  • 支持多向量数据库
  • 支持本地模型

补充

本项目仅用于学习交流 RAG ,请勿用于商业用途,不具备在生产环境使用的条件,还在持续开发中。

📄 许可证

本项目采用 Apache-2.0 许可证

🙏 致谢

感谢以下开源项目:

star history


如果这个项目对你有帮助,请考虑给它一个 ⭐️