203 lines
5.8 KiB
Markdown
203 lines
5.8 KiB
Markdown
|
|
# 元数据 + 意图识别 + 话术流程关联操作文档
|
|||
|
|
|
|||
|
|
## 1. 目标
|
|||
|
|
|
|||
|
|
本文用于指导运营/配置人员在管理界面完成以下闭环:
|
|||
|
|
1. 配置元数据字段
|
|||
|
|
2. 录入知识库文档并标注元数据
|
|||
|
|
3. 配置意图规则(触发路由)
|
|||
|
|
4. 配置话术流程(多轮推进)
|
|||
|
|
5. 打通“意图 -> 检索/流程 -> 话术生成”
|
|||
|
|
|
|||
|
|
适用对象:产品、运营、实施、测试。
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 2. 概念关系(先理解)
|
|||
|
|
|
|||
|
|
- **元数据(Metadata)**:用于“筛选与路由”的标签,如 `grade`、`subject`、`scene`。
|
|||
|
|
- **意图规则(Intent Rule)**:用于判断“用户在说什么、系统该做什么”。
|
|||
|
|
- **话术流程(Script Flow)**:用于处理“多轮引导”,例如收集年级 -> 收集薄弱点 -> 推荐课程。
|
|||
|
|
|
|||
|
|
**执行链路**:
|
|||
|
|
|
|||
|
|
用户消息 -> 意图匹配 ->
|
|||
|
|
- 命中 `response_type=rag`:进入知识库检索(带 metadata filter)
|
|||
|
|
- 命中 `response_type=flow`:进入话术流程
|
|||
|
|
- 命中 `fixed/transfer`:直接固定回复或转人工
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 3. 第一步:配置元数据字段
|
|||
|
|
|
|||
|
|
进入:`元数据配置` 页面 -> 新建字段。
|
|||
|
|
|
|||
|
|
建议首批字段(教育场景):
|
|||
|
|
- `grade`(枚举):初一/初二/初三/all
|
|||
|
|
- `subject`(枚举):语文/数学/英语/物理/化学/综合/all
|
|||
|
|
- `scene`(枚举):pain_point/transition/module_intro/faq/policy/closing
|
|||
|
|
- `flow_step`(枚举):step1/step2/step3/step4/step5/none
|
|||
|
|
- `intent_type`(枚举):ask_grade/ask_weak_point/module_recommend/next_action/faq_answer/compliance
|
|||
|
|
- `audience`(枚举):parent/student/all
|
|||
|
|
- `priority`(数字):1-10
|
|||
|
|
- `status`(枚举):draft/active/deprecated
|
|||
|
|
|
|||
|
|
字段配置建议:
|
|||
|
|
- `是否必填`:`grade/subject/scene/status` 建议必填
|
|||
|
|
- `可过滤`:上述字段建议全部开启
|
|||
|
|
- `排序特征`:仅 `priority` 建议开启
|
|||
|
|
- `状态`:配置完成后由 `草稿 -> 激活`
|
|||
|
|
|
|||
|
|
注意:字段标识只用小写字母/数字/下划线,避免后续过滤失败。
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 4. 第二步:录入知识库文档并打元数据
|
|||
|
|
|
|||
|
|
进入:`知识库文档` 页面 -> 新增文档。
|
|||
|
|
|
|||
|
|
### 4.1 文档内容规范(你当前按行分块)
|
|||
|
|
- 一行一个知识点
|
|||
|
|
- 每行尽量只表达一个事实或一个建议
|
|||
|
|
- 避免一行过长(建议 20~80 字)
|
|||
|
|
|
|||
|
|
### 4.2 元数据填写规范
|
|||
|
|
示例(初一痛点文档):
|
|||
|
|
- `grade=初一`
|
|||
|
|
- `subject=综合`
|
|||
|
|
- `scene=pain_point`
|
|||
|
|
- `flow_step=step2`
|
|||
|
|
- `intent_type=ask_weak_point`
|
|||
|
|
- `audience=parent`
|
|||
|
|
- `status=active`
|
|||
|
|
- `priority=8`
|
|||
|
|
|
|||
|
|
### 4.3 无年级、仅学科的数据怎么填
|
|||
|
|
- `grade=all`
|
|||
|
|
- `subject=语文/数学/...`
|
|||
|
|
- 其余按场景填写
|
|||
|
|
|
|||
|
|
不建议因为“无年级”单独新建知识库,优先通过文档+metadata区分。
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 5. 第三步:配置意图规则(路由入口)
|
|||
|
|
|
|||
|
|
进入:`意图规则` 页面 -> 新建规则。
|
|||
|
|
|
|||
|
|
### 5.1 必填项
|
|||
|
|
- 名称
|
|||
|
|
- `keywords`(关键词)和/或 `patterns`(正则)
|
|||
|
|
- `response_type`:fixed / rag / flow / transfer
|
|||
|
|
- 优先级
|
|||
|
|
|
|||
|
|
### 5.2 推荐路由策略
|
|||
|
|
- 课程咨询、薄弱点分析 -> `response_type=flow`
|
|||
|
|
- 短问短答(价格、班型) -> `response_type=rag` 或 `fixed`
|
|||
|
|
- 明确转人工 -> `response_type=transfer`
|
|||
|
|
|
|||
|
|
### 5.3 metadata 关联
|
|||
|
|
在意图规则 metadata 中建议填写:
|
|||
|
|
- `scene`
|
|||
|
|
- `grade`(可选)
|
|||
|
|
- `subject`(可选)
|
|||
|
|
|
|||
|
|
用于后续检索过滤增强。
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 6. 第四步:配置话术流程(与意图绑定)
|
|||
|
|
|
|||
|
|
进入:`话术流程` 页面 -> 新建或编辑流程。
|
|||
|
|
|
|||
|
|
### 6.1 你当前推荐流程(示例)
|
|||
|
|
- Step1:确认年级
|
|||
|
|
- Step2:年级特点 + 过渡到薄弱点
|
|||
|
|
- Step3:确认薄弱科目/能力点
|
|||
|
|
- Step4:针对薄弱点介绍课程模块
|
|||
|
|
- Step5:给出下一步建议
|
|||
|
|
|
|||
|
|
### 6.2 每步建议配置
|
|||
|
|
- `script_mode = flexible`
|
|||
|
|
- 配置 `intent` / `intent_description`
|
|||
|
|
- 配置 `script_constraints`
|
|||
|
|
- 配置 `fallback content`
|
|||
|
|
- 配置 `expected_variables`(如 `grade`, `weak_points`)
|
|||
|
|
|
|||
|
|
### 6.3 与知识库关联方式
|
|||
|
|
- 在流程步骤中通过 `rag_config.tag_filter` 或上下文变量注入过滤(如 `grade`, `subject`, `scene`)
|
|||
|
|
- Step2 常用 `scene=pain_point`
|
|||
|
|
- Step4 常用 `scene=module_intro`
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 7. 第五步:关联关系配置清单(上线前检查)
|
|||
|
|
|
|||
|
|
### 7.1 意图 -> 流程
|
|||
|
|
- 已有意图规则 `response_type=flow`
|
|||
|
|
- `flow_id` 指向正确流程
|
|||
|
|
|
|||
|
|
### 7.2 意图/上下文 -> 检索
|
|||
|
|
- 命中 `response_type=rag` 或流程步骤需要RAG时
|
|||
|
|
- metadata filter 至少包含 `grade/subject/scene` 之一
|
|||
|
|
|
|||
|
|
### 7.3 文档 -> 检索命中
|
|||
|
|
- 文档已 `status=active`
|
|||
|
|
- 文档 metadata 与过滤字段一致(值完全一致)
|
|||
|
|
- 文档内容按行分块且可检索
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 8. 验收用例(建议)
|
|||
|
|
|
|||
|
|
### 用例1:初一家长咨询
|
|||
|
|
输入:`孩子刚上初一,成绩上不去怎么办?`
|
|||
|
|
期望:
|
|||
|
|
1. 命中课程咨询意图
|
|||
|
|
2. 进入 flow(或rag+flow)
|
|||
|
|
3. 检索优先命中 `grade=初一` 且 `scene=pain_point` 文档
|
|||
|
|
|
|||
|
|
### 用例2:仅学科问题
|
|||
|
|
输入:`语文阅读理解总是丢分`
|
|||
|
|
期望:
|
|||
|
|
1. 命中学科提升相关意图
|
|||
|
|
2. 检索命中 `subject=语文`、`grade=all` 或当前年级内容
|
|||
|
|
|
|||
|
|
### 用例3:无召回兜底
|
|||
|
|
输入:冷门问题且无相关文档
|
|||
|
|
期望:
|
|||
|
|
1. 返回 fallback 话术
|
|||
|
|
2. 记录无召回原因(便于补文档)
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 9. 常见问题与处理
|
|||
|
|
|
|||
|
|
1. **有文档但检索不到**
|
|||
|
|
- 检查 metadata 值是否一致(如“初一” vs “七年级”)
|
|||
|
|
- 检查字段是否可过滤、状态是否 active
|
|||
|
|
|
|||
|
|
2. **命中不准,答非所问**
|
|||
|
|
- 缩小意图规则关键词
|
|||
|
|
- 增加 metadata 过滤条件
|
|||
|
|
- 拆分长行文本为更原子知识点
|
|||
|
|
|
|||
|
|
3. **是否要新增知识库**
|
|||
|
|
- 先不拆库,优先文档+metadata
|
|||
|
|
- 仅当串库严重/权限隔离/规模过大再拆
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 10. 运营维护建议
|
|||
|
|
|
|||
|
|
- 每周复盘:
|
|||
|
|
- 高频命中问题
|
|||
|
|
- 无召回问题
|
|||
|
|
- 错召回问题
|
|||
|
|
- 按复盘结果更新:
|
|||
|
|
- 意图规则关键词与优先级
|
|||
|
|
- 文档内容与metadata
|
|||
|
|
- 流程约束与fallback
|
|||
|
|
|
|||
|
|
目标:持续提高“命中率、相关性、可用率”。
|