retrieval-search-orchestration について
テーマ型、マルチホップ、時間指定、制約付きのクエリを含む検索戦略を設計するスキルです。パターン選択、クエリ分解、ランキング、出典追跡、フォールバックを段階的に整理します。
主な機能
- 01クエリタイプの分析
- 02検索パターンの選択
- 03複雑なクエリの分解
- 04ランキングと制約の設計
- 05出典情報の追跡
- 06フォールバック戦略の計画
活用シーン
- 01複合的なクエリに適した検索方式の選択
- 02マルチホップ検索の計画
- 03出典と信頼度のメタデータ定義
- 04検索結果が不十分な場合の対応設計
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ lyndonkl/ claude --skill retrieval-search-orchestrationインストール後、Claude Code で/retrieval-search-orchestrationを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
resources/methodology.mdprovenance-patterns.mdresources/evaluators/rubric_retrieval.json詳細
目次
検索と取得のオーケストレーション
ワークフロー
このチェックリストをコピーし、各ステップに取り組んでください。
- 1. クエリの種類と要件を分析する
- 2. 検索パターンを選択する
- 3. クエリ分解戦略を設計する
- 4. ランキングと制約を設定する
- 5. 出所追跡を設計する
- 6. フォールバック戦略を定義する
- 7. 検索戦略の仕様を作成する
ステップの説明
ステップ 1:クエリの種類と要件を分析する
システムで処理する必要があるクエリを分類します。一般的なカテゴリは次のとおりです。
- 事実に関する検索:単一エンティティ、単一ホップのクエリ(例:「フランスの首都はどこですか?」)
- 探索的/テーマ的なクエリ:多数のエンティティにわたる集約が必要な幅広い質問(例:「このコーパスの主なテーマは何ですか?」)
- マルチホップ推論:複数の関係をたどる必要がある質問(例:「遺伝子 X が原因となる疾患を治療する薬はどれですか?」)
- 時間に関するクエリ:期間が指定されている、または順序の理解が必要な質問
- 制約付きクエリ:型や属性によるフィルターを含む質問(例:「薬 Y を対象とする 2020 年以降の臨床試験をすべて列挙してください」)
ユースケースにおけるこれらのクエリの種類の分布を特定し、パターン選択の指針にします。
ステップ 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が元のクエリを受け取り、サブクエリの計画を生成します。
Original: "Which drugs treat diseases linked to mutations in BRCA1?"
Sub-query 1: "What diseases are linked to mutations in BRCA1?"
Sub-query 2: "What drugs treat [diseases from sub-query 1]?"
Aggregation: Combine results, deduplicate, rank by evidence strength
自問連鎖
モデルが反復的に自分自身へ追加の質問を行い、その都度検索します。
Q: "What is the relationship between company X and technology Y?"
Follow-up 1: "What products does company X produce?" -> retrieve
Follow-up 2: "Which of those products use technology Y?" -> retrieve
Follow-up 3: "What partnerships exist between X and Y providers?" -> retrieve
Synthesize: Combine all retrieved evidence into final answer
ReActパターン
推論と検索アクションを交互に行います。
Thought: I need to find the connection between entity A and entity C
Action: Search KG for paths between A and C (max 3 hops)
Observation: Found path A -> B -> C via relationship R1 and R2
Thought: I should verify this path with supporting evidence
Action: Retrieve source documents for edges A-B and B-C
Observation: Edge A-B supported by [doc1, doc2], edge B-C supported by [doc3]
Answer: A connects to C through B, supported by 3 source documents
ツール拡張検索
構造化グラフの走査に使う形式クエリ(Cypher、SPARQL)を生成します。
LLM generates: MATCH (d:Drug)-[:TREATS]->(dis:Disease)<-[:CAUSES]-(g:Gene {name: 'BRCA1'})
RETURN d.name, dis.name, g.name
Execute against graph database
Post-process results with LLM for natural language answer
出力テンプレート
# Retrieval Strategy Specification
## System Context
- **Domain**: [e.g., biomedical, legal, financial]
- **Knowledge Graph Type**: [e.g., property graph, RDF, hybrid]
- **Primary Query Types**: [list dominant query categories]
- **Scale**: [approximate node/edge counts, query volume]
## Retrieval Pattern
- **Primary Pattern**: [selected pattern from guide]
- **Rationale**: [why this pattern fits the query distribution]
- **Secondary/Fallback Pattern**: [if applicable]
## Query Decomposition
- **Strategy**: [LLM-as-controller / self-ask / ReAct / tool-augmented / none]
- **Max Sub-queries**: [limit per original query]
- **Aggregation Method**: [union / intersection / ranked merge / LLM synthesis]
## Ranking & Constraints
- **Similarity Threshold**: [minimum embedding similarity score]
- **Max Hop Distance**: [maximum graph traversal depth]
- **Type Filters**: [entity/relationship type constraints]
- **Temporal Constraints**: [time windows, decay functions]
- **Confidence Minimum**: [minimum source confidence for inclusion]
## Provenance Design
- **Annotation Method**: [metadata fields / evidence nodes / named graphs / reification]
- **Confidence Scoring**: [source reliability tiers, aggregation rules]
- **Citation Format**: [inline / post-hoc / both]
- **Conflict Resolution**: [timestamp priority / source authority / LLM adjudication]
## Fallback Strategy
- **Primary Fallback**: [iterative deepening / query relaxation / parallel exploration]
- **Max Retry Depth**: [number of fallback attempts]
- **Degradation Policy**: [partial results with confidence / explicit uncertainty / escalation]
## Evaluation Criteria
- Reference: `resources/evaluators/rubric_retrieval.json`
- **Target Score**: [minimum acceptable weighted score]