はじめに
七尾百合子さん、お誕生日 238日目 おめでとうございます! nikkieです。
Gemini のグラウンディングについて理解を深めたく手を動かしました。
目次
「Vertex AI Search によるグラウンディング」
「グラウンディングの概要」より、グラウンディングの利点として
- モデルのハルシネーション(モデルが事実に基づいていないコンテンツを生成すること)を削減します。
- モデルのレスポンスをデータソースに固定します。
- 情報源へのリンク(根拠)を提供することで、監査可能性を確保します。
Google 検索などを使用した Web 上のデータへのグラウンディングもできますが、今回は手元のデータへのグラウンディングを試します。
Vertex AI Search を使用したグラウンディング
検索拡張生成(RAG)を使用して、モデルを Vertex AI Search に保存されているウェブサイトのデータまたはドキュメント セットに接続します。
Gemini のグラウンディングは要は RAG ととらえたので、いつものデータセットで試します。
環境構築:データストア
手元のデータをデータストアにします。
Google Cloud のコンソールから AI Applications でデータストアを作成しました。
- Google Storage
- 非構造化ドキュメント(「特殊データのインポート」内)
- 今回はTXTファイル
- 同期の頻度:1回限り
- (チャンク設定はデフォルト)
輝きの向こう側へ!(通称ムビマス)のセリフデータ1を GCS にアップロードし、そのファイル(gs://で始まる URL)を指定してインポートしました。
あとはデータストア名を入力して作成します。
名前を元に ID が振られています

ムビマスを知っている風 Gemini とおしゃべり
スクリプト
「データストアを使用して根拠のある回答を生成する」の Python コードを持ってきたのですが、少し変えています。
VertexAISearchの引数はdatastoreでした(ドキュメントにプルリク送りたい)- データストアのパスは、プロジェクトとデータストアの ID を指定
- ロケーションは global、コレクションは default_collection
- 今回はシステムプロンプトが重要でした。与えない時、グラウンディングを無視しました
- API バージョン v1 指定は stable なエンドポイントの選択と知りました
グラウンディングのツールを渡したことで、generateContentのレスポンスにその結果が追加されています。
ref: レスポンスを理解する
- Candidate の
grounding_metadata- https://googleapis.github.io/python-genai/genai.html#genai.types.Candidate.grounding_metadata
Noneではなく、GroundingMetadataが入ります
- GroundingMetadata のフィールドのうち注目したのは2つ
- https://googleapis.github.io/python-genai/genai.html#genai.types.GroundingMetadata
grounding_chunks(GroundingChunk)- https://googleapis.github.io/python-genai/genai.html#genai.types.GroundingChunk
- Vertex AI Search から返ってきたチャンクで、回答をサポートしているという理解です
grounding_supports(GroundingSupport)- https://googleapis.github.io/python-genai/genai.html#genai.types.GroundingSupport
grounding_chunk_indices:参照したチャンクのインデックスsegment:チャンクで裏付けられた、生成テキスト
システムプロンプトの必要性に気づく前は、segmentはムビマスのセリフの内容なのに、それを無視して一般的なこと(例:リーダーは岸田文雄2)を回答してきました
レスポンス
2例紹介
アイドルの中のリーダーは誰ですか
「アイドルの中のリーダーは誰ですか」というご質問ですが、アイドル業界全体に共通する単一の「リーダー」という存在はいません。リーダーは、それぞれのアイドルグループやプロジェクトの中に存在します。 例えば、『アイドルマスター』シリーズの765プロのアイドルたちの中では、天海春香がリーダーを務めています。彼女はプロデューサーからリーダーを任され、他のアイドルたちからも「リーダー」として頼りにされ、激励される場面が描写されています。彼女自身も、メンバー全員でライブを成功させようと意気込みを語っています。
segment3
- 彼女自身も、メンバー全員でライブを成功させようと意気込みを語っています。
アイドルたちにはもう時間がないんですか
アイドルたちには、状況によって「もう時間がない」と感じる場面があるようです。 例えば、志保は「もう時間が無いんです! 今進める人間だけでも進まないと、みんなダメになりますよ!?」と焦りを見せていました。また、伊織もリーダーとしての覚悟を促し、「もうあまり時間はないわよ…」と春香に伝えています。 しかし、皆が同じように時間がないと感じているわけではありません。可奈は、練習の出来について志保から厳しい言葉をかけられた際、「本番までまだ時間あるんだし、みんなで一緒に頑張れば、きっと大丈夫だよ」と、まだ猶予があることを示唆する発言もしていました。 これらのセリフから、アイドルたちが直面している状況において、成功へのプレッシャーや目標達成のためのタイムリミットを感じている者と、まだ間に合うと信じて努力を続けようとする者がいることがうかがえます。
segment
- 今進める人間だけでも進まないと、みんなダメになりますよ!?」と焦りを見せていました
- また、伊織もリーダーとしての覚悟を促し、「もうあまり時間はないわよ…」と春香に伝えています
- 可奈は、練習の出来について志保から厳しい言葉をかけられた際、「本番までまだ時間あるんだし、みんなで一緒に頑張れば、きっと大丈夫だよ」と、まだ猶予があることを示唆する発言もしていました
後者は狂犬沢志保さん以外も拾っていて感動しました。
終わりに
Vertex AI Search によるグラウンディングを触りました。
ツールを渡せばグラウンディングが有効になりますが、Gemini の回答内容にグラウンディングを効かせるには現状システムプロンプトが重要です。
ツールを渡すだけと簡単だろうと思い込んでいた4ので、この点は意外でした。
論文を使ったら NotebookLM のようなことができそうな気がします。
利用頻度を増していった際に「データストア作成を自動化できるか」はやや気になります。
- typo 修正版を使っています:https://github.com/ftnext/erutaso-THE-IDOL-MASTER-MOVIE/blob/393b1a2e8c5a3b6ed54f4616178b40d43e8783b1/THE%20IDOLM%40STER%20MOVIE%20%E8%BC%9D%E3%81%8D%E3%81%AE%E5%90%91%E3%81%93%E3%81%86%E5%81%B4%E3%81%B8%EF%BC%81.txt↩
- カットオフのために古い知識ですね↩
- segment は start_index と end_index も持ちます↩
- DeepMind の Gemini API の方に直近登場した機能も触ってみたいですね。簡単にRAGできるようです ↩