RAG Pipeline Builder について
RAG Pipeline Builderは、独自データでLLMの回答を補強するRAGシステムの設計・実装を支援するスキルです。文書取り込み、チャンク化、検索、生成に加え、最適化と評価も扱います。
主な機能
- 01RAGシステムの設計
- 02文書取り込みとチャンク化の構築
- 03埋め込み生成とベクトル保存
- 04ハイブリッド検索と再ランキングの最適化
- 05検索・生成品質の評価
活用シーン
- 01ドキュメントQ&Aボットの構築
- 02顧客サポートへの専門データ活用
- 03ベクトル検索の関連性改善
- 04本番RAG品質の評価
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ eddiebe147/ claude-settings --skill rag-pipeline-builderインストール後、Claude Code で/rag-pipeline-builderを入力して読み込まれたか確認します。
詳細
RAG パイプラインビルダー
RAG パイプラインビルダーのスキルでは、独自のデータから関連するコンテキストを取得して LLM の応答を強化する、検索拡張生成システムの設計と実装を支援します。RAG は大規模言語モデルの力と情報検索の精度を組み合わせ、ハルシネーションを抑え、非公開、最新、または特定の分野に関する知識を AI が活用できるようにします。
このスキルでは、ドキュメントの取り込み、チャンク分割の戦略、埋め込みの生成、ベクトルストレージ、検索の最適化、コンテキストの挿入、応答の生成まで、RAG スタック全体を扱います。精度、レイテンシ、コスト、規模に関する具体的な要件に基づいて、各段階で情報に基づいた判断を下せるよう支援します。
ドキュメントの Q&A ボット、カスタマーサポートシステム、エンタープライズ向けナレッジアシスタントのいずれを構築する場合も、このスキルにより、本番環境のベストプラクティスに沿った RAG 実装が可能になります。
主なワークフロー
ワークフロー 1:RAG アーキテクチャの設計
- 要件を定義します:
- データソースと形式
- クエリの種類とパターン
- 精度要件
- レイテンシの予算
- 想定される規模
- コンポーネントを選択します:
- ドキュメントローダー
- チャンク分割の戦略
- 埋め込みモデル
- ベクトルデータベース
- 生成用 LLM
- 再ランキング層(任意)
- データフローを設計します:
Documents → Loader → Chunker → Embedder → Vector DB ↓ Query → Embedder → Vector Search → Reranker → Context ↓ Context + Query → LLM → Response - アーキテクチャに関する判断を文書化します
ワークフロー 2:取り込みパイプラインの実装
- ドキュメントローダーを設定します:
- PDF、Markdown、HTML パーサー
- ライブソース向け API コネクタ
- 差分更新の処理
- チャンク分割を実装します:
def smart_chunk(doc, chunk_size=500, overlap=50): # Respect document structure sections = extract_sections(doc) chunks = [] for section in sections: if len(section) > chunk_size: chunks.extend(sliding_window(section, chunk_size, overlap)) else: chunks.append(section) return add_metadata(chunks, doc) - バッチ処理で埋め込みを生成します
- メタデータとともにベクトルデータベースへ保存します
- 取り込み品質を検証します
ワークフロー 3:検索品質の最適化
- 検索パフォーマンスのベースラインを測定します:
- 既知のクエリに対する Recall@k
- 平均逆順位(MRR)
- 関連性のスコアリング
- 最適化手法を適用します:
- クエリの拡張/書き換え
- ハイブリッド検索(セマンティック+キーワード)
- クロスエンコーダーによる再ランキング
- メタデータによるフィルタリング
- 検索パラメーターを調整します:
- 取得するチャンク数(k)
- 類似度のしきい値
- 多様性/MMR の設定
- テストセットで改善を検証します
クイックリファレンス
| アクション | コマンド/トリガー |
|---|---|
| RAG システムを設計する | "Help me design a RAG pipeline for [use case]" |
| ベクトル DB を選ぶ | "Which vector database for RAG" |
| チャンク分割を最適化する | "Best chunking strategy for [content type]" |
| 検索を改善する | "My RAG has poor retrieval quality" |
| ハルシネーションを減らす | "RAG still hallucinating, help fix" |
| パイプラインをスケールする | "Scale RAG to [X] documents" |
ベストプラクティス
-
意味のまとまりでチャンク分割する:チャンク内の意味を保ちます
- 良い例:段落、セクション、またはトピックの境界で分割する
- 悪い例:固定サイズで分割し、文の途中で意味を断ち切る
- コンテキストとしてセクション見出しをチャンクに含める
-
充実したメタデータを含める:フィルタリングとコンテキストの活用を可能にします
- ソースドキュメント、セクション、ページ番号
- 時間的な関連性を示すタイムスタンプ
- カテゴリ、タグ、トピック
- セマンティック検索の前にメタデータフィルターを使う
-
ハイブリッド検索を使う:セマンティック検索とキーワード検索を組み合わせます
- セマンティック検索:意味や同義語を捉えます
- キーワード検索(BM25):完全一致する用語、名前、コードを捉えます
- クエリの種類に応じて組み合わせの重みを調整する
-
品質向上のために再ランキングする:2 段階検索で精度が向上します
- 第 1 段階:高速なベクトル検索(20~50 件を取得)
- 第 2 段階:クロスエンコーダーによる再ランキング(上位 5~10 件を残す)
- 再ランキングは低速ですが、精度が大幅に向上します
-
根拠を示す:引用とソースを含めます
- 応答とともにソースのチャンクを返す
- ユーザーが検証し、詳細を確認できるようにする
- 透明性を通じて信頼を築く
-
エッジケースに対処する:検索に失敗した場合にどうなるかを考慮します
- 関連する結果が見つからない
- ソース内の情報が矛盾している
- ナレッジベースの対象範囲外のクエリ
- 適切なフォールバックを実装する
高度な手法
マルチインデックス戦略
コンテンツの種類ごとに異なるインデックスを使用します。
Index 1: FAQs (short, self-contained)
Index 2: Documentation (long-form, structured)
Index 3: Conversations (temporal, contextual)
Route queries to appropriate index based on intent
クエリ変換パイプライン
クエリを処理して検索精度を高めます。
def transform_query(query):
# Step 1: Classify query type
query_type = classify_query(query)
# Step 2: Extract entities
entities = extract_entities(query)
# Step 3: Generate search queries
if query_type == "factual":
return generate_keyword_queries(query, entities)
elif query_type == "conceptual":
return generate_semantic_queries(query)
else:
return [query] # Use as-is
コンテキスト圧縮
検索されたコンテキストのノイズを減らします。
Retrieved chunks (verbose) → LLM compressor → Relevant excerpts only
エージェント型 RAG
LLM に検索を制御させます。
def agentic_rag(query):
# LLM decides what to search for
search_plan = llm.plan_searches(query)
# Execute searches
results = []
for search in search_plan:
results.extend(retriever.search(search.query, filters=search.filters))
# LLM synthesizes answer
return llm.synthesize(query, results)
評価フレームワーク
RAG の品質を継続的に測定します。
Metrics:
- Retrieval: Precision@k, Recall@k, MRR
- Generation: Faithfulness, Answer Relevance, Context Utilization
- End-to-end: Task Success Rate, User Satisfaction
Tools: Ragas, TruLens, LangSmith
よくある回避すべき落とし穴
- チャンクが大きすぎる(具体性が失われる)、または小さすぎる(コンテキストが失われる)
- チャンク内でドキュメントの構造と階層を保持しない
- 完全一致が重要な場合に、キーワード検索を無視する
- 検索するチャンクが少なすぎる(情報が不足する)、または多すぎる(コンテキストが希薄になる)
- ソース間で矛盾する情報を処理しない
- LLM が常に検索したコンテキストを正しく利用すると想定する
- 本番環境での評価と監視を省略する
- ソースドキュメントが変更されたときに、埋め込みを更新しない