feat(memory_tools): 优化多角度查询生成策略,精简查询内容,去除冗余信息
This commit is contained in:
@@ -966,19 +966,28 @@ class MemoryTools:
|
||||
|
||||
## 第二步:生成多角度查询
|
||||
|
||||
### ⚠️ 核心原则:精简查询,只保留核心查询内容
|
||||
|
||||
**重要**:生成的查询必须尽可能精简,去除冗余信息,只保留核心查询对象。
|
||||
|
||||
- ✅ 正确示例:"小王询问小明小刚是谁" → 查询"小刚" 或 "小刚是谁"(只查询被问的对象,忽略询问者小王和被询问者小明)
|
||||
- ❌ 错误示例:"小王询问小明小刚是谁" → 查询"小王询问小明小刚是谁"(包含了无关的询问者信息)
|
||||
- ✅ 正确示例:"告诉我张三的配置" → 查询"张三配置"(去除"告诉我"等冗余)
|
||||
- ❌ 错误示例:"告诉我张三的配置" → 查询"告诉我张三的配置"(保留了无关的动作词)
|
||||
|
||||
### 分析原则
|
||||
1. **上下文理解**:根据聊天历史理解查询的真实意图
|
||||
1. **核心提取优先**:识别查询的核心对象(被查询的实体/概念),忽略询问者、动作词等修饰成分
|
||||
2. **指代消解**:识别并代换"他"、"她"、"它"、"那个"等指代词为具体实体名
|
||||
3. **话题关联**:结合最近讨论的话题生成更精准的查询
|
||||
4. **查询分解**:对复杂查询分解为多个子查询
|
||||
5. **实体提取**:显式提取查询中的关键实体(人名、项目名、组织名等)
|
||||
3. **上下文理解**:根据聊天历史理解查询的真实意图
|
||||
4. **去除冗余**:删除"告诉我"、"我想知道"、"请问"、"谁问"等无关动作词和修饰词
|
||||
5. **实体聚焦**:对于复合查询,只保留被查询的核心实体(不包括询问者)
|
||||
|
||||
### 生成策略(按顺序)
|
||||
1. **完整查询**(权重1.0):结合上下文的完整查询,包含指代消解后的实体名
|
||||
2. **关键实体查询**(权重0.9):只包含核心实体,去除修饰词(如"xxx的"→"xxx")
|
||||
3. **同义表达查询**(权重0.8):用不同表达方式重述查询意图
|
||||
4. **话题扩展查询**(权重0.7):基于最近聊天话题的相关查询
|
||||
5. **时间范围查询**(权重0.6,如适用):如果涉及时间,生成具体时间范围
|
||||
1. **核心查询**(权重1.0):只包含被查询的核心实体/概念,已去除所有冗余信息
|
||||
2. **关键实体查询**(权重0.9):核心实体的简化形式(如"小刚是谁"→"小刚")
|
||||
3. **同义表达查询**(权重0.8):用不同表达方式重述核心查询意图
|
||||
4. **话题扩展查询**(权重0.7):基于最近聊天话题的相关查询(可选)
|
||||
5. **时间范围查询**(权重0.6,如适用):如果涉及时间,生成具体时间范围(可选)
|
||||
|
||||
---
|
||||
|
||||
@@ -988,22 +997,23 @@ class MemoryTools:
|
||||
{{
|
||||
"prefer_node_types": ["REFERENCE", "ATTRIBUTE"],
|
||||
"queries": [
|
||||
{{"text": "完整查询(已消解指代)", "weight": 1.0}},
|
||||
{{"text": "核心实体查询", "weight": 0.9}},
|
||||
{{"text": "同义表达查询", "weight": 0.8}}
|
||||
{{"text": "核心查询(已精简,去除冗余)", "weight": 1.0}},
|
||||
{{"text": "核心实体", "weight": 0.9}},
|
||||
{{"text": "同义表达", "weight": 0.8}}
|
||||
]
|
||||
}}
|
||||
```
|
||||
|
||||
**字段说明**:
|
||||
- `prefer_node_types`: 偏好的节点类型数组,可选值:`REFERENCE`、`ATTRIBUTE`、`ENTITY`、`RELATION`、`EVENT`,如无明确特征则为空数组`[]`
|
||||
- `queries`: 查询数组,每个查询包含`text`(查询文本)和`weight`(权重0.5-1.0)
|
||||
- `queries`: 查询数组,每个查询包含`text`(查询文本,必须精简)和`weight`(权重0.5-1.0)
|
||||
- **重要**:`text`字段必须只包含核心查询对象,不得包含询问者、动作词等冗余信息
|
||||
|
||||
---
|
||||
|
||||
## 示例
|
||||
|
||||
### 示例1:查询文档地址
|
||||
### 示例1:查询文档地址(精简查询)
|
||||
**输入**:
|
||||
- 查询:"你知道MoFox-Bot的文档地址吗?"
|
||||
- 聊天历史:无
|
||||
@@ -1014,32 +1024,33 @@ class MemoryTools:
|
||||
"prefer_node_types": ["REFERENCE"],
|
||||
"queries": [
|
||||
{{"text": "MoFox-Bot文档地址", "weight": 1.0}},
|
||||
{{"text": "MoFox-Bot", "weight": 0.9}},
|
||||
{{"text": "MoFox-Bot官方文档URL", "weight": 0.8}}
|
||||
{{"text": "MoFox-Bot文档", "weight": 0.9}},
|
||||
{{"text": "MoFox-Bot官方文档", "weight": 0.8}}
|
||||
]
|
||||
}}
|
||||
```
|
||||
|
||||
### 示例2:查询人物关系
|
||||
### 示例2:查询人物(精简查询,去除询问者)
|
||||
**输入**:
|
||||
- 查询:"拾风是谁?"
|
||||
- 聊天历史:提到过"拾风和杰瑞喵"
|
||||
- 查询:"小王问小明小刚是谁?"
|
||||
- 聊天历史:无
|
||||
|
||||
**输出**:
|
||||
```json
|
||||
{{
|
||||
"prefer_node_types": ["ENTITY", "RELATION"],
|
||||
"prefer_node_types": ["ENTITY"],
|
||||
"queries": [
|
||||
{{"text": "拾风身份信息", "weight": 1.0}},
|
||||
{{"text": "拾风", "weight": 0.9}},
|
||||
{{"text": "拾风和杰瑞喵的关系", "weight": 0.8}}
|
||||
{{"text": "小刚是谁", "weight": 1.0}},
|
||||
{{"text": "小刚", "weight": 0.9}},
|
||||
{{"text": "小刚身份", "weight": 0.8}}
|
||||
]
|
||||
}}
|
||||
```
|
||||
**注意**:只查询核心对象"小刚",去除了询问者"小王"和被询问者"小明"。
|
||||
|
||||
### 示例3:查询配置参数
|
||||
### 示例3:查询配置参数(去除动作词)
|
||||
**输入**:
|
||||
- 查询:"Python版本是多少?"
|
||||
- 查询:"告诉我Python版本是多少?"
|
||||
- 聊天历史:讨论过"项目环境配置"
|
||||
|
||||
**输出**:
|
||||
@@ -1047,14 +1058,15 @@ class MemoryTools:
|
||||
{{
|
||||
"prefer_node_types": ["ATTRIBUTE"],
|
||||
"queries": [
|
||||
{{"text": "Python版本号", "weight": 1.0}},
|
||||
{{"text": "Python配置", "weight": 0.9}},
|
||||
{{"text": "项目Python环境版本", "weight": 0.8}}
|
||||
{{"text": "Python版本", "weight": 1.0}},
|
||||
{{"text": "Python", "weight": 0.9}},
|
||||
{{"text": "项目Python版本", "weight": 0.8}}
|
||||
]
|
||||
}}
|
||||
```
|
||||
**注意**:去除了"告诉我"这类无关动作词,只保留核心查询对象。
|
||||
|
||||
### 示例4:回忆对话(无明确类型)
|
||||
### 示例4:回忆对话(结合上下文精简)
|
||||
**输入**:
|
||||
- 查询:"我们上次聊了什么?"
|
||||
- 聊天历史:最近讨论"记忆系统优化"
|
||||
@@ -1064,12 +1076,13 @@ class MemoryTools:
|
||||
{{
|
||||
"prefer_node_types": ["EVENT"],
|
||||
"queries": [
|
||||
{{"text": "最近对话内容", "weight": 1.0}},
|
||||
{{"text": "记忆系统优化讨论", "weight": 0.9}},
|
||||
{{"text": "上次聊天记录", "weight": 0.8}}
|
||||
{{"text": "最近对话", "weight": 1.0}},
|
||||
{{"text": "记忆系统优化", "weight": 0.9}},
|
||||
{{"text": "上次聊天", "weight": 0.8}}
|
||||
]
|
||||
}}
|
||||
```
|
||||
**注意**:查询已精简,结合上下文聚焦到核心话题。
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user