Slide 1

Slide 1 text

第137回 雲勉【オンライン】 Google Cloud Vertex AIと LangGraphを味⽅につけて RAGを改善したひ

Slide 2

Slide 2 text

自己紹介 2 メモ: ● クラウドインテグレーション事業部CSMセクション ● 長所は、寝たら忘れること。(記憶は消し炭) ● Vertex AI、うれしい。たのしい。とてもしゅき。 小林千紘

Slide 3

Slide 3 text

アジェンダ 3 • ゴールとか一番伝えたいこととか • 最近のRAG精度改善いろいろ • DIY RAGについて(Vertex AI) • LangGraphについて • デモ • さいごに

Slide 4

Slide 4 text

4 ゴールとか一番伝えたいこととか

Slide 5

Slide 5 text

ゴールとか一番伝えたいこととか 5 伝えたいこと...? え?RAGの精度改善とかむずくない?

Slide 6

Slide 6 text

ゴールとか一番伝えたいこととか 6 ゴォーーーール!!! RAGぅ。やっぱつれぇわ。 となっている同志の幸福度を少しでも上げたい という試みです めざせベンサム思考

Slide 7

Slide 7 text

ゴールとか一番伝えたいこととか 7 というわけで対象者 え?RAGの精度改善とかむずくない? となっている同志 届け。いま届け。

Slide 8

Slide 8 text

ゴールとか一番伝えたいこととか 8 伝えたいこと、アゲイン RAG改善手法の1つ選択肢を みなさんの短期記憶の中にでも残ればうれしい と、烏滸がましくも思ってます

Slide 9

Slide 9 text

ゴールとか一番伝えたいこととか 9 …まとめると ● ゴール ○ RAGカスタマイズに悩んでいる同志の幸福度の向上 ● 伝えたいこと ○ RAGをより制御する手法を共有したい ○ RAG精度改善する方法を共有したい ● 対象者 ○ エンタープライズでのRAG使用を検討している方 ○ RAG精度改善をはじめるのに悩んでいる方 ○ 他みんな、全員

Slide 10

Slide 10 text

ゴールとか一番伝えたいこととか 10 ゴールを共有した上で、各章と全体像 ● 最近のRAG精度改善いろいろ ○ そもそも最近はどんなRAG改善手法があるのか。ざっくり ● DIY RAGについて(Vertex AI) ○ DIY RAGは、RAG改善・カスタマイズのパーツ部分 ● LangGraphについて ○ LangGraphは、各パーツを素敵に制御できる部分 ● デモ ○ 実際にLangGraphでDIY RAGのパーツを制御してみよう

Slide 11

Slide 11 text

11 最近のRAG精度改善いろいろ

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

最近のRAG精度改善いろいろ 13 とりま前提、というやつです 絶賛、黎明期なので改善手法も確立されてません。 これからも、新しい手法がどんどんでてきます。 ぜひご自身の環境にあった方法で! the bestestでウルトラハッピー エンジニアライフですね

Slide 14

Slide 14 text

最近のRAG精度改善いろいろ 14 一旦見えやすくするために、3つに分類してみました もちろん、完全にどれか。に 切り離せるものではありません ● データ ● プロンプト ● 検索

Slide 15

Slide 15 text

最近のRAG精度改善いろいろ 15 今はこんなに色々できることがあるみたいですね(歓喜) ● データ ○ クリーニング ■ なによりも大前提に必要 ○ 構造をチェンジ ■ QA型のデータにする、など ○ チャンク設定 ■ オーバラップ、サイズ、など ○ メタデータをつける ○ Embeddingモデルのファインチューニング 次ページにつづく

Slide 16

Slide 16 text

次ページにつづく 最近のRAG精度改善いろいろ 16 今はこんなに色々できることがあるみたいですね(歓喜) ● プロンプト ○ クエリ拡張 ■ 分割・要約・似てる語とか、HyDEとか ○ Few-shot、One-shot ○ CoT ■ ステップバイステップで考えてもらう ○ ToT ○ 自己整合性 プロンプトエンジニアリングガイドが 最つよってわけ Prompt Engineering Guide https://www.promptingguide.ai/jp

Slide 17

Slide 17 text

最近のRAG精度改善いろいろ 17 今はこんなに色々できることがあるみたいですね(歓喜) ● 検索 ○ ハイブリッド検索 ■ いうまでもなく、セマンティック&キーワード ○ リランク ■ 処理コストは、通常検索より上がるため絞ってランクづけ ○ 検索アルゴリズムの変更 ■ Faissとかライブラリで実装してみるとか …など、無限大卍 リランクは、デモでやります

