nianjie/dialog/README.md
2026-01-11 18:52:11 +08:00

80 lines
3.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 念界智能客服RAG 版)
## 项目概览
- 前端Vue3 + Vite提供 FAQ 引导、AI 客服对话与会话列表。
- 后端Flask流式调用大模型并通过本地 MiniRAG 做检索。
- 数据:单一文件 `data/qa.json`问答成对存储RAG 与 FAQ 共用。
- 模型:本地向量模型 `bge-small-zh-v1.5`**未纳入仓库**,需自行放置)。
## 目录结构(关键部分)
```
app.py # Flask 入口
backend/ # 后端逻辑
rag.py # MiniRAG 接入(内置轻量存储补丁)
routes/ # /api/chat, /api/faq, /api/conversations
config.py # 配置,依赖环境变量 OPENAI_API_KEY 等
data/
qa.json # 唯一问答库(需保留)
frontend/ # 前端源码dist 为构建产物
requirements.txt # 后端依赖
.gitignore # 已排除 node_modules、对话历史、cache、模型等
```
## 准备工作
1. **模型文件**(需自备,不随仓库)
`bge-small-zh-v1.5` 放到 `minirag/minirag/models/`(相对路径:`../minirag/minirag/models/bge-small-zh-v1.5`,即与本项目同级的 `minirag` 目录)。
2. **数据文件**
确保 `data/qa.json` 在仓库中(已包含)。不要删除或更名。
3. **Python 依赖**(建议 Python 3.9+
```bash
python3 -m venv .venv
source .venv/bin/activate
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt
```
说明:`backend/rag.py` 内置对 pip 版 `minirag-hku` 的补丁(轻量存储),无需额外修改源码。
4. **环境变量**
- `OPENAI_API_KEY`Kimi/OpenAI 兼容接口密钥
- 可选:`OPENAI_BASE_URL`(默认 `https://api.moonshot.cn/v1`)、`MODEL_NAME`(默认 `kimi-k2-turbo-preview`
## 运行
### 后端
```bash
source .venv/bin/activate
python app.py # 默认 0.0.0.0:8081
```
### 前端
开发模式:
```bash
cd frontend
npm install
npm run dev
```
生产构建:
```bash
cd frontend
npm run build # 产物在 frontend/dist
```
Flask 会直接将 `frontend/dist` 作为静态资源目录。
## RAG 行为说明
- 问答索引来源:`data/qa.json` 中的每条 Q/A 被拼成一个 chunk“Q{id}:问题\nA答案”无额外切片。
- 前端 FAQ 与 AI 客服工具调用都使用同一套检索:
- FAQ有查询词时取前 10 条;无查询词返回固定 Top 问题列表。
- AI 客服:模型工具调用 `search_rag`,返回前 5 条匹配,模型据此作答。
- 无回退机制:检索失败或空结果时,模型按系统提示输出“问题待补充”。
## 不纳入仓库的内容
- 模型目录:`minirag/minirag/models/bge-small-zh-v1.5/`
- 向量/索引缓存:`minirag_cache/`
- 会话历史:`data/conversations/`(如存在)
- node_modules`frontend/node_modules/`
## 常见问题
- **导入 minirag 报缺少 kg 模块**:已在 `backend/rag.py` 内注入简化存储实现,无需改动,只要安装依赖即可。
- **检索为空**:确认 `data/qa.json` 存在且内容正确;模型路径正确;首次运行会自动重建索引。
## 部署要点
- 仅需把代码、`data/qa.json`、前端构建产物(或源码)同步到服务器;模型需单独放置在指定路径。
- 设置 `OPENAI_API_KEY` 环境变量后,启动后端即可。