feat: 用 Ragflow 搭建鲜境方案客服

咨询台接 Ragflow 检索与示例知识库,支持追问、判定、引用和留资。

Co-authored-by: haijd <haijd@163.com>
This commit is contained in:
Cursor Agent
2026-09-20 01:08:11 +00:00
co-authored by haijd
parent 9c6afcb61a
commit b7bd830da7
20 changed files with 925 additions and 258 deletions
+28 -35
View File
@@ -1,51 +1,44 @@
# 鲜境方案引擎 · 通用原型(需求未定稿版)
# 鲜境物联 · AI 智能客服
业务规则还在变时:**先搭可配置原型,再按真实需求改 YAML,而不是先写死后台。**
用 **Ragflow** 做知识库检索,用本仓库的方案引擎做「追问 → 判定 → 出方案 → 留资」。
## 策略
线上咨询台:[鲜境智能客服](http://127.0.0.1:3847/)
Ragflow 控制台:[Ragflow](http://127.0.0.1:18080/)
1. 先跑通:多轮追问(槽位)→ 判定树出组合 → 检索补依据 → 出方案草稿
2. 槽位 / 判定树 / 示例知识 **全部外置配置**,需求变了主要改配置
3. 检索默认 **Mock**(不依赖本机 Ragflow);有 Ragflow 后改环境变量即可接真库
4. 不做大而全后台;控制台能聊天验证闭环即可
示例产品资料在 `knowledge/corpus/`,型号是占位,等甲方资料替换。判定规则在 `knowledge/decision_tree.yaml`,由业务方定对错。
## 本仓库原型包含
## 本机已经怎么跑
| 路径 | 作用 |
|------|------|
| `engine/` | FastAPI 方案引擎 + 简易聊天页 |
| `knowledge/` | `slots.yaml` / `decision_tree.yaml` / 示例检索片段 |
| `docs/Ragflow实施方案.md` | 完整架构说明 |
1. Ragflow v0.27.1 用 Docker 起在 `/opt/ragflow/docker`(内存已调低,适配约 16GB 以下的机器)。
2. `scripts/bootstrap_ragflow.py` 注册管理员、建 `products` / `solutions` / `faqs`,灌入语料并写 `.env`。
3. 方案引擎读 `.env` 里的 API Key 与数据集 ID,检索走 `POST /api/v1/retrieval`。
## 快速启动
## 自己重来一遍
```bash
# 1. 起 Ragflow(首次会拉镜像)
cd /opt/ragflow/docker
sudo docker compose -f docker-compose.yml up -d
# 2. 若容器互相连不上(日志里 MySQL timeout),补网桥转发后重启 ragflow
bash scripts/fix_docker_forward.sh
cd /opt/ragflow/docker && sudo docker restart docker-ragflow-cpu-1
cd /workspace
python3 -m venv .venv
source .venv/bin/activate
pip install -r engine/requirements.txt
python scripts/bootstrap_ragflow.py
# 3. 咨询台
uvicorn engine.app.main:app --host 0.0.0.0 --port 3847
```
打开:[方案引擎原型](http://127.0.0.1:3847/)
没有 Docker 时可以把 `.env` 里的 `RETRIEVAL_BACKEND` 改成 `mock`,只用本地示例片段演示对话,不代表知识库已接通。
健康检查:`GET /api/health`
重载业务配置:`POST /api/admin/reload-config`(改完 YAML 不用重启进程时用)
## 目录
## 接真 Ragflow(稍后)
```bash
export RETRIEVAL_BACKEND=ragflow
export RAGFLOW_BASE_URL=http://127.0.0.1:9380
export RAGFLOW_API_KEY=...
export RAGFLOW_DATASET_IDS=...
```
未配置时保持 `RETRIEVAL_BACKEND=mock`。
## 需求清晰后怎么补
1. 改 `knowledge/slots.yaml`(追问项)
2. 改 `knowledge/decision_tree.yaml`(推荐规则)
3. 灌真实资料进 Ragflow,切 `ragflow` 后端
4. 再加渠道 Webhook / 转人工 / Eval,而不是推倒重来
| 路径 | 作用 |
|------|------|
| `engine/` | 咨询 API 与页面 |
| `knowledge/` | 槽位、判定树、灌库语料 |
| `scripts/bootstrap_ragflow.py` | 对接 Ragflow 建库 |
| `docs/` | 选型与实施说明 |