检索-搜索-编排Skill retrieval-search-orchestration

该技能用于设计RAG系统中知识图谱的检索策略,包括检索模式选择、查询分解、排名配置和来源跟踪,以提高信息检索的准确性和可追溯性。关键词:检索策略、知识图谱、RAG、查询分解、来源跟踪、检索增强生成。

RAG应用 0 次安装 0 次浏览 更新于 3/22/2026

name: 检索-搜索-编排 description: 当设计用于检索增强生成(RAG)系统中知识图谱查询的检索策略时使用。当用户提到检索策略、搜索编排、全局优先检索、局部优先检索、U形检索、查询分解、多跳推理、来源跟踪或GraphRAG中的引用时调用。提供检索模式选择、查询重写和来源设计。

目录

检索与搜索编排

这是什么?

设计用于检索增强生成(RAG)系统中知识图谱查询的检索策略。该技能涵盖针对不同查询类型的模式选择、复杂多跳问题的查询分解、排名和约束配置,以及来源跟踪,以确保每个生成的答案都可以追溯到其源证据。

工作流程

复制此检查清单 并逐步完成每个步骤:

  • [ ] 1. 分析查询类型和需求
  • [ ] 2. 选择检索模式
  • [ ] 3. 设计查询分解策略
  • [ ] 4. 配置排名和约束
  • [ ] 5. 设计来源跟踪
  • [ ] 6. 定义回退策略
  • [ ] 7. 生成检索策略规范

步骤描述

步骤1:分析查询类型和需求

分类系统必须处理的查询。常见类别包括:

  • 事实查找:单实体、单跳(例如,“法国的首都是什么?”)
  • 探索性/主题性:需要跨多个实体聚合的广泛问题(例如,“这个文集中的主要主题是什么?”)
  • 多跳推理:需要遍历多个关系的问题(例如,“哪些药物治疗由基因X引起的疾病?”)
  • 时间查询:受时间范围限制或需要序列理解的问题
  • 约束查询:带有类型或属性过滤器的问题(例如,“列出2020年后药物Y的所有临床试验”)

识别使用案例中这些查询类型的分布,以指导模式选择。

步骤2:选择检索模式

使用下面的检索模式选择指南为您的查询分布选择正确的方法。有关每种模式的详细实施指导,请参见 resources/methodology.md

步骤3:设计查询分解策略

对于复杂查询,将其分解为可以独立解决然后聚合的子查询。方法包括LLM作为控制器分解、自问链和ReAct风格的交替推理和检索。有关详细信息,请参见下面的查询分解模式部分和 resources/methodology.md

步骤4:配置排名和约束

定义如何对检索结果进行评分、排名和过滤:

  • 嵌入相似度阈值
  • 图距离惩罚
  • 基于类型的预过滤器或后过滤器
  • 置信度分数最小值
  • 时间敏感数据的时间衰减函数

步骤5:设计来源跟踪

确保每一条检索到的信息都携带有关其来源的元数据。这包括源文档ID、提取时间戳、置信度分数和证据链构建。有关注释方法、置信度评分和LLM集成模式,请参见 resources/provenance-patterns.md

步骤6:定义回退策略

设计当主要检索失败或返回不足结果时的处理方式:

  • 迭代深化(扩展跳数)
  • 查询松弛(逐步移除约束)
  • 并行探索(同时尝试多种模式)
  • 优雅降级(返回带有置信度指示符的部分结果)

步骤7:生成检索策略规范

使用下面的输出模板编译完整规范。


检索模式选择指南

