mcpField

RAG Pipeline Builder

github.com/eddiebe147開発51 回インストール
リポジトリ

RAG Pipeline Builder について

RAG Pipeline Builderは、独自データでLLMの回答を補強するRAGシステムの設計・実装を支援するスキルです。文書取り込み、チャンク化、検索、生成に加え、最適化と評価も扱います。

主な機能

  1. 01RAGシステムの設計
  2. 02文書取り込みとチャンク化の構築
  3. 03埋め込み生成とベクトル保存
  4. 04ハイブリッド検索と再ランキングの最適化
  5. 05検索・生成品質の評価

活用シーン

  1. 01ドキュメントQ&Aボットの構築
  2. 02顧客サポートへの専門データ活用
  3. 03ベクトル検索の関連性改善
  4. 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 アーキテクチャの設計
  1. 要件を定義します:
    • データソースと形式
    • クエリの種類とパターン
    • 精度要件
    • レイテンシの予算
    • 想定される規模
  2. コンポーネントを選択します:
    • ドキュメントローダー
    • チャンク分割の戦略
    • 埋め込みモデル
    • ベクトルデータベース
    • 生成用 LLM
    • 再ランキング層(任意)
  3. データフローを設計します:
    Documents → Loader → Chunker → Embedder → Vector DB
                                                   ↓
    Query → Embedder → Vector Search → Reranker → Context
                                                   ↓
    Context + Query → LLM → Response
    
  4. アーキテクチャに関する判断を文書化します
ワークフロー 2:取り込みパイプラインの実装
  1. ドキュメントローダーを設定します:
    • PDF、Markdown、HTML パーサー
    • ライブソース向け API コネクタ
    • 差分更新の処理
  2. チャンク分割を実装します:
    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. バッチ処理で埋め込みを生成します
  4. メタデータとともにベクトルデータベースへ保存します
  5. 取り込み品質を検証します
ワークフロー 3:検索品質の最適化
  1. 検索パフォーマンスのベースラインを測定します:
    • 既知のクエリに対する Recall@k
    • 平均逆順位(MRR)
    • 関連性のスコアリング
  2. 最適化手法を適用します:
    • クエリの拡張/書き換え
    • ハイブリッド検索(セマンティック+キーワード)
    • クロスエンコーダーによる再ランキング
    • メタデータによるフィルタリング
  3. 検索パラメーターを調整します:
    • 取得するチャンク数(k)
    • 類似度のしきい値
    • 多様性/MMR の設定
  4. テストセットで改善を検証します

クイックリファレンス

アクションコマンド/トリガー
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 が常に検索したコンテキストを正しく利用すると想定する
  • 本番環境での評価と監視を省略する
  • ソースドキュメントが変更されたときに、埋め込みを更新しない

コメント