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

第137回 雲勉 Google Cloud Vertex AIとLangGraphを味方につけてRAGを改善したひ

第137回 雲勉 Google Cloud Vertex AIとLangGraphを味方につけてRAGを改善したひ

iret.kumoben

June 20, 2024
Tweet

More Decks by iret.kumoben

Other Decks in Technology

Transcript

  1. ゴールとか一番伝えたいこととか 9 …まとめると • ゴール ◦ RAGカスタマイズに悩んでいる同志の幸福度の向上 • 伝えたいこと ◦

    RAGをより制御する手法を共有したい ◦ RAG精度改善する方法を共有したい • 対象者 ◦ エンタープライズでのRAG使用を検討している方 ◦ RAG精度改善をはじめるのに悩んでいる方 ◦ 他みんな、全員
  2. ゴールとか一番伝えたいこととか 10 ゴールを共有した上で、各章と全体像 • 最近のRAG精度改善いろいろ ◦ そもそも最近はどんなRAG改善手法があるのか。ざっくり • DIY RAGについて(Vertex

    AI) ◦ DIY RAGは、RAG改善・カスタマイズのパーツ部分 • LangGraphについて ◦ LangGraphは、各パーツを素敵に制御できる部分 • デモ ◦ 実際にLangGraphでDIY RAGのパーツを制御してみよう
  3. 最近のRAG精度改善いろいろ 12 各章と全体像 • 最近のRAG精度改善いろいろ ◦ そもそも最近はどんなRAG改善手法があるのか。ざっくり • DIY RAGについて(Vertex

    AI) ◦ DIY RAGは、RAG改善・カスタマイズのパーツ部分 • LangGraphについて ◦ LangGraphは、各パーツを素敵に制御できる部分 • デモ ◦ 実際にDIY RAGのパーツをLangGraphで制御してみよう いまここ
  4. 最近のRAG精度改善いろいろ 15 今はこんなに色々できることがあるみたいですね(歓喜) • データ ◦ クリーニング ▪ なによりも大前提に必要 ◦

    構造をチェンジ ▪ QA型のデータにする、など ◦ チャンク設定 ▪ オーバラップ、サイズ、など ◦ メタデータをつける ◦ Embeddingモデルのファインチューニング 次ページにつづく
  5. 次ページにつづく 最近のRAG精度改善いろいろ 16 今はこんなに色々できることがあるみたいですね(歓喜) • プロンプト ◦ クエリ拡張 ▪ 分割・要約・似てる語とか、HyDEとか

    ◦ Few-shot、One-shot ◦ CoT ▪ ステップバイステップで考えてもらう ◦ ToT ◦ 自己整合性 プロンプトエンジニアリングガイドが 最つよってわけ Prompt Engineering Guide https://www.promptingguide.ai/jp
  6. 最近のRAG精度改善いろいろ 17 今はこんなに色々できることがあるみたいですね(歓喜) • 検索 ◦ ハイブリッド検索 ▪ いうまでもなく、セマンティック&キーワード ◦

    リランク ▪ 処理コストは、通常検索より上がるため絞ってランクづけ ◦ 検索アルゴリズムの変更 ▪ Faissとかライブラリで実装してみるとか …など、無限大卍 リランクは、デモでやります
  7. DIY RAGについて(Vertex AI) 21 各章と全体像 • 最近のRAG精度改善いろいろ ◦ そもそも最近はどんなRAG改善手法があるのか。ざっくり •

    DIY RAGについて(Vertex AI) ◦ DIY RAGは、RAG改善・カスタマイズのパーツ部分 • LangGraphについて ◦ LangGraphは、各パーツを素敵に制御できる部分 • デモ ◦ 実際にDIY RAGのパーツをLangGraphで制御してみよう いまここ
  8. DIY RAGについて(Vertex AI) 24 DIY RAG(RAG Pipeline)をがっとまとめてみた コンポーネント名 できることをひとことで 改善の影響範囲だなあポイント

    Document Processing API 前処理 テキスト抽出・チャンク改善 Vertex Text Embeddings ベクトル変換 ベクトル品質改善 Vector Search ベクトル検索 ベクトル検索品質改善 Ranking API ランクづけ 検索品質改善 Grounded Generation API RAG生成部分の根幹? プロンプト・データなどを好き放題できる? Check Grounding API グラウンディングスコア ハルシネーション軽減(出力制御・ReAct制御) ※現時点でプレビューが多いので、使用の際は自身でご確認ください ※Grounded Generation APIは、プライベートプレビューのため公式ドキュメントを元に推測で書いてます
  9. DIY RAGについて(Vertex AI) 25 Document Processing API • ドキュメント前処理をするよ!というサービス •

    機能のうち、Layout ParserがRAGするときとても鬼便利 • 他にも通常の業務効率化に便利な機能がもりもり ◦ Form パーサーで、申込書などをkey-valueに変換したり ◦ 請求書パーサーで、請求書をkey-value変換、かつ請求書によくある項目を正規化す る https://cloud.google.com/document-ai/docs/extracting-overview
  10. • レイアウト階層を考慮して解析・チャンク化してくれる • レイアウトとは、 ◦ ブロック、表のコンテンツ ◦ タイトル、見出し ◦ …など

    • チャンク化!までしてくれる!(優勝) • 対応ファイル形式は、HTML・PDF DIY RAGについて(Vertex AI) 26 https://cloud.google.com/document-ai/docs/layout-parse-chunk 解析からチャンクまで、 1つのAPIでささっとやってくれる これが、とてもうれしい。 なんてものじゃない虜。 トリコロール Layout Parserができること
  11. DIY RAGについて(Vertex AI) 27 Vertex Text Embeddings • ベクトル作るよ!というサービス •

    マルチモーダル対応(not テキストおんりー) • geckoモデルが使える ◦ 非公開モデル。このAPI経由でのみ使用可能? ◦ 768次元。テキストのみ対応。日本語OK。 • ファインチューニングもできる(現在、geckoモデルおんりー) ◦ 教師あり。ラベル付きの学習用データセットが必要 • チャンク処理は、別途行う必要あり(自由にカスタマイズできるということ!) https://cloud.google.com/vertex-ai/generative-ai/docs/embeddings/get-text-embeddings デモで使います
  12. DIY RAGについて(Vertex AI) 28 Vector Search • インデックス作って簡単に検索できるよ!というサービス • 現在、ベクトル保管はGCSのみ

    • Google検索のScaNNアルゴリズム使用。検索速度めちゃはや • ベクトルのフィルタリング機能あり! • 距離計算のアルゴリズムいろいろ ◦ ユークリッド距離、マンハッタン距離など • スパースエンベディング・ハイブリッド検索もサポート(現在プレビュー) https://cloud.google.com/vertex-ai/docs/vector-search/overview デモで使います
  13. DIY RAGについて(Vertex AI) 29 Ranking API • ランクづけするよ!というサービス • クエリとデータを渡すだけで、ランクづけしてくれる

    ◦ なんと、インデックス不要 ◦ なんと、Vertex AI Searchでデータストアの作成不要 https://cloud.google.com/generative-ai-app-builder/docs/ranking デモで使います
  14. DIY RAGについて(Vertex AI) 30 Grounded Generation API • クエリに対してグラウンディングした回答を生成してくれる •

    純粋に回答生成部分を担っているイメージ ◦ モデルとかクエリとかデータソースとかリクエストに指定するらしい ◦ 材料を自分で選べる。で、混ぜて料理するのがこのAPIのイメージ • 複数のデータソースからグラウンディングしてくれる ◦ Google検索、Vertex AI Search データストア、渡したテキスト ◦ 引用元もくっつけてくれる • マルチターンOK https://cloud.google.com/generative-ai-app-builder/docs/grounded-gen 現在、プライベートプレビューのため 、実際に触っていません。 公式ドキュメントからの推測です! パブリックプレビュー... まってます...(小声)
  15. DIY RAGについて(Vertex AI) 31 Check Grounding API • グラウンディング具合を確認するよ •

    レイテンシ鬼はや(500 ミリ秒未満) • 任意のメタデータをくっつけられる。 • 回答生成後、グラウンディング具合をチェックしてNGなら再推論という使い方とか ◦ よって、ReActとも相性がいい ◦ 単純に、レスポンス直前に弾くことにも使用可能 ◦ エンタープライズ利用に特におすすめな気持ち https://cloud.google.com/generative-ai-app-builder/docs/check-grounding デモで使います
  16. DIY RAGについて(Vertex AI) 32 Vertex AI DIY RAGをまとめる • DIY

    RAGとは、Vertex AI Searchを各部品にしたもの • エンタープライズはもちろん素早く試してみたい時にも便 利 • Google検索などで使用されているつよ機能・つよモデルを 手軽に使える
  17. LangGraphについて 34 各章と全体像 • 最近のRAG精度改善いろいろ ◦ そもそも最近はどんなRAG改善手法があるのか。ざっくり • DIY RAGについて(Vertex

    AI) ◦ DIY RAGは、RAG改善・カスタマイズのパーツ部分 • LangGraphについて ◦ LangGraphは、各パーツを素敵に制御できる部分 • デモ ◦ 実際にDIY RAGのパーツをLangGraphで制御してみよう いまここ
  18. デモ 45 各章と全体像 • 最近のRAG精度改善いろいろ ◦ そもそも最近はどんなRAG改善手法があるのか。ざっくり • DIY RAGについて(Vertex

    AI) ◦ DIY RAGは、RAG改善・カスタマイズのパーツ部分 • LangGraphについて ◦ LangGraphは、各パーツを素敵に制御できる部分 • デモ ◦ 実際にDIY RAGのパーツをLangGraphで制御してみよう いまここ
  19. デモ 47 デモの機能とポイント • 機能 ◦ RAGを使用した回答生成 ▪ RAG精度改善(リランク・グラウンディングチェック) ▪

    ハルシネーションし続ける場合は、その旨定型文で回答させる ◦ APIを使用したトランザクション処理 ▪ 本登録前にユーザの承認ステップを挟む ◦ 上記以外の質問については、明示的に弾く なんと、これらの機能を 一つのLangGraphで実装できちゃう! API部分は、ハリボテ実装 次ページにつづく
  20. デモ 48 デモの機能とポイント • モデル部分 ◦ クエリ解析用モデルと生成用モデルの2つのモデルで処理する ▪ クエリ解析用モデルは、ユーザクエリのルーティングに使用 ▪

    生成用モデルは、RAGに使用 ◦ ちなみに...モデル分離する背景は ▪ LangChainのVertex AI classでは、スキーマ型で出力できないため(GPT使用) ▪ デモの実装内容であれば、基本的にモデル分離はせずともOK! なんと、これらの機能を 一つのLangGraphで実装できちゃう! LangChainに出力整形Kitがあるので、 ぜひ、実装してみてください!
  21. デモ 50 • 実行環境 ◦ Colab Enterprise ▪ ランタイムはデフォルト ◦

    Python 3.10.12 • 主要ライブラリバージョン ライブラリ名 バージョン langgraph 0.0.64 langchain 0.2.2 langchain-google-vertexai 1.0.5 langchain-openai 0.1.8 google-cloud-discoveryengine 0.11.13
  22. さいごに 54 まとめよう! • 最近のRAG精度改善いろいろ ◦ 手法は無限大にでてきます!ご自身の環境と相談!RAGもおっきく無限大! ◦ ゼロから進める時は、「データ ->

    プロンプト -> 検索」順が個人的におすすめ • DIY RAGについて(Vertex AI) ◦ Vertex AI Searchを各部品にしたもの ◦ RAG機能をほぼAPIだけで処理できる ◦ しかも、Google検索などで使用されているつよ機能・つよモデルを手軽に使える • LangGraphについて ◦ LangChain Agentsをより制御できるようにしたもの ◦ 複雑なフロー、状態管理も簡単にできる