模式 最适合 机制 权衡 章节参考
全局优先 广泛的主题查询、文集级摘要 社区检测、摘要索引的自顶向下遍历 高层次覆盖;可能遗漏具体细节 3.1
局部优先 以实体为中心的查找、邻域探索 种子实体链接、带嵌入门的1-2跳邻域扩展 对已知实体高精度;范围有限 3.2
U形混合 需要广度和深度的复杂查询 从粗到细的双向搜索、自顶向下然后自底向上细化 最佳覆盖;更高的延迟和复杂性 3.3
查询分解 多跳推理、复合问题 LLM将查询分解为子查询、顺序检索、聚合 处理复杂问题;取决于分解质量 3.4
时间性 时间限制或序列依赖的查询 时间切片过滤、情节窗口化、时间衰减排名 捕捉时间动态;需要时间元数据 3.5
约束引导 类型过滤或规则约束的查询 预过滤器 + 向量搜索、符号查询然后神经重排 减少搜索空间;需要良好类型的模式 3.6

选择启发式:从系统中主导的查询类型开始。如果查询混合,考虑将U形混合作为默认,并回退到专门模式。


查询分解模式

LLM作为控制器

LLM接收原始查询并生成子查询计划:

原始: “哪些药物治疗与BRCA1突变相关的疾病?”
子查询1: “哪些疾病与BRCA1突变相关?”
子查询2: “哪些药物治疗[来自子查询1的疾病]?”
聚合: 结合结果,去重,按证据强度排名

自问链

模型迭代地向自己提问后续问题,每次检索后:

问: “公司X和技术Y之间的关系是什么?”
后续1: “公司X生产什么产品?” -> 检索
后续2: “哪些产品使用技术Y?” -> 检索
后续3: “X和Y提供商之间存在哪些合作伙伴关系?” -> 检索
合成: 将所有检索到的证据合并为最终答案

ReAct模式

交替推理和检索操作:

思考: 我需要找到实体A和实体C之间的连接
操作: 在KG中搜索A和C之间的路径(最多3跳)
观察: 通过关系R1和R2找到路径A -> B -> C
思考: 我应该用支持证据验证此路径
操作: 检索边A-B和B-C的源文档
观察: 边A-B由[doc1, doc2]支持,边B-C由[doc3]支持
答案: A通过B连接到C,由3个源文档支持

工具增强检索

生成正式查询(Cypher, SPARQL)进行结构化图遍历:

LLM生成: MATCH (d:药物)-[:治疗]->(dis:疾病)<-[:引起]-(g:基因 {name: 'BRCA1'})
               返回 d.name, dis.name, g.name
在图数据库中执行
用LLM后处理结果以获得自然语言答案

输出模板

# 检索策略规范

## 系统上下文
- **领域**: [例如,生物医学、法律、金融]
- **知识图谱类型**: [例如,属性图、RDF、混合]
- **主要查询类型**: [列出主导查询类别]
- **规模**: [近似节点/边计数、查询量]

## 检索模式
- **主要模式**: [从指南中选择的模式]
- **理由**: [为什么此模式适合查询分布]
- **次要/回退模式**: [如果适用]

## 查询分解
- **策略**: [LLM作为控制器 / 自问 / ReAct / 工具增强 / 无]
- **最大子查询**: [每个原始查询的限制]
- **聚合方法**: [并集 / 交集 / 排名合并 / LLM合成]

## 排名与约束
- **相似度阈值**: [最小嵌入相似度分数]
- **最大跳距离**: [最大图遍历深度]
- **类型过滤器**: [实体/关系类型约束]
- **时间约束**: [时间窗口、衰减函数]
- **置信度最小值**: [包含的最小源置信度]

## 来源设计
- **注释方法**: [元数据字段 / 证据节点 / 命名图 / 具体化]
- **置信度评分**: [源可靠性层级、聚合规则]
- **引用格式**: [内联 / 事后 / 两者]
- **冲突解决**: [时间戳优先级 / 源权威性 / LLM裁决]

## 回退策略
- **主要回退**: [迭代深化 / 查询松弛 / 并行探索]
- **最大重试深度**: [回退尝试次数]
- **降级策略**: [带有置信度的部分结果 / 明确不确定性 / 升级]

## 评估标准
- 参考: `resources/evaluators/rubric_retrieval.json`
- **目标分数**: [最小可接受加权分数]