基于 RAG(检索增强生成) 的企业级智能问答助手。支持上传 PDF / Word 文档,自动切片、向量化并入库,结合大模型进行多轮对话、历史记录与流式输出。
开箱即用:
LLM_PROVIDER=mock模式下无需任何 API Key 即可体验完整流程(流式输出、多轮对话、历史记录)。配置 Key 后即可接入真实大模型。
| 功能 | 说明 |
|---|---|
| 📄 文档上传 | 支持 PDF、Word(.docx) |
| ✂️ 智能切片 | 递归按段落/句子切分,支持重叠窗口 |
| 🧬 Embedding | 本地模型 / OpenAI 兼容 API 可切换 |
| 🗄️ 向量数据库 | Chroma 持久化向量检索 |
| 🔍 RAG | 检索上下文 + 大模型生成,抑制幻觉 |
| 💬 多轮对话 | 基于 SQLite 保存会话上下文 |
| 🕘 历史记录 | 会话列表、消息回看、删除 |
| ⚡ 流式输出 | SSE 逐 token 返回(后端 + 前端) |
- 前端:Vue 3 + Vite,负责上传、对话、历史展示。
- 后端:FastAPI,提供上传 / 对话 / 历史 / 文档管理 API。
- 解析(PDF/Word)→ 切片 → Embedding → 写入 Chroma。
- 对话:检索相关切片 → 拼装 Prompt → 调用 LLM(流式)→ 回写历史。
- 存储:Chroma(向量库)+ SQLite(历史/文档登记)。
# 1. 准备环境变量
cp backend/.env.example backend/.env
# 按需编辑 backend/.env(如接入真实 LLM)
# 2. 启动
docker compose up -d --build
# 3. 访问
# 前端: http://localhost:8080
# 后端: http://localhost:8000/docs默认
LLM_PROVIDER=mock,无需 Key 即可演示。
# 后端
cd backend
python -m venv .venv && source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -r requirements.txt
cp .env.example .env
uvicorn app.main:app --reload --port 8000
# 前端(另开终端)
cd frontend
npm install
npm run dev # http://localhost:5173 (已代理 /api 到 8000)详见 docs/DEPLOY.md。
编辑 backend/.env:
| 配置 | 说明 |
|---|---|
EMBEDDING_PROVIDER |
local(默认)或 openai |
EMBEDDING_MODEL |
本地模型名或 OpenAI embedding 模型 |
LLM_PROVIDER |
mock(演示)或 openai |
LLM_API_KEY / LLM_API_BASE |
大模型密钥与兼容服务地址 |
CHUNK_SIZE / CHUNK_OVERLAP |
切片长度与重叠 |
TOP_K |
每次检索返回的切片数 |
Enterprise AI Assistant/
├── backend/ # FastAPI 后端
│ ├── app/
│ │ ├── api/ # 路由:upload / chat / history / documents
│ │ ├── core/ # embedding / vectorstore / chunker / llm / rag
│ │ ├── services/ # parser(解析) / history(历史)
│ │ ├── config.py
│ │ ├── schemas.py
│ │ └── main.py
│ ├── requirements.txt
│ └── Dockerfile
├── frontend/ # Vue 3 前端
│ ├── src/ # App.vue / api.js
│ ├── Dockerfile
│ └── nginx.conf
├── docs/ # API / 部署 / 架构文档
├── images/ # 架构图 / 演示 GIF
├── docker-compose.yml
└── README.md
MIT