BigQuery と PaLM で進化するデータ分析
Summary
TLDRこのスクリプトでは、GoogleCloudのビッグクエリープロダクトについて詳しく説明されています。最初にビッグクエリースタジオという新しい分析環境について、機能やコラボレーション機能などを紹介しています。次に、ビッグクエリーに統合されたllm(大規模言語モデル)の活用方法について解説しており、パルムモデルの呼び出し方法や、ラグ(Retrieval Augmented Generation)と呼ばれる機械学習による制度改善の手法などが説明されています。分析体験の向上や機械学習の活用など、ビッグクエリーの最新機能が分かりやすく紹介されています。
Takeaways
- 🌐 BigQueryスタジオは、データ分析や機械学習開発のためのコラボレーション可能な次世代ワークスペースで、コラボエンタープライズとの統合やBigframesなどの新機能が追加された。
- 💻 Bigframesパッケージでは、Pandasライクな書き心地でBigQueryの処理をオフロードできる。
- 🤖 BigQueryからPaLM(大規模言語モデル)を呼び出し、データに基づいた回答を生成できるようになった。
- ⚡ BigframesのMLモジュールでは、サイキットラーンライクなインターフェースを使ってBigQueryで機械学習モデルの開発ができる。
- 🔍 BigQueryでは、リトリーバル対話補助(RAG)の技術を使い、データに基づいたプロンプトを生成してLLMの回答の精度を高められる。
- ✍️ BigQueryでは、SQLのみでコードの生成や変換、要約などのタスクをLLMに実行させることができる。
- 🔀 ヘルパー関数にリモートファンクションのアノテーションを付けると、BigQueryからクラウド関数としてデプロイされ、並列実行できる。
- 📈 データプロファイリングやリネージの機能を活用すれば、より効率的なデータ分析が可能になる。
- 🔐 コラボエンタープライズにより、セキュリティとガバナンスを備えたエンタープライズ向けのJupyterノートブック環境が提供される。
- 💡 AIチャットコードアシスタントにより、コード生成、デバッグ、リファクタリングの補助ができる。
Q & A
ビッグクエリースタジオとはどのようなものですか?
-ビッグクエリースタジオは、データ分析や機械学習開発を行うためのコラボレーション可能なワークスペースであり、開発環境とも呼ばれます。ここではノートブックを使ってPythonでデータ分析ができ、BigQueryとLLMの機能を組み合わせることができます。
ビッグクエリースタジオの主な機能は何ですか?
-主な機能には、コラボエンタープライズとの統合、データプロファイリング機能、リネージ機能、PalmなどのLLMとの統合、コードアシスタント、BigQueryデータフレームなどがあります。
BigQueryデータフレームとは何ですか?
-BigQueryデータフレームは、BigFrames.pandasやBigFrames.mlのようなPythonパッケージで提供され、PandasやScikitLearnのようなAPIを使用できます。裏側ではBigQueryで処理が実行されるため、大規模なデータセットでも分析できます。
PalmをBigQueryから呼び出す手順を教えてください。
-手順は2つあります。1つ目は、最初に1回だけモデルを登録し、名前をつけて保存します。2つ目は、ml.generate_text関数を使い、登録したモデル名とプロンプトを渡して実行します。
LLMをより実用的に使うためのラグ(LLaMa Retrieval Augmented Generation)とは何ですか?
-ラグは、LLMと情報検索技術を組み合わせた手法です。データをベクトル化し、ユーザーの質問に近いデータを検索してLLMに渡すことで、LLMの回答の正確性を向上させることができます。BigQueryではラグの実装がサポートされています。
ラグを実装する際の主なステップは何ですか?
-主なステップは、1)エンベディングモデルを使ってデータをベクトル化し、ベクトルストアを作成する、2)ユーザーの質問をベクトル化し、ベクトル検索でプロンプトを拡張する、3)拡張したプロンプトをLLMに渡して実行する、となります。
ビッグクエリースタジオを使うメリットは何ですか?
-ビッグクエリースタジオを使うメリットは、複数のツールを組み合わせる必要がなくなり、SQLとPythonだけで機械学習モデルの開発とデータ分析が行えるようになることです。また、データ転送の手間が省け、コンプライアンスの問題も回避できます。
ビッグクエリースタジオのコラボレーション機能について教えてください。
-ビッグクエリースタジオでは、ノートブックを共有したり、バージョン管理したりできます。また、クラウドファンクションにデプロイされたヘルパー関数を呼び出して並列実行することもできます。
ビッグクエリースタジオで機械学習モデルを開発する際の利点は何ですか?
-ビッグクエリースタジオでは、SQLだけで機械学習モデルの開発ができるため、複数のプログラミング言語を使い分ける必要がありません。また、データ転送の手間もかからず、コンプライアンスの問題も発生しにくくなります。
ビッグクエリースタジオでLLMを活用する場合の具体的なユースケースは何ですか?
-具体的なユースケースとしては、コンテンツ生成、分類、クエリ生成、変換、要約などがあげられます。LLMをデータに適用して様々な処理を行うことができます。
Outlines
🙋 自己紹介と本セッションの概要
この段落では、講演者が自己紹介を行い、本セッションの内容について概説しています。講演者はGoogleのデータアナリティクススペシャリストで、通常はBigQueryやVertexAIなどのプロダクトを紹介していると述べています。今回のセッションでは、BigQueryの新機能であるBigQueryスタジオと、BigQueryにおけるPaLM(大規模言語モデル)の統合について説明する予定であると説明しています。
🖥️ BigQueryスタジオとコラボレーション環境の紹介
この段落では、BigQueryスタジオとコラボエンタープライズについて説明しています。BigQueryスタジオは、データ分析や機械学習の開発を行うためのコラボレーション可能なワークスペースで、GoogleのJupyter Notebookベースの環境であるコラボエンタープライズと統合されています。このコラボレーション環境では、SQLとPythonノートブックの両方を利用できるようになり、機械学習の開発が容易になったことが説明されています。
📊 BigQueryでのデータ分析の実演
この段落では、実際にBigQueryスタジオを使ったデータ分析の様子が動画で紹介されています。Pythonのパッケージダウンロードログから、よくダウンロードされているパッケージを集計するというユースケースが設定され、BigQueryスタジオの機能を使ってデータの可視化、リネージの確認、データプロファイリングなどを実演しています。さらに、PythonのノートブックからBigQueryにアクセスする方法も紹介されています。
🧠 PaLMの統合とSQLからの利用方法
この段落では、BigQueryへのPaLM(大規模言語モデル)の統合と、SQLからPaLMを呼び出す方法が説明されています。PaLMモデルを登録し、ml_generate_text関数を使うことで、BigQueryのデータをプロンプトとしてPaLMに投げることができます。具体例として、都市名からその国名を返すようなプロンプトをPaLMに実行させる方法が示されています。さらに、PythonのノートブックからBigQueryのPaLMモデルを呼び出す方法も紹介されています。
🔍 LLMのプロンプト拡張と実用性の向上
この段落では、大規模言語モデル(LLM)の実用性を高めるための技術であるラグ(Retrieval Augmented Generation)について説明しています。ラグはエンベディングとベクトル検索を組み合わせることで、LLMのプロンプトを実データに基づいて拡張し、より適切な回答を生成することができます。具体例として、Pythonのパッケージをビッグクエリーのデータからベクトル化し、ユーザーの質問に最適なパッケージを検索して、LLMのプロンプトに追加する方法が示されています。
🌐 ラグによるデータ駆動型のLLM実演
この段落では、前の段落で説明したラグの技術を実際に適用する様子が動画で紹介されています。Pythonのパッケージのデータをエンベディングしてベクトルストレージを作成し、ユーザーの質問をベクトル化して最適なパッケージを検索します。そして、検索結果をLLMのプロンプトに追加して、適切な回答を生成することに成功しています。このプロセス全体がSQLのみで実行できる点が強調されています。
✨ BigQueryの新機能とLLMの活用のまとめ
この段落は、本セッションのまとめとなっています。BigQueryスタジオの新機能と、LLMの統合によってBigQueryの可能性が広がったことが強調されています。BigQueryスタジオでは次世代型のデータ分析が可能になり、LLMは様々な形でデータに適用できるようになったことが述べられています。最後に、本セッションで紹介しきれなかったLLMのユースケースとして、クエリ生成や変換、要約などの活用方法が挙げられています。
🙏 終わりの挨拶と感謝の言葉
この段落は、セッションの終わりの挨拶と感謝の言葉が述べられています。講演者は、本セッションの内容が走り過ぎた部分があったことを認め、質問があればアクサスピーカーで対応することを呼びかけています。最後に、参加者に対して感謝の言葉を述べ、セッションを締めくくっています。
Mindmap
Keywords
💡ビッグクエリースタジオ
💡llm
💡コラボエンタープライズ
💡ビッグフレーズ
💡埋め込み
💡ベクトル検索
💡ラグ
💡プロンプト
💡データプロファイリング
💡リネージ
Highlights
ビッグクエリーのコンソールにビッグクエリースタジオという新たな機能が加わり、より素敵な分析体験が可能になった。
ビッグクエリーとLLMが統合され、LLMの質問に答えられるようになった。
LLMと情報検索技術を組み合わせた「ラグ」と呼ばれる技術により、LLMの実用性が大きく向上する。
ラグはエンベディングとベクトル検索の2つの要素技術から構成される。
ビッグクエリーでは埋め込みとベクトル検索をサポートし、ラグを実装できる。
ビッグクエリースタジオでは、データ分析や機械学習開発を行うコラボレーション可能なワークスペースが提供される。
コラボエンタープライズとのインテグレーションにより、Googleが提供するエンタープライズ向けのJupyterノートブック環境が使用可能。
ビッグクエリーデータフレームズを使うと、Pythonの書き心地でビッグクエリーのパワーを利用できる。
ビッグクエリースタジオではコラボエンタープライズ上でPythonのノートブックが書ける。
PALMモデルをBigframesを介して呼び出すことができる。
ビッグクエリーからPALMを呼び出して質問に答えさせることができる。
Bigframesを使えば、Pythonのパンダスのような書き心地でLLMの開発ができる。
ヘルパー関数にリモートファンクションズアノテーションをつけると、関数がクラウドファンクションにデプロイされる。
ビッグクエリーでSQLだけでラグの実装が可能。
ラグを使うことでLLMの精度を上げられる。
Transcripts
[音楽]
はい皆さんこんにちはそれではセッション
の内容の方ですね始めさせていただければ
と思い
ます改めまして自己紹介させていただき
ますと私GoogleCloudのデータ
アナリティクススペシャリストをやって
おります村上優馬と申します普段はですね
ビッグクエリーですとかバーッAIといっ
たプロダクトをえっとま皆様に紹介させて
いただいているんですけれども今回の
セッションもですね内容はこれらの
プロダクトに関連したものになっており
ますではですね早速えセシの実際の内容
ですね入っていきたいと思い
ますでこのセッションでは大きく分けて2
つのことについて説明していきたいと思い
ます1つ目がビッグクエリーが提供する
新たな分析体験こちらなんですけれども
ビッグクエリーのコンソールにですねま
もうすでににお気づきの方いらっしゃるか
もしれないんですけどビッグクエリー
スタジオという新たな機能が加わりました
こちらでですねまより素敵な分析体験が
データ分析体験が可能になりましたので
これどのような分析体験が可能になったの
かっていうところを動画を交えながら紹介
したいと思っています2つ目がllmです
ねどの統合でまllmが何かということは
もうなあの改めて説明するまでもないとは
思うんですけれどもビより元々機械学習の
ケイパビリティはあったんですけれども
ビッグクエリーとそれからllmですね
それがコードに統合されるようになったん
ですねなのでllmの水論はもちろん
できるようになったんですけれどもそれ
から例えばラグと呼ばれるllmの実用性
をですね大きく引き上げるようなま技術
ですねそれをSQLだけで組むことも
できるようになりましたのでそれでどんな
ことができるのっていうところも説明して
いきたいと思いますでは1つ目ですね新た
な分析体験新たな分析体験ってなんやねっ
ていう感じなんですけれども説明していき
ましょうままずビッグクエリーに限らず
もうちょっとだけ大きなスコープの話をさ
せてください機械学習の機能って
Googleクラウのソリューション群
色々なところに統合されていますま機械
学習の統合開発ソリューションであります
ねえっとバーッAIはまもちろんなんです
けれどもalidDBですとかスパナーと
かですねちょうど隣のルームでなんか
SQLの話してますけれどもまそちらで
あのそちらではえっとまそのデータに対し
てバテのモデル適用して水論結果を
ビジネスのデータベースですねに引き回し
てまアプリケーションで活用するっていう
ことができるようになっておりますしそれ
からえっとBIツールとしても使用可能な
ルッカですねルッカでは機械学習の推論
結果をビジネスアプリケーションに
組み込むといった使い方ができるようにも
なっておりますでビッグクエリーですねま
まビッグクエリーも機械学習機能というの
は先ほど言ったように統合されておりまし
てえっとビッグクエリmlと言ってSQL
で機械学習モデル開発できるものがあっ
たりですとかvtexAIのモデルを開発
できたりとかあ接続できたりとかそういう
ことってあったんですけれどもえっとま
このビッグクアリーを使って実際に機械
学習モデル作る時のことを考えてみると
SQLでなん度ま色々なことできますって
言っては実際のところ複数のツールを
組み合わせながら開発してい
るっていうのがま正直実情じゃないかなっ
て思っていますですと複数のツール
使い分けるとですねあのまそれぞれの
ツール熟する必要があったりとか複数の
プログラミング言語まパえっと
PythonとSQLですかねま
使い分ける必要就職する必要があったり
データ転送する必要があったりしましてま
時間と手間もかかりますしデータ転送と
なってくるとコンプライアンス上の問題も
生じたりはしますかね
でそこを解決するために生まれた新たな
分析体験を提供するものこれがビッグ
クエリースタジオというものになってい
ますビッグクエリースタジはですねデータ
に関わる皆様がデータ分析や機械学習開発
を行うために作られたコラボレーション
可能なワークスペースとなっていますま
開発環境と言い換えてもいいかもしれない
ですね
こちらですねま先週よりえっとプレビュー
の申し込みもなくですねね基本的に皆様
もう実はすでにお使いいただけるように
なっているんじゃないかなとは思ってい
ますでビッグクエリースタジオとですね
あの一言で言っても実は色々な機能がつい
ておりましてまた1つ大きなものがコラボ
エンタープライズとのインテグレーション
になっておりますコラボエンタープライズ
はですねGoogleが提供する
エンタープライズ向けのジュピター
ノートブック環境になっておりますここに
いる皆様ってコラボラトリーという環境を
聞いたことってあるっていう方は
いらっしゃいますかね結構データまいくつ
か手上がってけてくださいましたね
ありがとうございますまデータ分析界隈の
方々だったらご存知なんではないかと思う
んですけれどもえプランにもよるんです
けど無料から使えるノートブック環境で
ですてねえっと確めてきたのは
インスタンスの管理が必要ないことですね
ま必要な時に計算回す必要がある時にラン
タイムに接続してそこで計算回すっていう
要するにインスタンス管理のする必要が
なくてえっと計算リソースだけサクっと
ランタム接続して使えるんでま管理の手間
が少なくてノートブック開発に非常に便利
だよっていう環境でしたこれにですね
セキュリティですとかガバナンスですとか
そういった機能をえっと統合して
エンタープライズ向けでも使用したのが
コラボエンタープライズですでこのコラボ
エンタープライズがビッグクエリーから
使えるようになりましたっていうところ
ですねじゃこれ何ができるようになったか
と言とこれまでビッグクエリーのコソー
ルってあのSQL書いてあったと思うん
ですよ当然だと思うんですけどそこで
ノートブックも書けるようになっちゃい
ましたというのがこのえコラボ
エンタープライズとのインテグレーション
になっております後ほど紹介したいと思い
ますとそれからですねコラボえっとこれが
コラボエンタープライズだったんです
けれどもこれまでデータプレックスで提供
されていたデータプロファイリングの機能
ですとかデータ品質ですとかリネージの
機能がコンソールからも参照できるように
なりましたこれがどう便利なのかも後で
紹介させてくださいそれからAIに
チャットコードアシスタント要するに
コード生成ですとかデバッグですとか
リファクタリング補助してくれるような
機能もこちらについていますそして最後
ですねちょっと注目したいユニークな機能
がありましてこれがビッグクエリーデータ
フレイムズというものになっています普段
のPythonですとPythonの
パンダズやサイキットラーンまデータ分析
されていてPythonお使いだったら
使ってる方は多いんじゃないかと思うん
ですけれどもその書き心地でビッグ
クエリーのパワー使えるようになっちゃい
ましたというものですここをもう少し
詳しく説明してみ
ましょうビッグクエリーデータフレーズは
ですねビッグフレーズというPython
のパッケージで提供されます普段のパンス
ですとかサイキットランのような書き心地
でコードを書けば裏側でビッグクエリー
ですね処理がオフロードされて極めて巨大
なデータセットであっても普通の
Pythonの知識だけでデータ分析でき
てしまうというものになってます
パッケージはですねご覧のように2つあり
ましてBIGframes.pantas
っていうやつとドmlっていうやつを提供
していますねドpantasが
pantaslikeえっとドamlが
サキRanlikeなAPIを提供する
ものになってますどちらを使ってでもです
ね裏側ではビッグクエリーが実行される
ようになっておりますこれまでの
ノートブック開発の場合ノートブックの
メモりに乗らないような巨大なデータを
分析したいっていう場合まそうですねあの
いわゆる一般的なのえライブラリーでは
ちょっと取り扱いにくくてデータサイズに
合わせてローカルディスクにキャッシュと
して吐き出したりとかあと分散クラスター
作ったりとかやる必要があったんです
けれどもま正直そうですね知識が必要です
しデータサイズに合わせてそれらの実装を
組み合わあの切り替えていくのって
ちょっと面倒くさいんですよねていうのが
実情があるんですけれどもこちらですと
インポート分を書き換えていただければ
普通のパンダからえBIGframes.
pandasに書き換えていただければ
ロジックそのまま実際の処理はビッグ
クエリーにオフロードされるというような
使い方ができてしまいます特別な知識必要
ないですしローカルマシンのえっとメモリ
とか気にする必要がまなくなるといった
ものになってい
ますじゃあですねといっても言葉で説明し
ていても限界があるので実際の動画を交え
ながら説明していきたいと思います今回な
んですけどまありそうなシナリオですです
かねPythonのパッケージの
ダウンロードログがありますとその中から
よくダウンロードされているパッケージが
どれか集計しようっていうものですねで
ビッグクエリスタジオの機能を最大限活用
してここの分析進めていきましょうという
ものになっていますではどんな感じで分析
できるのか動画流しどうかお見せしながら
見ていきたいと思い
ますはいですねまずあとあるテーブルを
突然渡されたと想定しましょうデータ分析
者の方でしたらねこんなことあるんじゃ
ないですかねなんか分析してくれって突然
あのテーブルだけ送られてくる
やつでまあしょうがないんでそうですね
プレビューから見てみましょうか
プレビュー見るとですねこのような形で
どうもpyonパッケージのダウンロード
ログが行ごとに残ってるデータセットっ
ぽいなっていうことまでは分かりますかね
まここまではこれまでもできていたことな
んですけどじゃあ次どういう分析をし
ましょうかそうですね例えばなんですけど
ここに出てきたリネージっていうものを見
てみましょうこれ何かと言うとテーブルの
依存関係が分かりますねここから分かる
ことは例えばこのテーブルが色々なえ他の
テーブルから参照されていることていう
ことですかねそれからもう1つ分かること
がありましてこの対象のテーブルっていう
のはどうも2つのテーブルから生成されて
いるようだっていうこととえっと具体的に
どのようなSQLを持ってして変換え生成
されたのかっていうことが分かりますこう
するとですねテーブルのえっと由来って
いうのが分かりますのでまガバナンス的に
も有利ですし純粋に分析ですねがあの分析
始める時に有利になるんじゃないかなと
便利になるんじゃないかなと思っています
でちなみにこのビデオの場合なんですけど
まおこれ見ると大元のデータ違うテーブル
の名前とかが確認できるのでえこのテーブ
ルって誰が管理してるのあこれビッグり
パブリックデータセットのえテーブルだっ
たのねっていうことが分かってその大元の
テーブルのえ検索して大元のテーブルの筋
を見つけてっていうことができますねま
全てにおいて実ビジネスにおいて全てこう
いうことができるかとは限らないんです
けれどもまこのような感じでどこ由来の
テーブルなのかが分かりやすいようになっ
てきましたさてリネージ見た後は次データ
プロファイルっていうのも見てみましょう
かデータプロファイルがどういったものな
のか
これは正直なところを見ていただいた方が
手取り早い気がするんですけれどもカラム
ごとの特徴ですね最大値最小値品値やそれ
から欠損値の割合とかですかねが分かるも
のってなっていますこれでですねま例えば
SQLでミとかMAXとかわざわざ叩か
なくても行の最小値最大値分かりますし
あとデータの意外なインサイトとかも
分かり分かるかもですねデータの傾向から
それから欠損値も分かるんでこのデータ角
を間違ってねかなんかID入ってないと
いけないのになんかID欠損してんだけど
渡してくれたそのデータ本当に大丈夫です
かみたいなことにすぐ気づけるかもしれ
ないですということでデータ分析される際
ですね是非この辺りの機能を使いながら
えっとま分析の効率上げていただければと
思っておりますということでリネージと
データプロファイルの機能まで紹介してき
たんですけれどもこの辺りまで見たらそう
ですねそろそろ分析しみましょうかで分析
する際ってまこれまではSQL書いていた
と思うんですけどここでPython
ノートブックをですね選択できるように
なっているんですよ
シレットでPythonノートブックとえ
選択しますとですねもうこの名の通りなん
ですけれどもPythonのノートブック
の画面が表示されましたということでここ
でPython使ってデータ分析できる
ようになるんですランタイムに接続して
ですねPythonのコードここで回せ
ちゃうわけですよまあでここから0から
買っててもいいんですけれどもせっかくな
ので今回はですね用意させていただいた
ノートブックで話進めさせていただければ
と思いますまず最初えっと先ほど紹介した
bfam.パンスをですねインポートし
ましょうこれがパンスライクなAPIを
提供するものでしたそうしたらですね今度
えデータを読み込んでみましょうえっと
RECあ違うREBgbqの後にビッグ
フレームえ違うビッグクエリーのテーブル
のえ名前ですねをやるとビッグクエリーの
データを読み込めます裏側ではもちろん
ビッグクエリーがクエリを実行してるん
ですけどどんなクエリを実行してるのかが
気になるっていう場合あると思います
そんな時はですねここにオープンジョブっ
ていうリンクが出ているのでこちら押して
いただくとですねビッグフレーズがどう
いうSQLを実行しているのかが分かり
ますまこんな感じででですね今回テーブル
全体を読み込んでるだけなので変換処理と
かやってないんですけれどもまあのえっと
ビッグフレーズのセッション専用の
テンポラリーテーブルを作ってるんだなっ
ていうことがなんとなく読みたりたりし
ますはいえっとそうですねじゃあデータ
読み込んだ後はデータの先頭20業を表示
してみましょうかそんな時はえパンダと
同じヘッドメソッドで押せばこんな感じで
表示してしまいますもうパンダストこの先
は同じです
ねじゃあそうですね表示した後は行で
絞り込んでみましょうかビッグフレーム
スっていうのを含むえっと名前に含むあ
名前の行がビッグフレーズである行ですね
ところをえっと選択したいとなるとまこの
ような記法で例えばできますねパンタスっ
てあの行とか列の選択方法色々な流派って
言うんですかねがあると思うんですけれど
もま大体の流派はえサポートしており
ますさてそうしたらまダウンロード数を
パッケージごとにネームごとにカウントし
たいんだったらグループバしてサムすれば
オですねまここも正直もうビッグフレーズ
の説明というよりはパンタの説明してる
感じになってきたんですけどそのあのこれ
までのパタスと同じようにえ集計できます
集計できたけどあれ結果がなんか変だぞと
えっとパンダにもあるんですけれどもなん
とビッグフレーズパンタのインデックスの
使用もしっかりサポートしておりますので
えっとインデックスの使用に気をつけ
ながらえソトする必要がありますとこの
辺りあのパンタス最初に触った方はつづか
れたのかと思うんですけれどもビッグ
フレーズしっかりパンダと同じ挙動をし
ますのでえ皆さん開発の際はご注意
くださいということでインデックスを適切
に設定してしたらえ相当ができましたね
1番多くダウンロードされている
パッケージはボ3うんまあそりゃそうだ
なっていう感じねですねていうことが集計
して分かりまし
たさてっとまこのような感じでですね普段
のパンタスを書いているような感覚で実超
大量のデータビッグクエリーに処理させる
ことができるこれがビッグフレイムズの
威力になっておりますですので普段の
データ分析の際にこれまでパンスを
読み込んでいたところをbig
frames.pantasに書きあの
書き換えて見ていただければいいんじゃ
ないかとは思っており
ますさてというところなんですけれども
このノートブックには実は便利な機能まだ
いくつかあるんですよ
ねそうですね例えばなんですけれども
例えばこのデータフレームはですね
サマリーというカラムにパッケージの説明
が入ってるんですよね表示するとうん
こんな感じでカラムへのアクセスもドで
いつもの感じでできるんですけれども今
ちょっとですね気軽にノートブック
書き換えちゃったんですよねリバートし
たいとかいう時にもちろんちゃんとできる
ようになっておりますよく見るとですね
左下にですねアクティビティというタブが
生えておりましてこれをクリックすると
データフレーム違うノートブック
の編集履歴をリフを取ることができます
ノートブックってえっとjonオリジナル
はjon形式になっていてで結構人間の目
では見にくいんですけれどもこのように
ですね差分をしっかりとあの人間が見
やすい形で表示してくれるので結構あの何
でしょうバージョン管理しやすいんじゃ
ないかなと思っておりますあちなみにこの
バージョン管理の機能はですねあの密かに
なんですけれどもノートブックだけじゃ
なくてえっとセブドクエリーですかね保存
したクエリーにも適用されるようになっ
てるのでご確認いただければと思っており
ますあなのでバージョンのリストはもこの
ようにできます
とまあとはですねあのリストアだけじゃ
なくてノートブックの共有もですねできる
ようになっていてノートブックの共有の
仕方は簡単ですまこのように共有したい
相手のメールアドレスを入力していただい
てその後にまどのような権限を与える
かっていう権限の種類ですねを選択
いただければノートブック共有できますの
で例えばですけど手順書とかをえっとこれ
で共有していただけるとなんか定型的に
実行すること必要がある学習処理とかです
ね
えっとがえっと共有しやすくなるんじゃ
ないかなとは思っており
ますはいということでここまでがビッグ
クエリースタジオのお話だったんです
けれどもここからは少し角度を変えてです
ねllmを統合したことでビッグクエリー
の可能性がどのように変わるのかっていう
ま2つ目のえっとトピックに入っていき
たいと思い
ますまず大きなアップデートですねビッグ
クエリーからパルムを呼び出せるように
なりましたはいvtexAI上にホストさ
れている我々の大規模言語モデルパルム
ですねここにビッグクエリー上のデータを
プロンプトにして入力しその結果得ること
ができるようになりましたと言っても具体
的にどうやって呼び出せばいいのかその
手順も紹介したいと思いますスライドには
書いていないんですけどパルムを呼び出す
にはま密には事前にコネクションを作成
する必要がありますこれはアクセス権限を
コントロールする必要があるもので今は
このスライドでは事前にえ設定済みとし
ましょう権限の設定が終わっていれば
呼び出す手順は2つです1つ目まずは
モデルの登録ですね最初に1回だけ必要で
モデルがvtexAI上でホストされてい
て色々なバリエーションいろんな
バージョンがあるんですよなのでその
モデルとどれか1個を選んで名前をつけて
保存みたいなことをやってあげるわけです
ねそうすることによって特定のモデルを後
からあの同じように呼び出すことができ
ますでモデルの保存が終わったら2つ目
ですねmlジェネレートテキスト関数って
いうものを使いますこれでパルムにえっと
指示を投げることができます第1引数ま
えっとmlジェネレートテキスト関数は3
つの引数を取るんですけど第1引数は
先ほど保存したモデルの名前第2引数は
ちょっとだいぶいかついあの見た目になっ
ているんですけれどもプロンプ塔です行
ごとに渡しますえっとこれセレクトコン
キャットから始まるのが第2匹数で
セレクト分っていうかコンキャット分の
ところ読み出すとgivetheC
nameforシティシティてなってい
まして実際にはこの最後のシティのところ
には東京とかラスベガスとか街の名前が
入ってますねなのでgivetheC
nameforシティ東京だったらま
えっと東京が所属する街のえ国の名前なん
でえっと日本ですねジャパンですですねが
えっと結果として返ってくることが期待さ
れているわけですとでえっと3つ目があ
ごめんなさいまこのようにプロンプトを
ですねSQLで生成してえっとパルムに
実行させることができますで3つ目の引数
がえっとモデルに渡すパラメーターになっ
ていまして実用上はテンプラーとか
マックスアウトプットトークンとかを編集
することが多いかなと思ってい
ますでですね先ほどのプロンプとを実行し
た結果がですねこのようになっておりまし
て3列目ですね3列目がえっとパルムに
入力されたプロンプ島になっています
givetheカトリnamefor
シティラスベガスロンドン
サンフランシスコ東京ですねそれぞれが
どこの国のものですかていうのを聞いて
ますでその答えが1列目に入っていまして
これあえて整形せずに結果全部お見せし
てるんでちょっとみづくなっちゃってるん
ですけれどもコンテントっていうところに
入っていてえラスベガスはユナイテッド
ステーツえUKUSJAPANと正しい
答えが入っていますねこのような感じでお
持ちのデータに対してllm適用してあの
色々な処理をかけることができます色々な
あですいませんでSQLもいいけれどじゃ
ここまでがSQLのお話でしたと普段LM
開発に使っているPythonからも
せっかくならあの先ほどのL読み出したい
とは思いませんかねということでビッグ
フレーズ今度は活用してビッグクエリーと
LMのパワーをいつものPythonから
実行してみるっていうこともやってみたい
と思い
ますでは動画流してまいりますとまずです
ね今回もビッグえクエリースタジオは使い
ますノートブックを新たに使いましょうで
まずはBIGframes.mlっていう
パッケージをインポートしますこれは
サイキットラーンのインターフェイスを
提供するものでしてねLmLて打つとよく
見るとml.の下にクラスターとかあと
デコンしョとかアンサンブルとかフォー
キャスティングとかサキトラン使ったこと
であれば方であればピンとくるモジュール
名が並んでるんじゃないかなって思います
でま要するにサキランライクなモジュール
が入っておりましてこれら全てビッグ
クエリーで処理を実行しますあとは
えっとその後にですねBigFRAME.
pandasの方もインポートしましょう
じゃあまずPALMモデルをpyonに
読み込んでみましょうビッククエリー上の
パルムモデルはですねPALM2モデルえ
ジェネレーターかなジェネレーターですね
というクラスを経由して参照できますでえ
そうするとですねモデルという
オブジェクトにえっとパルムのモデルを
ですねえっとインスタンス化させることが
できますとでは次に分析に使うデータを
読み込んでみましょう
かはい分析に使うデータを読み込んでみ
ましょうDCSVでGCSのデータ
読み込んでますねこれですね裏側で面白い
ことやっていて実データGCSになるん
ですけれどもこれを実行した瞬間GCS上
のCSVファイルがビッグクエリーに自動
的に読み込まれてますでビッフレーズで
取り扱い可能な状態になってます裏側で
シレットテーブルの読み込みと神経作成
っていうとんでもないことをやってくれて
ますはい読み込み終わったようですこの
CSVファイルにはAPIというカラムが
ありその中にはです
ねパンダのデータフレームのメソッド名が
ね
えっと格納されているんです
よ
はいDtypesndm2CSV2gbq
2JSONは使われた方多いんじゃない
でしょうかこれパンスのデータフレーズの
メソッドですね今回なんですけどこれらの
メソッドのコードサンプルジェネレートし
てみたいと思いますで
はプロンプト作ってみましょうプロンプト
はですね結構簡単でジェネレートパンタ
サンプルコード4データフレーほにゃらら
っていう風に指定し
ますまあの定型処理なんでえ実のように
プラスで作っちゃったんですプラスで文字
列連結で作っちゃったんですけど
ジェネレートパンスサンプルコード4
データレvalシプサイズという感じで
こんな感じでえっとプロンプと作ったわけ
ですねプロンプトのが作れたので後は実行
しましょう実行どうやればいいのか
サイキットラーン使ったことある方であれ
ば簡単ですね実行する水論させると言っ
たらプレディクト関数これで水論は完了し
ますちょっと動画ではあの加速さ時間を
加速させてるんですがま24秒ですね実
時間ではで水論完了しますじゃあどんな
感じで水論ができたかえ水論結果を見てみ
ましょう緊張の一瞬です
ね最初の従業を取り出してみ
ますはい出てきましたどうもマークダウン
形式で返してくれたみたいですねバック
クオート3つpyonあインポートパン
asPDでまあ多分できてるでしょうなん
ですけれどもこれマークダウンのバック
クオート3つとかってまぶっちゃけいら
ないですねでそれからインポート
pandasじゃなくてBIGFRAME
.pandasに書き換えちゃいたいです
ねこんな時どうすればいいかま普通に
ヘルパー関数使って間テキスト間やっ
ちゃいましょうあと念のためトライ
キャッチでえエラー処理もやっちゃいます
かねて思うんですけどこのpyonの
ヘルパー関数どこで実行しますかねあの
ノートブックで自然にあまりにも処理実行
してるんで忘れがちなんですけどこれ
ビッグクエリ上で処理してるんですよね
なんでトライキャッチとかそういうロジッ
クって正直SQLで実行難しいんですよ
じゃあどうすればいいか別にビッグ
クエリー上でPython実行しちゃえば
いいんですよねということでそれを実現
するための方法がありましてヘルパー関数
の前にですねリモートファンクションズっ
ていうえアノテーションをつつけるとです
ね裏側でこの関数をクラウド
ファンクションに自動的にデプロイします
でこのヘルパー関数をビッグクエリーから
参照して自動的に並列実行できるようにし
ますとあなのでクラウドファンクションに
実行したんであのデプロイしたということ
は名前を検索するとですねちゃんとヒット
してこのビッグクエリーのコンソールで
関数名を実行するとえ検索すると普通に出
てきますノートブックしかしあの触って
ないのにSQLですとかクラウド
ファンクションまでデプロイされるって
いうことが起きますので正直この感覚です
ね最初戸惑いますかねノートブックしか
自分触ってないのにいろんなリソースが
勝手に作られているのででま最大限自分の
ノートブックを並列実行あのスケーラブル
に実行するようにあらゆるリソースが動い
てくれますでじゃあ今作ったヘルパー関数
を実行したいとなればまここからはパタの
説明なんですけどどちらかというとえ
アプライ関数ですねでえ先ほどのヘルパー
関数を各列にあ各業界に実行してアサイン
で新たな列として生成することができます
とということでですねまこのような感じで
もうあかももうなんかパン普通の
ノートブックを開発しているようにllm
の開発までできてしまいますというのが
ここのすごいところになっております
ビッグクエリーでのllmの使い道ですね
ではですねコンテンツ生成ですとか分類
ですとか色々な利用方法が考えられると
思いますので是非皆様のビジネスニーズに
合わせて考えてみていただければと思い
ますさてここからなんですけどもう
ちょっと新しいトピックについても説明し
ていきたいと思いますllmと情報検索
組み合わせてllmより実用的に使うため
のラグと呼ばれる技術について説明させて
くださいllmなんですけれども残念
ながらそれっぽい回答は返してくれるん
ですがま制度については十分じゃない
ことって正直多いです対象的なのが古典的
な情報原作技術でしてまあのユーザーの
質問をそのままえ受け取ることはできない
んですけどま制度に関しては既存の
ドキュメントの中から何かしらそれっぽい
もの返してくれるものわけですねとなると
考えつくのがllmと情報検索技術ですね
これ組み合わせちゃってえっといいとりし
てしまおうっていうことが考えられるわけ
ですこれがラグって呼ばれる
アーキテクチャの総称になりますラグは
エンベディとベクトル検索という2つの
要素技術を使うと実装できるのでま
それぞれについて説明していきたいと思い
ますまずなんですけれどもここに文章が
英語で恐縮なんですが1個あります日本語
訳すると生きるべきか死ぬべきかそれが
問題だというハムレットの一説になります
ねさてこのデータをですね必要に応じて
検索可能にするにはどうすればいい
でしょうかラグでよく使われる操作方法と
あ違う方法としてはテキストをベクトル
ですねすなわち数値列に変換するという
方法がありますこれを埋め込みと呼んでい
ますねむやみあたらに数値変換しても味
ないのでちゃんと元の文章の意味を理解し
た上でベクトルに変換する必要があります
ねこの変換をするモデルをエン
ベッティングモデルなどと呼んでいます
GoogleCloudではテキストや
画像あと今日動画も言及がありましたかね
とか色々なエンベッティングモデルを提供
していますとで時間の都合で省略するん
ですけれどもこの元データの意味を理解し
て変換するっていうところでですねllm
の技術使われており
ますでこうして様々なテキストを埋め込ん
でいくとベクトルの格納ストレージ
ベクトルストアとか呼ぶことも多いとは
思うんですけれどもが作れますとでこの
ベクトルストレージには色々なフレーズが
格納されていますねシェイクスピアの例と
絵本作家のドクタースースのフレーズが
あるんですけれどもエンベッティング
モデルは元の文章の意味ですねを理解した
上で埋め込むので大体似た作家さんの
ベクトルは2対1ですねに埋め込まれてい
ますさてここでですね新しいフレーが来
ましたofから始まるフレーズですねこの
文章がフレーズがドクタースースか
シェイクスピアかどっちか分かりますかね
ま私は分からなかったんですけどなんと
なくまびっくりマークとがあるんだったら
シェイクスピアじゃないかなとは思ったん
ですけれどもまそんな時どうやって判定
するかと言うとまずこれまでやってきた
ようにベクトルに変換しますそうすると他
のフレーズと数値で比較できるの
で新しいベクトルの周辺にある他の
ベクトルを検索するとこの例の場合
ドクタースースの方に近いように見える
からドクタースースのベクトルだろう
フレーズだろうとま判定させることができ
ますま実際そうですねこれを行うことを
ユーザーの質問に近いデータを検索して
返すということもできるようになります
この埋め埋め込みとベクトル検索ですね
これで見つかったデータをllmに渡す
ことでllmは実際のデータに基づいた
回答生成を行うことができるのでその精度
が上がるっていうことが期待できますこの
アーキテクチャーをラグと読んでい
ますでですねビッグクエリーではもちろん
埋め込みとベクトル検索それぞれサポート
してラグを実行できるようにしております
でですね
えっとカツマで説明しますとえ埋込みの
利用方法ですはま比較的簡単でモデルを
名前つけて保存した後mlジェネレート
テキストエンベッティングと呼ばれる関数
を読むと埋め込みを取得できます検索する
前にあらかじめ検索対象としたいデータ
前傾に対して埋め込みを取得しておいて後
で使うわけですでその上で検索ま検索する
クエリーはちょっとここに書いていないん
ですけれどもml.Distance関数
というところであるデータとそれ以外の
全てのデータの距離を測ることができるの
でそこから金えっと類似するものを返す
ことができきますじゃあ具体的にこれオを
どうやって組み合わせてラグを実装すれば
いいのかっていうところも説明したいと
思いますはいということで今度はですね
Pythonのパッケージの検索をこれ
ラグでやってみたいと思い
ますはいまずはラグを使わずに普通に
Pythonのパッケージ検索してみ
ましょうかどういう検索をしたいかと言う
とですねちょうど12行目に書いてあり
ますかねWhatisagood
Pythonpackagefor
workingwith
ビックエービッグクエリーでエン
ベッティングを扱うにはどんなパイソン
パッケージがいいですかねて聞いてますね
ということでこのプロンプトを
ジェネレートテキストに突っ込んで水論さ
せると何かが返ってくるはずです正解は
正しいのはえビッグフレーズですねなん
ですけどビッグフレーズ帰ってこいとうん
BQエベッティングスっていうパッケージ
が提案されましたねただ残念ながらですね
こなパケージ存在してないんですよねま
あのビッグframがあんまり有名では
なかった時に動画収録したっていうのも
ありますしあのパルムのモデル自体は
アップデートが繰り返されていますのでま
今だったら別のえっと結果を返すかかも
しれませんまたそれからですねこういう
検索をしたい場合はお客様の手持ちの
データでですねファインチューニングして
いただくとかバテサーチをとのような検索
ソリューションを使うとかもかキーノート
で出てきたグラウンディングと呼ばれる
技術を使うって解決した方がま解決するっ
ていう手もあるんですけれども今回は
あくまでラグを使って解決してみましょう
ラグをで使って解決するためにはまず
ベクトルストレージを作りましょう全ての
パッケージの情報をベクトル化し
ますそのためにエンベッティングモデルに
名前をつけて保存してその後ですね
ジェネレートテキストエンベッティングと
いう関数を使いましてここでえっと
アパッチPythonパッケージという
全てのPythonのパッケージ情報が
集まったテーブルのディスクリプションと
いう列をですね埋め込みますパッケージの
ディスクリプションをベクトル化してい
ますここでベクトル化した結果がどのよう
になるかと言いますと今表示します
がこんな感じのですねちょっといかつい見
た目になっていますこれ画面に出てるのが
1行ですねで1列目がベクトルになってい
てそれが配列なのでちょっと見た目があの
こんな感じになっておりますと5列目の
コンテントというののディスクリプション
をベクトル化したのが1列目だと思って
いただければと思いますとりあえずこれで
ベクトル検索違うベクトルストレージの方
はできましたじゃあ次はベクトル検索する
ところですねベクトル検索して質問に
答えるのに適したパッケージっていうのを
見つけてみましょうベクトル検索をする前
にllmに渡すプロンプともちょっと
こんな感じで書いてみましょうfrom
theBelLofPythonPACK
providethebest
answertoえbestanswer
tothe
question質問に答える裁量の
Pythonパッケージ次の中から見つけ
てくださいっていうプロンプトに変えます
で次の中からの次の次の部分どうやって
作るかっていうと先ほどのベクトル検索で
持ってこようっていうわけですねこのよう
にプロンプトを拡張するわけ
ですさてじゃあ
量のパッケージ見つけていきましょうか
まずですねえっとジェネレートテキスト
エンベッティングを使いますこれ何かと
いうとオリジナルの質問BQエン
ベッティングを使うにはどうすればいいで
かっていうところをエンベッティングして
いますその後にmmlディスタンス関数を
使ってそのオリジナルの質問とそれ以外の
Pythonパッケージ全ての距離を測っ
て最後にオーダーバしてリミット5をする
とオリジナルの質問に近いpyon
パッケージ5件が出てくることになります
ねそうなるとあとはプロンプトですね
見つかったオリジナルパッケーに近い
pyonパッケージ5件の名前を
プロンプトにコンキャットで含めてあげて
で最後に質問をオリジナルの質問をまあ
違う拡張したプロンプトをパルムで実行し
てあげればOKという的な結果が得られる
という流れになりますねはいというこの
流れでを実行すると何が得られるのかって
いうことを紹介してこのセッション閉め
たいと思いますWhatisagood
pyonPforworkingwith
イビクエリー実行しました一連の流れ
をさてまずは拡張され
たラグによって拡張されたプロンプトを見
てみ
ましょうそのとかです
ねこのようなものになっております
fromtheLofPython
パッケージの後になんだかpyonの
パッケージ名が列挙されていることがあり
ますわかりますビッグフレーズも入って
ますねということでこのようにベクトル
検索でLllmのプロンプが拡張できまし
たさてこのプロンプトを最後にパルムに
実行させて読み込ませてみましょうさて
今度はちゃんとした答えが出てくる
でしょう
かうんビッグフレーズちゃんと出てきまし
たねということでこのようにですねラグの
技術をベクトを実装することによってLM
の制度改善させるっていうことができる
わけですここですごいところはSQLだけ
で全てを実行したっていうところですね
アプリPythonとか使っていないので
ということでSQLだけでここだけの検索
えっと制度工場を行うことができるという
だけのケイパビリティをビックコエリ持っ
ておりますさてということでではそろそろ
セッションのまとめに入らせていただけれ
ばと思います
えっとよいしょっ
とはいですねまサマリーとしては2つです
ねまずビッグクエリースタジオの方リレン
機能ですとかコラボエンタープライズそれ
からビッグフレーズがインテグレーション
されたビッグクエリースタジオと呼ばれで
開発環境がありますのでこれで次世代型の
データ分析ができるようになりましたので
是非ご体験してくださいということと2つ
目llmがですねえっとこのように色々な
形で読み出すようになっましたので皆様の
お持ちのデータに対して是非実行してみて
くださいということになりますあとは今回
紹介できなかったんですけどクエルの生成
や変換それからえっと要約といったユース
ケースでもllmで使えますので是非お
使いになっていただければと思ますという
ことで私のセッションは終わりになりまし
てちょっと走ってしまった部分も多いかと
思いますのでぜひアクザスピーカーの方
ですね裏手にありますのでそちらで質問等
ありましたら来ていただければと思います
ということで本日はご清聴ありがとう
ございまし
[音楽]
た
5.0 / 5 (0 votes)