Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
第137回 雲勉 Google Cloud Vertex AIとLangGraphを味方につけ...
Search
iret.kumoben
June 20, 2024
Technology
0
160
第137回 雲勉 Google Cloud Vertex AIとLangGraphを味方につけてRAGを改善したひ
下記、勉強会での資料です。
https://youtu.be/a2Kr7SMtFxs
iret.kumoben
June 20, 2024
Tweet
Share
More Decks by iret.kumoben
See All by iret.kumoben
第146回 雲勉 BLEAを眺めてCDKの書き方について学ぶ
iret
1
42
第145回 雲勉 Amazon ECSでサービス間通信する方法を調べてみよう
iret
0
39
第144回 雲勉 Amazon Aurora Serverless v2の基礎とアーキの裏側を覗いてみる
iret
0
83
第143回 雲勉 [New Relic]インフラストラクチャ監視と気をつけたいポイント
iret
0
39
第142回 雲勉 AWS Backupの復元テストで自動化できること・できないこと
iret
0
83
第141回 雲勉 Amazon Inspectorによる脆弱性管理~ECR コンテナイメージ編~
iret
0
180
第2回 雲勉LT大会 パブリッククラウドのサーバレスサービスの違いを調べてみた
iret
0
24
第2回 雲勉LT大会 AWS Control Tower の「コントロール」って何? という謎から AWS Control Tower を知る
iret
0
23
第2回 雲勉LT大会 AWS/Google Cloud/Wasabi ストレージサービスを比較したい
iret
0
43
Other Decks in Technology
See All in Technology
SREによる隣接領域への越境とその先の信頼性
shonansurvivors
2
450
強いチームと開発生産性
onk
PRO
28
8.8k
ISUCONに強くなるかもしれない日々の過ごしかた/Findy ISUCON 2024-11-14
fujiwara3
8
800
マルチプロダクトな開発組織で 「開発生産性」に向き合うために試みたこと / Improving Multi-Product Dev Productivity
sugamasao
1
280
TypeScript、上達の瞬間
sadnessojisan
37
9.3k
リンクアンドモチベーション ソフトウェアエンジニア向け紹介資料 / Introduction to Link and Motivation for Software Engineers
lmi
4
300k
いろんなものと両立する Kaggleの向き合い方
go5paopao
2
1.1k
ドメイン名の終活について - JPAAWG 7th -
mikit
32
19k
開発生産性を上げながらビジネスも30倍成長させてきたチームの姿
kamina_zzz
1
970
Lexical Analysis
shigashiyama
1
140
【若手エンジニア応援LT会】ソフトウェアを学んできた私がインフラエンジニアを目指した理由
kazushi_ohata
0
120
Python(PYNQ)がテーマのAMD主催のFPGAコンテストに参加してきた
iotengineer22
0
280
Featured
See All Featured
Making the Leap to Tech Lead
cromwellryan
133
8.9k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
47
5k
Six Lessons from altMBA
skipperchong
27
3.5k
Embracing the Ebb and Flow
colly
84
4.5k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
27
4.2k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
246
1.3M
Large-scale JavaScript Application Architecture
addyosmani
510
110k
Fantastic passwords and where to find them - at NoRuKo
philnash
50
2.9k
Faster Mobile Websites
deanohume
305
30k
Making Projects Easy
brettharned
115
5.9k
Bash Introduction
62gerente
608
210k
It's Worth the Effort
3n
183
27k
Transcript
第137回 雲勉【オンライン】 Google Cloud Vertex AIと LangGraphを味⽅につけて RAGを改善したひ
自己紹介 2 メモ: • クラウドインテグレーション事業部CSMセクション • 長所は、寝たら忘れること。(記憶は消し炭) • Vertex AI、うれしい。たのしい。とてもしゅき。
小林千紘
アジェンダ 3 • ゴールとか一番伝えたいこととか • 最近のRAG精度改善いろいろ • DIY RAGについて(Vertex AI)
• LangGraphについて • デモ • さいごに
4 ゴールとか一番伝えたいこととか
ゴールとか一番伝えたいこととか 5 伝えたいこと...? え?RAGの精度改善とかむずくない?
ゴールとか一番伝えたいこととか 6 ゴォーーーール!!! RAGぅ。やっぱつれぇわ。 となっている同志の幸福度を少しでも上げたい という試みです めざせベンサム思考
ゴールとか一番伝えたいこととか 7 というわけで対象者 え?RAGの精度改善とかむずくない? となっている同志 届け。いま届け。
ゴールとか一番伝えたいこととか 8 伝えたいこと、アゲイン RAG改善手法の1つ選択肢を みなさんの短期記憶の中にでも残ればうれしい と、烏滸がましくも思ってます
ゴールとか一番伝えたいこととか 9 …まとめると • ゴール ◦ RAGカスタマイズに悩んでいる同志の幸福度の向上 • 伝えたいこと ◦
RAGをより制御する手法を共有したい ◦ RAG精度改善する方法を共有したい • 対象者 ◦ エンタープライズでのRAG使用を検討している方 ◦ RAG精度改善をはじめるのに悩んでいる方 ◦ 他みんな、全員
ゴールとか一番伝えたいこととか 10 ゴールを共有した上で、各章と全体像 • 最近のRAG精度改善いろいろ ◦ そもそも最近はどんなRAG改善手法があるのか。ざっくり • DIY RAGについて(Vertex
AI) ◦ DIY RAGは、RAG改善・カスタマイズのパーツ部分 • LangGraphについて ◦ LangGraphは、各パーツを素敵に制御できる部分 • デモ ◦ 実際にLangGraphでDIY RAGのパーツを制御してみよう
11 最近のRAG精度改善いろいろ
最近のRAG精度改善いろいろ 12 各章と全体像 • 最近のRAG精度改善いろいろ ◦ そもそも最近はどんなRAG改善手法があるのか。ざっくり • DIY RAGについて(Vertex
AI) ◦ DIY RAGは、RAG改善・カスタマイズのパーツ部分 • LangGraphについて ◦ LangGraphは、各パーツを素敵に制御できる部分 • デモ ◦ 実際にDIY RAGのパーツをLangGraphで制御してみよう いまここ
最近のRAG精度改善いろいろ 13 とりま前提、というやつです 絶賛、黎明期なので改善手法も確立されてません。 これからも、新しい手法がどんどんでてきます。 ぜひご自身の環境にあった方法で! the bestestでウルトラハッピー エンジニアライフですね
最近のRAG精度改善いろいろ 14 一旦見えやすくするために、3つに分類してみました もちろん、完全にどれか。に 切り離せるものではありません • データ • プロンプト •
検索
最近のRAG精度改善いろいろ 15 今はこんなに色々できることがあるみたいですね(歓喜) • データ ◦ クリーニング ▪ なによりも大前提に必要 ◦
構造をチェンジ ▪ QA型のデータにする、など ◦ チャンク設定 ▪ オーバラップ、サイズ、など ◦ メタデータをつける ◦ Embeddingモデルのファインチューニング 次ページにつづく
次ページにつづく 最近のRAG精度改善いろいろ 16 今はこんなに色々できることがあるみたいですね(歓喜) • プロンプト ◦ クエリ拡張 ▪ 分割・要約・似てる語とか、HyDEとか
◦ Few-shot、One-shot ◦ CoT ▪ ステップバイステップで考えてもらう ◦ ToT ◦ 自己整合性 プロンプトエンジニアリングガイドが 最つよってわけ Prompt Engineering Guide https://www.promptingguide.ai/jp
最近のRAG精度改善いろいろ 17 今はこんなに色々できることがあるみたいですね(歓喜) • 検索 ◦ ハイブリッド検索 ▪ いうまでもなく、セマンティック&キーワード ◦
リランク ▪ 処理コストは、通常検索より上がるため絞ってランクづけ ◦ 検索アルゴリズムの変更 ▪ Faissとかライブラリで実装してみるとか …など、無限大卍 リランクは、デモでやります
最近のRAG精度改善いろいろ 18 個人的に思う、おすすめ最初の進め方 データ -> プロンプト -> 検索 それってあなたの感想ですよね ローグライクゲームだと思って
楽しむのが一番
最近のRAG精度改善いろいろ 19 シメる ご自身の環境にあった手法で試してみてください!
20 DIY RAGについて(Vertex AI)
DIY RAGについて(Vertex AI) 21 各章と全体像 • 最近のRAG精度改善いろいろ ◦ そもそも最近はどんなRAG改善手法があるのか。ざっくり •
DIY RAGについて(Vertex AI) ◦ DIY RAGは、RAG改善・カスタマイズのパーツ部分 • LangGraphについて ◦ LangGraphは、各パーツを素敵に制御できる部分 • デモ ◦ 実際にDIY RAGのパーツをLangGraphで制御してみよう いまここ
DIY RAGについて(Vertex AI) 22 ちょっとまった、DIY RAGってなにさ? Vertex AI Searchを各部品にしたもの のイメージ
DIY RAGについて(Vertex AI) 23 Oops、Next’24でこんなお話しがありました(言いたいマン) この図はいつ見ても興奮しますね
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は、プライベートプレビューのため公式ドキュメントを元に推測で書いてます
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
• レイアウト階層を考慮して解析・チャンク化してくれる • レイアウトとは、 ◦ ブロック、表のコンテンツ ◦ タイトル、見出し ◦ …など
• チャンク化!までしてくれる!(優勝) • 対応ファイル形式は、HTML・PDF DIY RAGについて(Vertex AI) 26 https://cloud.google.com/document-ai/docs/layout-parse-chunk 解析からチャンクまで、 1つのAPIでささっとやってくれる これが、とてもうれしい。 なんてものじゃない虜。 トリコロール Layout Parserができること
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 デモで使います
DIY RAGについて(Vertex AI) 28 Vector Search • インデックス作って簡単に検索できるよ!というサービス • 現在、ベクトル保管はGCSのみ
• Google検索のScaNNアルゴリズム使用。検索速度めちゃはや • ベクトルのフィルタリング機能あり! • 距離計算のアルゴリズムいろいろ ◦ ユークリッド距離、マンハッタン距離など • スパースエンベディング・ハイブリッド検索もサポート(現在プレビュー) https://cloud.google.com/vertex-ai/docs/vector-search/overview デモで使います
DIY RAGについて(Vertex AI) 29 Ranking API • ランクづけするよ!というサービス • クエリとデータを渡すだけで、ランクづけしてくれる
◦ なんと、インデックス不要 ◦ なんと、Vertex AI Searchでデータストアの作成不要 https://cloud.google.com/generative-ai-app-builder/docs/ranking デモで使います
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 現在、プライベートプレビューのため 、実際に触っていません。 公式ドキュメントからの推測です! パブリックプレビュー... まってます...(小声)
DIY RAGについて(Vertex AI) 31 Check Grounding API • グラウンディング具合を確認するよ •
レイテンシ鬼はや(500 ミリ秒未満) • 任意のメタデータをくっつけられる。 • 回答生成後、グラウンディング具合をチェックしてNGなら再推論という使い方とか ◦ よって、ReActとも相性がいい ◦ 単純に、レスポンス直前に弾くことにも使用可能 ◦ エンタープライズ利用に特におすすめな気持ち https://cloud.google.com/generative-ai-app-builder/docs/check-grounding デモで使います
DIY RAGについて(Vertex AI) 32 Vertex AI DIY RAGをまとめる • DIY
RAGとは、Vertex AI Searchを各部品にしたもの • エンタープライズはもちろん素早く試してみたい時にも便 利 • Google検索などで使用されているつよ機能・つよモデルを 手軽に使える
33 LangGraphについて
LangGraphについて 34 各章と全体像 • 最近のRAG精度改善いろいろ ◦ そもそも最近はどんなRAG改善手法があるのか。ざっくり • DIY RAGについて(Vertex
AI) ◦ DIY RAGは、RAG改善・カスタマイズのパーツ部分 • LangGraphについて ◦ LangGraphは、各パーツを素敵に制御できる部分 • デモ ◦ 実際にDIY RAGのパーツをLangGraphで制御してみよう いまここ
LangGraphについて 35 まちたまえ、LangGraphってなんだね? LangChain Agentsのいとこ。みたいなもの
LangGraphについて 36 …気を取り直して、LangGraphってなんだね? LangChain Agentsをより制御できるようにしたもの!
LangGraphについて 37 ん?そもそも、LangChain Agentsの動きは、どうだってばよ? ほぼ全ての意思決定と推論をLLMで行なってくれる 最高にクールなReAct手法!
LangGraphについて 38 最高にクールなLangChain Agentsを利用する上で困ってるポイントは何か? • 必ず叩いてほしいAPIあるんだけど...Agentsの外側で制御しないといけない... • トランザクションを確定する前に、ユーザの最終確認を得てから実行してほしい • そもそも、重要なAPIを呼び出すのに全てをAgentsに任せるのは怖い
• グラウンディングチェックがNGなら、もう一度推論しなおしてほしい 主にエンタープライズで使用する際に 全てをLLMに任せるのは、まだ不安がありすぎる問題 …など
LangGraphについて 39 そう、そんな願いを叶えるヒーローが LangGraphくん! ってわけですね
LangGraphについて 40 そして、フロー制御ができるってことは LangGraphくんは、RAGの精度改善にもうってつけ! うおおおおおおおお
LangGraphについて 41 • いわゆるDAGを実装できるもの(Airflowと同じ考え方) ◦ 循環実装がしやすい(通常のプログラミングだとややこしくなりがち…) ◦ 複雑なフロー制御がとても得意 • ステート管理がらくちん便利
• LangChainと親和性たかし LangGraphくんの特にすきポイント LangGraph公式 https://langchain-ai.github.io/langgraph/ …など
LangGraphについて 42 公式サイトの図が超絶ウルトラわかりやすいので貼る 引用元:https://langchain-ai.github.io/langgraph/tutorials/rag/langgraph_adaptive_rag/ デモでは、擬似的なこれやります
LangGraphについて 43 LangGraphをふりかえる • LangGraphは、Agentsをより制御できるようにしたもの ! • RAGのエンタープライズ利用に特におすすめ! • RAGの精度改善、カスタマイズにうってつけ!
44 デモ
デモ 45 各章と全体像 • 最近のRAG精度改善いろいろ ◦ そもそも最近はどんなRAG改善手法があるのか。ざっくり • DIY RAGについて(Vertex
AI) ◦ DIY RAGは、RAG改善・カスタマイズのパーツ部分 • LangGraphについて ◦ LangGraphは、各パーツを素敵に制御できる部分 • デモ ◦ 実際にDIY RAGのパーツをLangGraphで制御してみよう いまここ
デモ 46 早速ですが、ふたたびのやりたいことの図 引用元:https://langchain-ai.github.io/langgraph/tutorials/rag/langgraph_adaptive_rag/ デモでは、擬似的なこれやります
デモ 47 デモの機能とポイント • 機能 ◦ RAGを使用した回答生成 ▪ RAG精度改善(リランク・グラウンディングチェック) ▪
ハルシネーションし続ける場合は、その旨定型文で回答させる ◦ APIを使用したトランザクション処理 ▪ 本登録前にユーザの承認ステップを挟む ◦ 上記以外の質問については、明示的に弾く なんと、これらの機能を 一つのLangGraphで実装できちゃう! API部分は、ハリボテ実装 次ページにつづく
デモ 48 デモの機能とポイント • モデル部分 ◦ クエリ解析用モデルと生成用モデルの2つのモデルで処理する ▪ クエリ解析用モデルは、ユーザクエリのルーティングに使用 ▪
生成用モデルは、RAGに使用 ◦ ちなみに...モデル分離する背景は ▪ LangChainのVertex AI classでは、スキーマ型で出力できないため(GPT使用) ▪ デモの実装内容であれば、基本的にモデル分離はせずともOK! なんと、これらの機能を 一つのLangGraphで実装できちゃう! LangChainに出力整形Kitがあるので、 ぜひ、実装してみてください!
デモ 49 デモの処理の流れ
デモ 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
デモ 51 デモする いざ、NotebookへGo
デモ 52 デモまとめ • ささささっとコードを書くだけでRAG一式簡単にできる • DIY RAGという名の通りRAG機能をほぼAPIだけでできる • LangGraphで複雑なフロー、状態管理もやってくれる
53 さいごに
さいごに 54 まとめよう! • 最近のRAG精度改善いろいろ ◦ 手法は無限大にでてきます!ご自身の環境と相談!RAGもおっきく無限大! ◦ ゼロから進める時は、「データ ->
プロンプト -> 検索」順が個人的におすすめ • DIY RAGについて(Vertex AI) ◦ Vertex AI Searchを各部品にしたもの ◦ RAG機能をほぼAPIだけで処理できる ◦ しかも、Google検索などで使用されているつよ機能・つよモデルを手軽に使える • LangGraphについて ◦ LangChain Agentsをより制御できるようにしたもの ◦ 複雑なフロー、状態管理も簡単にできる
さいごに 55 さいごにのさいごに Let's エンジョイ RAG ライフ! いかがだったでしょうか? ぐぬぬ、RAGカスタマイズ...となっている同志にすこしでもパワーを与えられていたら... 幸甚の極み爆発です。
さいごに 56 ご視聴いただき、ありがとうございました!