Slide 18

Slide 18 text

最近のRAG精度改善いろいろ 18 個人的に思う、おすすめ最初の進め方 データ -> プロンプト -> 検索 それってあなたの感想ですよね ローグライクゲームだと思って 楽しむのが一番

Slide 19

Slide 19 text

最近のRAG精度改善いろいろ 19 シメる ご自身の環境にあった手法で試してみてください!

Slide 20

Slide 20 text

20 DIY RAGについて(Vertex AI)

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

DIY RAGについて(Vertex AI) 22 ちょっとまった、DIY RAGってなにさ? Vertex AI Searchを各部品にしたもの のイメージ

Slide 23

Slide 23 text

DIY RAGについて(Vertex AI) 23 Oops、Next’24でこんなお話しがありました(言いたいマン) この図はいつ見ても興奮しますね

Slide 24

Slide 24 text

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は、プライベートプレビューのため公式ドキュメントを元に推測で書いてます

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

● レイアウト階層を考慮して解析・チャンク化してくれる ● レイアウトとは、 ○ ブロック、表のコンテンツ ○ タイトル、見出し ○ …など ● チャンク化!までしてくれる!(優勝) ● 対応ファイル形式は、HTML・PDF DIY RAGについて(Vertex AI) 26 https://cloud.google.com/document-ai/docs/layout-parse-chunk 解析からチャンクまで、 1つのAPIでささっとやってくれる これが、とてもうれしい。 なんてものじゃない虜。 トリコロール Layout Parserができること

Slide 27

Slide 27 text

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 デモで使います

Slide 28

Slide 28 text

DIY RAGについて(Vertex AI) 28 Vector Search ● インデックス作って簡単に検索できるよ!というサービス ● 現在、ベクトル保管はGCSのみ ● Google検索のScaNNアルゴリズム使用。検索速度めちゃはや ● ベクトルのフィルタリング機能あり! ● 距離計算のアルゴリズムいろいろ ○ ユークリッド距離、マンハッタン距離など ● スパースエンベディング・ハイブリッド検索もサポート(現在プレビュー) https://cloud.google.com/vertex-ai/docs/vector-search/overview デモで使います

Slide 29

Slide 29 text

DIY RAGについて(Vertex AI) 29 Ranking API ● ランクづけするよ!というサービス ● クエリとデータを渡すだけで、ランクづけしてくれる ○ なんと、インデックス不要 ○ なんと、Vertex AI Searchでデータストアの作成不要 https://cloud.google.com/generative-ai-app-builder/docs/ranking デモで使います

Slide 30

Slide 30 text

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 現在、プライベートプレビューのため 、実際に触っていません。 公式ドキュメントからの推測です! パブリックプレビュー... まってます...(小声)

Slide 31

Slide 31 text

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

Slide 32

Slide 32 text

DIY RAGについて(Vertex AI) 32 Vertex AI DIY RAGをまとめる ● DIY RAGとは、Vertex AI Searchを各部品にしたもの ● エンタープライズはもちろん素早く試してみたい時にも便 利 ● Google検索などで使用されているつよ機能・つよモデルを 手軽に使える

Slide 33

Slide 33 text

33 LangGraphについて

Slide 34

Slide 34 text

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

Slide 35

Slide 35 text

LangGraphについて 35 まちたまえ、LangGraphってなんだね? LangChain Agentsのいとこ。みたいなもの

Slide 36

Slide 36 text

LangGraphについて 36 …気を取り直して、LangGraphってなんだね? LangChain Agentsをより制御できるようにしたもの!

Slide 37

Slide 37 text

LangGraphについて 37 ん?そもそも、LangChain Agentsの動きは、どうだってばよ? ほぼ全ての意思決定と推論をLLMで行なってくれる 最高にクールなReAct手法!

Slide 38

Slide 38 text

LangGraphについて 38 最高にクールなLangChain Agentsを利用する上で困ってるポイントは何か? ● 必ず叩いてほしいAPIあるんだけど...Agentsの外側で制御しないといけない... ● トランザクションを確定する前に、ユーザの最終確認を得てから実行してほしい ● そもそも、重要なAPIを呼び出すのに全てをAgentsに任せるのは怖い ● グラウンディングチェックがNGなら、もう一度推論しなおしてほしい 主にエンタープライズで使用する際に 全てをLLMに任せるのは、まだ不安がありすぎる問題 …など

