Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ビックデータにおける、RAG性能向上戦略

大堀遼介
May 24, 2024
950

 ビックデータにおける、RAG性能向上戦略

自己紹介
大堀遼介:Webアプリエンジニア、データサイエンティスト
経歴:KADOKAWA、TOYOTA、HONDA、ABEJAなどでデータパイプラインやAIアプリ開発に従事
株式会社ulusage CEO:MLDashboardのSaaS提供、生成AIプロダクトのローンチ
RAGおさらい
RAG(検索拡張生成):検索ベースの技術と生成ベースのAIモデルを統合し、LLMが学習していない知識を付加
構成要素:LLM、RDB、NoSQL、非構造化データ、ベクトルDB、Web API
RAGを実現するOSSライブラリ
代表的なライブラリ:langchain、llama-index、AutoGPT、Dify
ビッグデータへのRAGの課題
性能低下とハルシネーションの増加:データボリュームが大きくなるほど性能低下が顕著
性能と精度のバランス:レスポンス速度と出力の信憑性の調整が難しい
ビッグデータへのRAGアプローチ
キーワード:「インデックス」と「チャンク」
効果的なインデックス作成:BM25、ベクトルインデックス、ハイブリッド
ベクトル検索エンジン:Elastic Search、Apache Solr、FAISS、Chroma、Pinecone、Qdrant
ビッグデータのRAGデザインパターン
多段インデックス:高速かつコストが安いが、データの全体俯瞰が難しい
クエリ拡張:複数の視点からの検索が可能だが、レスポンスが遅く、実装難易度が高い
Rerank:ノイズの除去と精度向上が可能だが、レスポンスが遅く、計算コストが高い
まとめ
OpenAIのツールでRAG実装が容易
性能低下とハルシネーションへの対策が必要
インデックス作成とデザインパターン選択が重要
ベクトル検索エンジンの選定も慎重に
参考文献
複数のQiita記事で詳細な実装例や理論を紹介

大堀遼介

May 24, 2024
Tweet

Transcript

  1. 自己紹介 • 大堀 遼介 • Webアプリエンジニア • データサイエンティスト • 経歴概要

    • 理工学部 情報理工学科卒 • 経歴紹介 • バックエンド中心の開発( KADOKAWA ) • エンタープライズ向けシステム統合コンサルティング • データパイプライン基盤(TOYOTA, HONDA, ベルフェイス) • コンシューマ向けデータプロバイダー(MaaS関連企業) • 小売・メーカー向け、AIアプリケーション開発(某大手宅配) • データエンジニア、データサイエンティスト(ABEJA, GRID, DATAFLUCT ...etc) • 株式会社ulusage CEO • ミッション: MLDashBoardのSaaSの提供・DX支援・直近では生成AIプ ロダクトをローンチしました。http://PragIn-AI.com
  2. ビッグデータへのRAGアプローチ • BM25 ◦ テキスト検索において広く使用されるスコアリング。ドキュメントの関連性を計算し、検索結 果をランキング • ベクトルインデックス ◦ 類似性検索(画像検索や埋め込みベクトルの検索)に使用される手法。FAISS(Facebook

    AI Similarity Search)やChromaなどが人気。 • ハイブリッド ◦ BM25のような伝統的なインデックスと、ベクトルインデックスを組み合わせる手法。キーワー ド検索と意味(セマンティクス)的な類似検索の両方を使用可。 • …など これらのインデックス手法を実現するには?
  3. ビッグデータへのRAGアプローチ ベクトル検索エンジン! • Elastic Search • Apache Solr • FAISS

    • Chroma • Pinecone • Qdrant • …まだまだあります。 ◦ https://note.com/ippei_suzuki_us/n/nf43f9622eee9 右図のように、検索とベクトルDBが、基本的に検索エンジン内に内包されます。 検索 ベクトルDB xxxxxx xxxxxx xxxxxx xxxxxx チャンク & ベクトル埋め込み ドキュメント 0.1,0.3, -0.1.. 0.4,0.2, 0.6..
  4. ビッグデータのRAGデザインパターン② • 拡張検索(クエリ) ◦ LLM(大規模言語モデル)を使用して、最初のクエリに基づいて複数のクエリを生成します。 生成されたクエリには、最初のクエリの複数の視点が含まれている必要があります。 ◦ 埋め込み空間のカバレッジ: ▪ これらのクエリは、埋め込まれると、埋め込み空間のさまざまな領域にヒットします。

    ▪ それらのクエリは依然として最初の質問に関連しているため、より広範な関連情報を取得 できます。 ◦ ゼロショットプロンプト: ▪ クエリ拡張を行うために、詳細なゼロショットプロンプトを使用します。 ▪ ゼロショットプロンプトを用いることで、特定のトレーニングを経ずに、初めてのクエリ に対しても拡張が可能となります。
  5. ビッグデータのRAGデザインパターン③ 取得後の最適化 - Rerank 2 4 3 6 5 1

    ベクトルDB 1 2 3 4 5 6 クエリ拡張 プロンプト Rerank 結果 結果 出力
  6. まとめ • OpenAIのツールを利用すれば、RAGの実装が簡単。 • データ量増加に伴う性能低下とハルシネーションの増加。 • 性能と精度のバランスが困難。 ◦ ビッグデータに対するRAGのアプローチは、性能と精度のバランスを取ることが重要。 •

    効果的なインデックス作成とデザインパターンの選択がカギ。 • ベクトル検索エンジンの選定も慎重に HyDEという手法もあり、こちらは試したことないですが、時間あったら実践して みたいです。