name: query_knowledge_graph description: 在对话的知识图谱中查询信息。支持多种查询模式:naive(简单查询)、local(本地图谱查询)、global(全局查询)、mix(混合查询)。
知识图谱查询工具
用途
当用户询问与上传文档相关的问题时,使用此工具从知识图谱中检索相关信息。
触发条件
当用户表达以下意图时,应该使用此工具:
- 询问文档内容:"文档里说了什么?"、"关于 XX 的内容是什么?"
- 查找特定信息:"谁是作者?"、"这个概念的定义是什么?"
- 需要基于文档回答问题时
参数说明
| 参数 | 类型 | 必需 | 说明 |
|---|---|---|---|
| query | string | 是 | 查询文本 |
| mode | string | 否 | 查询模式,可选值: naive, local, global, mix。默认: mix |
查询模式详解
1. naive - 简单查询
- 原理: 直接检索相关文本块(Chunk-based)
- 适用场景: 简单的事实性问题,如"XX 是什么?"
2. local - 本地图谱查询
- 原理: 基于实体和关系的图遍历
- 适用场景: 查询实体之间的关系,如"A 和 B 有什么关系?"
3. global - 全局查询
- 原理: 综合整个文档的高层次摘要
- 适用场景: 需要全局视角的问题,如"这篇论文的主要贡献是什么?"
4. mix - 混合查询 (默认)
- 原理: 结合 local 和 global 的结果
- 适用场景: 大多数通用问题
- 推荐: 不确定时使用此模式
使用规则
1. 默认使用 mix 模式
除非用户有特定需求,否则默认使用 mix 模式。
2. 处理无文档情况
如果对话中没有文档,工具会返回 status: "info",此时应使用通用知识回答。
3. 引用来源
查询结果中的 file_id 和 page_index 用于引用标注,格式:[[file_id|page_index]]
示例
示例 1: 通用问题
用户: "这篇文档讲了什么?"
调用: query_knowledge_graph({"query": "这篇文档的主要内容和主题", "mode": "mix"})
示例 2: 实体关系查询
用户: "神经网络和深度学习有什么关系?"
调用: query_knowledge_graph({"query": "神经网络与深度学习的关系", "mode": "local"})
返回格式
{
"status": "success",
"message": "查询完成(模式: mix),找到 5 个实体,3 个关系,2 个文本块",
"result": "格式化的查询结果文本",
"raw_data": {
"entities": [...],
"relationships": [...],
"chunks": [...]
},
"mode": "mix",
"query": "原始查询文本"
}