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
実践!サーバーレス RAG 構築:Firestore ベクトル検索と VertexAI LLM 活用
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
GoogleCloudPlatformJapan
September 20, 2024
Business
460
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
実践!サーバーレス RAG 構築:Firestore ベクトル検索と VertexAI LLM 活用
GoogleCloudPlatformJapan
September 20, 2024
More Decks by GoogleCloudPlatformJapan
See All by GoogleCloudPlatformJapan
日本CTO協会 新卒合同研修_Google Cloud
googlecloudjapan
0
40
Jagu'e'r O11y分科会 0630 - kubectl logsのその先へ、実は使えるいろんなKubernetesログを追ってみよう
googlecloudjapan
0
88
Google Kubernetes Engine (GKE) の可観測性を活用し、 システムの Resiliency を高める障害原因調査
googlecloudjapan
0
110
「原因不明なナゾの障害」で終わらないための Kubernetes のログの徹底活用
googlecloudjapan
0
470
15 分で学ぶ Cloud Run のユースケースと代表的なアーキテクチャパターン
googlecloudjapan
3
840
Google Cloud の スペシャリストと学ぶ! BigQuery & Gemini
googlecloudjapan
0
280
ログから学ぶKubernetes
googlecloudjapan
1
740
GKE Enterprise 徹底解説
googlecloudjapan
2
1.4k
Cloud Run で作るサーバーレス アーキテクチャ 30 連発 - これのときはこう!
googlecloudjapan
33
12k
Other Decks in Business
See All in Business
ClaudeCode × Hubspot 営業・マーケティングAI段階的成長ロードマップ
nagatsu
0
760
Fable5との実践から生まれた非エンジニア組織のループエンジニアリング
nagatsu
0
710
タケウチグループRecruit
takeuchigroup
0
13k
Mercari-Fact-book_en
mercari_inc
2
37k
エムスリーキャリア Work Support採用資料 / M3C Work Support
m3c
0
14k
若手としての正解を得られなかった話~でもたぶん生きのこれる~
chronoll
0
330
PMMから始まる経営 PMM→CMO/CPOの5年から導いた、 PMMの役割
kazuotanaka
1
250
okr and devops -- Why OKRs Fail and DevOps as the Practice to Make Them Work
ikuodanaka
0
2.7k
スマートキャンプ株式会社 会社紹介資料 / companydeck
smartcamp
19
740k
プロシェアリング白書2026_PROSHARING_REPORT_2026
circulation
0
190
Nstock 採用資料 / We are hiring
nstock
30
390k
Copilotで資料を作るようになって仕事のやり方が変わった話
aonomasahiro
2
700
Featured
See All Featured
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
270
RailsConf 2023
tenderlove
30
1.5k
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
290
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.9k
Side Projects
sachag
455
43k
The Cult of Friendly URLs
andyhume
79
6.9k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
201
75k
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
65
56k
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
180
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
62
45k
Transcript
実践!サーバーレス RAG 構築 :Firestore ベクトル検索と VertexAI LLM 活用 頼兼 孝幸
グーグル・クラウド・ジャパン合同会社 Application Modernization Specialist
スピーカー自己紹介 グーグル・クラウド・ジャパン合同会社 アプリケーション モダナイゼーション スペシャリスト 担当製品エリア: • GKE • サーバーレス(Cloud
Run) • CI/CD 最近は、生成 AI アプリ開発に触れることが増えてきました 頼兼 孝幸
サーバーレスで RAG?
Proprietary + Confidential RAG(検索拡張生成)とは 大規模言語モデル(LLM)の出力の質を向上させるための技術 • 生成された回答の事実的正確性を向上させる • モデルが学習していない知識へのアクセスを可能にする(グラウンディング) •
モデルが使用する知識を変更する • モデルが情報源を引用できるようにする つまり、信頼できる専門性も理解した、最新かつ正確なデータを基に生成 AI が回答を 生成するために RAG が必要となる
Proprietary + Confidential 独自知識がない時の回答 すみません、私はお店のメニューについて何も知りません。お店の名前を教え てください。 … そうじゃないん だよなぁ この店のメニューの前菜が見たい
Gemini レストランにて
Proprietary + Confidential 独自知識がある時の回答 これにしよう ザ・クラウドキッチンのメニューの前菜は以下の通りです。 … Gemini この店のメニューの前菜が見たい 店の知識
レストランにて
データ登録の例 Storage アプリ DB LLM (e.g. Gemini) 1. upload 2.
trigger 3. Generate 4. insert
サーバーレス アーキテクチャ Cloud Storage Cloud Run Eventarc Vertex AI API
Firestore
プロダクト概要 - Cloud Run 特長 • コンテナをデプロイするだけで 外部 から到達可能な URL
が発行される • 0 〜 N へトラフィックに応じて 高速にスケーリング • イベント駆動 で処理を実行 • HTTP/2, WebSocket, gRPC への対応 • 高度なトラフィック管理 が統合 サービス メッシュのサポート Preview • トラフィック管理の強化 • 可観測性の向上 • 暗黙的なサービス間認証(実装変更なし) Cloud Run Jobs • HTTP リクエストに依らない実行 • 分散タスクの実行で、より長時間の実行が可能 • 明示的な並列処理や、リトライ回数を定義
プロダクト概要 - Vertex AI 生成 AI 関連の特長 • プロンプトにテキスト、画像、動画、音声、 ドキュメントなどのデータだけでなく、複数
のデータ(マルチモーダル )を含めること が可能 • テキストの多次元ベクトルデータ を 作成し、ベクトル検索を可能に • モデルのチューニングも可能 Model Garden • Google 製(Gemini、Imagen、Codey)、サードパー ティ製(Anthropic の Claude Model Family)、オープン モデル(Gemma、Llama 3.1)など、 幅広いモデルを選択して API アクセス可能 Agent Builder • 開発者が自然言語またはコードを使用して、 AI エージェントとアプリを構築できるローコード プラットフォーム
プロダクト概要 - Firestore 特長 • スケーラブルでメンテナンス不要 のサー バーレス ドキュメント DB
• スキーマレスで柔軟なデータモデル • 従量課金(オペレーション、ストレージ、 ネットワーク帯域幅) • クライアントとリアルタイム同期 可能 • Firebase と統合 • 無料枠が存在 ベクトル検索のサポート • K 最近傍(KNN)ベクトル検索が可能 • 開発の柔軟性とコスト効率を高めることが可 複数の DB 対応(Datastore モードと混合も可) • 1 プロジェクト内でリージョン、また、 Firestore モードの 種別を分けた複数データベースが作成可能
データの登録の一例
PDF データがアップロードされる Cloud Storage
イベントをトリガーに POST リクエスト Cloud Storage Cloud Run Eventarc Request body
{ “bucket”: “GCS バケット名”, “name”: “オブジェクト PATH”, “contentType”: “application/pdf”, "updated": "2024-09-11T08:31:03.618Z" ... }
PDF データを取得して chunk 分割後、 テキスト エンベディングを作成 Cloud Storage Cloud Run
Eventarc Vertex AI テキスト エンべディング chunk 毎にテキスト分割 768 次元ベクトル [ -0.010465549305081367, 0.037910543382167816, 0.0072224168106913567, … ]
Field に対してベクトル インデックス作成 Cloud Storage Cloud Run Eventarc Vertex AI
Firestore gcloud firestore indexes composite create \ --collection-group=collection-group \ --query-scope=COLLECTION \ --field-config field-path=vector-field,vector-config='vector-configuration' \ --database=database-id
chunk 毎のベクトル データや、メタデータ登録 Cloud Storage Cloud Run Eventarc Vertex AI
Firestore ドキュメント { “chunk”: “レストラン名: …”, “embedding”: Vector<768>, “metadata”: … }
データの検索
クライアントからリクエスト Cloud Run この店のメニューの前菜が見たい
プロンプトのテキスト エンべディングを作成 Cloud Run Vertex AI テキスト エンべディング 768 次元ベクトル
[ -0.010465549305081367, 0.037910543382167816, 0.0072224168106913567, … ]
Firestore でベクトル検索 Cloud Run Firestore Python の例 from google.cloud import
firestore from google.cloud.firestore_v1.base_vector_query import DistanceMeasure from google.cloud.firestore_v1.vector import Vector db = firestore.Client(project=project_id) collection = db.collection(COLLECTION_NAME) collection.find_nearest( vector_field=EMB_FIELD_NAME, query_vector=Vector(query_embedding), distance_measure=DistanceMeasure.EUCLIDEAN, limit=5, )
取得したデータを背景に、 LLM に生成リクエスト Cloud Run Vertex AI Python の例 history
= [] for snapshot in vector_query.get(): text_chunk = snapshot.get("chunk") history.append(Content(role="model", parts=[Part.from_text(text_chunk)])) history.append(Content(role="user", parts=[Part.from_text(query.query)])) responses = generation_model.generate_content( contents=history, generation_config={ "max_output_tokens": 8192, "temperature": 1, "top_p": 0.95, }, )
期待する出力結果をレスポンスとして返す Cloud Run Vertex AI この店のメニューの前菜は、以下のとおりです: 雲形ブルスケッタ:グリルしたパンにフレッシュトマ ト、バジル、オリーブオイルをトッピング。雲の形に 仕上げました。 ¥1200
…
分析もしたほうがベター
入力、出力、関連情報をまとめてデータ保持 Cloud Run Vertex AI BigQuery Pub/Sub { “question”: “この店のメニューの前菜が見たい
”, “answer”: “この店のメニューの前菜は ...”, “metadata”: { (DB データ、template、利用モデル、 レイテンシ など) } }
ML.GENERATE_TEXT 関数を利用したクエリで要約評価 Cloud Run Vertex AI BigQuery Pub/Sub ML.GENERATE_TEXT
まとめ • 今回のフローは一例で、他プロダクトや API を利用する方法も当然あります • VM や VPC ネットワークの作成不要で
RAG を実践できるのが優位なポイント ◦ Cloud Storage (Object storage) ◦ Cloud Run (Web App / API / Data transform) ◦ Firestore (DB / Vector search) ◦ Vertex AI (GenAI text generation / embeddings) ◦ BigQuery (Analytics) • Google Cloud のサーバーレス環境で、生成 AI アプリを開発してみませんか?
ちょっとだけ宣伝
すべての Google Cloud 開発者、技術者、学生のための メンバーシップ プログラム! 知る 多彩なコンテンツで 最新情報が学べる 高める
学習プログラムで スキルアップできる つながる キャリアや年齢を超えた 仲間と交流できる cloud.google.com/innovators ご登録はこちら メンバー特典 メンバー登録受付中! コミュニティ オンライン学習プラットフォーム「 Google Cloud Skills Boost 」を活用でき るよう、毎月 35 クレジットが無料で付与されます。
Innovators Live Japan デベロッパー・エンジニア向けのセッションを ライブ配信でお届け! https://goo.gle/GCI-LIVE-JP Google Cloud のメンバーやユーザーが、 Google
Cloud やデベロッパー界隈で注目のトピックについて、トークを繰り広げます。 AI / ML クラウド ネイティブ開発 DevOps / SRE データ分析 Game (GEM) ウェビナー ご登録はこちら Community
Thank you