Loading
更新日:20250522

RAGシステム

ベクトル類似度と食べ物の特徴分析

  • 食べ物(リンゴ、イチゴ、ハバネロなど)を甘みと価格の二次元グラフ上に配置
  • 原点から各点へのベクトルを「特徴ベクトル」と定義
  • ベクトル間の角度が小さいほど、類似性が高いことを表す
  • コサイン類似度を使ってベクトル間の角度を数値化
  • 例として計算されたリンゴとイチゴのコサイン類似度は0.999で、非常に似ていることを示している
  • リンゴとハバネロのコサイン類似度は0.786で、価格は近いが甘みが大きく異なるため類似度は低い

RAGシステムの実装プロセス

画像

RAGシステムの実装手順は以下8ステップ

  1. インデクサーの実行
    1. PDFファイルからテキストを抽出し、ベクトル化する役割
    2. コマンドラインアプリケーションとして実行
  2. ドキュメントのチャンク化
    1. ライブラリを使用してPDFからテキストを抽出
    2. 抽出テキストを小さな部分(チャンク)に分割
    3. チャンク化は、AIモデルが処理できるトークン数の制限に対応するため
    4. オーバーラップ手法を使用し、チャンク間で一部テキストを共有して文脈の連続性を保持
  3. チャンクのベクトル化
    1. OpenAIの埋め込みAPIを使用
    2. テキストをベクトル表現に変換
  4. ドキュメントの登録
    1. ベクトル化されたチャンクを登録
    2. テキストフィールドとベクトルフィールドを含むインデックスを作成
  5. ユーザーの質問
    1. ユーザーはWebチャットから質問を入力
    2. 質問は内部的にJSON配列に変換
  6. ユーザーの質問のベクトル化
    1. ユーザーの質問も同様にベクトル化
    2. ドキュメントのベクトルと比較するため
  7. 関連ドキュメントの検索
    1. ベクトル化された質問を渡す
    2. ベクトル空間上での距離(スコア)に基づいて関連性の高いドキュメントを検索
    3. スコアが高いほど関連性が高い
  8. 回答の生成
    1. ユーザーの質問と関連ドキュメントを渡す
    2. AIはモデル自体の知識ではなく、関連ドキュメントに基づいて回答を生成

これにより、AIが自身の知識だけでなく、外部ドキュメントの情報に基づいて回答できるようになります。

ハイブリッド検索とは

定義: キーワード検索とベクトル検索の結果を組み合わせる手法

各検索手法の特徴

キーワード検索:

  • 正確な一致に強い
  • 例:「エジプトのピラミッド」で検索すると該当キーワードを含む文書を発見

ベクトル検索:

  • 意味的な関連性を発見
  • 例:「エジプトの歴史的建造物」の質問に対してピラミッドを含む関連文書を返す可能性

RRF(Reciprocal Rank Fusion)による融合

計算式:

plain text
RRFScore(d) = Σ(1/(k + ri(d)))

パラメータ:

  • d:対象ドキュメント
  • i:検索システム
  • k:定数
  • ri(d):検索システムiにおけるドキュメントdの順位

融合プロセス:

  • 各検索システムでの文書の順位を取得
  • RRF式により統合スコアを計算
  • 最終的な順位を再ランキング

メリット

  • 単一手法の弱点を補完
  • バランスの取れた検索結果
  • より精度の高い検索が実現可能
  • 全体的に安定した検索性能

画像
  • ハイブリッド検索により両者を組み合わせてより精度の高い結果を実現することができます。