> ## Documentation Index
> Fetch the complete documentation index at: https://docs.sambanova.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# RAG ワークフロー

検索拡張生成 (Retrieval-augmented generation; RAG) は、外部情報を取り込むことで LLM の応答を強化する技術です。

RAG は、生成時にセマンティック検索を用いて、データベースから最も文脈に適した結果を取得します。この手法は、汎用チャット向けにファインチューニングされた既製の LLM へのプロンプティングに特に有効で、元の学習データの範囲を超えるクエリへの対応を可能にします。また、再学習なしで最新情報にアクセスできるようになり、hallucination (幻覚) を抑制できます。

## ワークフローのステップ

一般的な RAG ワークフローは、取り込みとオンライン処理という 2 つの主要フェーズで構成されます。取り込み (前処理、ステップ 1〜4) は RAG システム向けにデータを準備する工程で、通常はオフラインで実行されます。オンライン処理 (ステップ 5〜7) は、データの検索と応答生成を中心とした、RAG システムのリアルタイム処理を担います。

<Steps>
  <Step title="Document parsing (ドキュメント解析)">
    CSV、Markdown、PDF など、特定のファイル形式に対応したドキュメントローダーを使用して、データを読み込み、デジタルテキストに整形します。このステップでは、コンテンツに加えて、出典やページ番号などの関連メタデータも抽出します。ファイルの品質や形式によっては、ユースケースの要件に合わせてデータクリーニングやカスタマイズが必要になる場合があります。
  </Step>

  <Step title="分割">
    モデルのコンテキストウィンドウの制限に対応するため、ドキュメントを小さなチャンク (断片) に分割します。チャンク化にはさまざまな戦略があり、チャンクサイズ、オーバーラップサイズ、スライディングウィンドウが、調整可能な主要ハイパーパラメータです。
  </Step>

  <Step title="Vector embeddings (ベクトル埋め込み)">
    各テキストチャンクを、Embedding (埋め込み) モデルを用いてベクトル表現に変換します。これらの埋め込みにより、意味的類似度に基づくコンテンツ検索が可能になります。
  </Step>

  <Step title="Vector store (ベクトルストア)">
    埋め込みを、対応するコンテンツおよびメタデータとともにベクトル DB に格納します。インデックスには埋め込みが使用されます。ベクトル DB には、FAISS、ChromaDB、Qdrant、Milvus など、さまざまな選択肢があります。
  </Step>

  <Step title="Retrieval (検索)">
    クエリも同様に埋め込み、retriever 関数を使用して、特定の類似度指標に基づき、クエリベクトルに最も近いチャンクベクトルをベクトル DB から特定します。このステップでは、取り込みワークフローで保存した埋め込みを活用します。
  </Step>

  <Step title="Reranking (再ランク付け)">
    オンライン処理フェーズにおけるオプションのステップです。Reranker モデルを使用して、取得したチャンクを関連度順に並べ替え、不要なチャンクを取り除くこともできます。
  </Step>

  <Step title="Q&A 生成">
    LLM がユーザークエリと最終的に取得されたチャンクを受け取り、根拠のある応答を生成します。
  </Step>
</Steps>

LangChain と SambaNova を使用したエンドツーエンドの RAG アプリケーションの実装は、[Enterprise Knowledge Retriever (EKR)](https://github.com/sambanova/ai-starter-kit/tree/main/enterprise_knowledge_retriever "https://github.com/sambanova/ai-starter-kit/tree/main/enterprise_knowledge_retriever") キットでぜひお試しください。

## 連携ツールを使った RAG 構築

以下の連携ツールを使用して、SambaNova のモデルで RAG ワークフローを実装できます。

<CardGroup cols={3}>
  <Card title="LangChain" href="/docs/ja/integrations/langchain">
    LangChain の検索およびチェーンの抽象化を使用して RAG パイプラインを構成。
  </Card>

  <Card title="LlamaIndex" href="/docs/ja/integrations/llama-index">
    LLM 向けデータフレームワークである LlamaIndex で RAG アプリケーションを構築。
  </Card>

  <Card title="Haystack" href="/docs/ja/integrations/haystack">
    Haystack のコンポーネントベースのフレームワークによる、本番環境対応の RAG パイプライン。
  </Card>

  <Card title="Neo4j" href="/docs/ja/integrations/neo4j">
    ナレッジグラフ RAG アプリケーションのためのグラフベース検索。
  </Card>

  <Card title="Milvus" href="/docs/ja/integrations/milvus">
    スケーラブルな RAG デプロイメントのための高性能ベクトル DB。
  </Card>

  <Card title="LangFlow" href="/docs/ja/integrations/langflow">
    ドラッグ&ドロップでパイプラインを構築できるビジュアル RAG ワークフロービルダー。
  </Card>
</CardGroup>