Slide 39

Slide 39 text

LangGraphについて 39 そう、そんな願いを叶えるヒーローが LangGraphくん! ってわけですね

Slide 40

Slide 40 text

LangGraphについて 40 そして、フロー制御ができるってことは LangGraphくんは、RAGの精度改善にもうってつけ! うおおおおおおおお

Slide 41

Slide 41 text

LangGraphについて 41 ● いわゆるDAGを実装できるもの(Airflowと同じ考え方) ○ 循環実装がしやすい(通常のプログラミングだとややこしくなりがち…) ○ 複雑なフロー制御がとても得意 ● ステート管理がらくちん便利 ● LangChainと親和性たかし LangGraphくんの特にすきポイント LangGraph公式 https://langchain-ai.github.io/langgraph/ …など

Slide 42

Slide 42 text

LangGraphについて 42 公式サイトの図が超絶ウルトラわかりやすいので貼る 引用元:https://langchain-ai.github.io/langgraph/tutorials/rag/langgraph_adaptive_rag/ デモでは、擬似的なこれやります

Slide 43

Slide 43 text

LangGraphについて 43 LangGraphをふりかえる ● LangGraphは、Agentsをより制御できるようにしたもの ! ● RAGのエンタープライズ利用に特におすすめ! ● RAGの精度改善、カスタマイズにうってつけ!

Slide 44

Slide 44 text

44 デモ

Slide 45

Slide 45 text

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

Slide 46

Slide 46 text

デモ 46 早速ですが、ふたたびのやりたいことの図 引用元:https://langchain-ai.github.io/langgraph/tutorials/rag/langgraph_adaptive_rag/ デモでは、擬似的なこれやります

Slide 47

Slide 47 text

デモ 47 デモの機能とポイント ● 機能 ○ RAGを使用した回答生成 ■ RAG精度改善(リランク・グラウンディングチェック) ■ ハルシネーションし続ける場合は、その旨定型文で回答させる ○ APIを使用したトランザクション処理 ■ 本登録前にユーザの承認ステップを挟む ○ 上記以外の質問については、明示的に弾く なんと、これらの機能を 一つのLangGraphで実装できちゃう! API部分は、ハリボテ実装 次ページにつづく

Slide 48

Slide 48 text

デモ 48 デモの機能とポイント ● モデル部分 ○ クエリ解析用モデルと生成用モデルの2つのモデルで処理する ■ クエリ解析用モデルは、ユーザクエリのルーティングに使用 ■ 生成用モデルは、RAGに使用 ○ ちなみに...モデル分離する背景は ■ LangChainのVertex AI classでは、スキーマ型で出力できないため(GPT使用) ■ デモの実装内容であれば、基本的にモデル分離はせずともOK! なんと、これらの機能を 一つのLangGraphで実装できちゃう! LangChainに出力整形Kitがあるので、 ぜひ、実装してみてください!

Slide 49

Slide 49 text

デモ 49 デモの処理の流れ

Slide 50

Slide 50 text

デモ 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

Slide 51

Slide 51 text

デモ 51 デモする いざ、NotebookへGo

Slide 52

Slide 52 text

デモ 52 デモまとめ ● ささささっとコードを書くだけでRAG一式簡単にできる ● DIY RAGという名の通りRAG機能をほぼAPIだけでできる ● LangGraphで複雑なフロー、状態管理もやってくれる

Slide 53

Slide 53 text

53 さいごに

Slide 54

Slide 54 text

さいごに 54 まとめよう! ● 最近のRAG精度改善いろいろ ○ 手法は無限大にでてきます!ご自身の環境と相談!RAGもおっきく無限大! ○ ゼロから進める時は、「データ -> プロンプト -> 検索」順が個人的におすすめ ● DIY RAGについて(Vertex AI) ○ Vertex AI Searchを各部品にしたもの ○ RAG機能をほぼAPIだけで処理できる ○ しかも、Google検索などで使用されているつよ機能・つよモデルを手軽に使える ● LangGraphについて ○ LangChain Agentsをより制御できるようにしたもの ○ 複雑なフロー、状態管理も簡単にできる

Slide 55

Slide 55 text

さいごに 55 さいごにのさいごに Let's エンジョイ RAG ライフ! いかがだったでしょうか? ぐぬぬ、RAGカスタマイズ...となっている同志にすこしでもパワーを与えられていたら... 幸甚の極み爆発です。

Slide 56

Slide 56 text

さいごに 56 ご視聴いただき、ありがとうございました!