コンテンツに移動
データベース

AlloyDB AI に Vertex AI をシームレスに統合して生成 AI アプリケーションを強化

2024年1月26日
Google Cloud Japan Team

Google Cloud Next is live!

See the latest announcements from Next '24.

Join us

※この投稿は米国時間 2024 年 1 月 19 日に、Google Cloud blog に投稿されたものの抄訳です。

Next ‘23 で、Google は AlloyDB AI を発表しました。これは、生成 AI アプリケーションを構築するために AlloyDB に組み込まれた統合機能セットです。AlloyDB AI には、SQL を使用してデータベースから Vertex AI モデルを直接呼び出せる機能があります。

AlloyDB は、優れたパフォーマンス、可用性、スケーラビリティを提供する PostgreSQL 対応のフルマネージド データベースです。Google のパフォーマンス テストでは、AlloyDB は、標準的な PostgreSQL と比較して最大 100 倍の速さで分析クエリを実行でき、AlloyDB AI は、IVFFlat インデックスを使用した場合、標準的な PostgreSQL と比較して最大 10 倍の速さでベクトルクエリを実行できました。また、ベクトル検索や予測型機械学習(ML)機能もより優れたものとなっています。

Google のエンドツーエンドの AI プラットフォームである Vertex AI を使用すると、データをアップロードしてラベル付けし、独自の ML モデルをトレーニングしてデプロイできます。また、Vertex AI の Model Garden を通じて、Google、サードパーティ、オープンソースの AI モデルを利用することもできます。

google_ml_integration 拡張機能を使用することで、AlloyDB AI で Vertex AI への AlloyDB アクセスを有効にでき、これにより、Vertex AI のカスタムモデルや Model Garden のモデルを使用して AlloyDB 内のデータで予測を実行できるようになります。また、AlloyDB AI は、pgvectorLangChain などのオープンソース ツールと統合されており、AlloyDB をベクトルストアとして使用して、エンべディングを保存したり、LangChain アプリケーションに接続したりできます。

Google Cloud プロダクトやオープンソースの AI ツールと組み合わせて AlloyDB AI を使用することで、アプリケーションを強化し、ライブデータを使用して新しいユーザー エクスペリエンスを提供できます。つまり、データベースの変化に応じてリアルタイムに変化するダイナミックな AI エクスペリエンスを実現できます。

この投稿では、SQL を使用して Vertex AI モデルや独自のカスタムモデルにアクセスし、類似検索、感情分析、bot 検出、医療予測、リスク予測を行う 5 つの例を見ていきます。

類似検索とベクトル エンベディング

例として、South Bay Furnishers という店を経営していて、在庫情報をリレーショナル データベースに保存しているケースを考えてみます。このデータベースには、商品説明や在庫に関する情報などを保存するために、products というテーブルがあります。

商品説明のエンべディングを生成する場合、従来のワークフローでは次のようになります。

https://storage.googleapis.com/gweb-cloudblog-publish/images/1_Copy_of_Embedding_Generator_Application_v1.max-800x800.png

まず、データベースやデータ ウェアハウスからデータを取得し、そのデータのエンべディングを生成します。その結果となるベクトルは、ベクトル データベースに upsert する必要があります。この場合、各ステップで、バッチ処理や API に関する制限などのパフォーマンス ボトルネックが発生する可能性があります。つまり、従来のワークフローでは、多くの場合、複数のサードパーティ サービスに依存する独自の ETL プロセスを構築する必要がありました。さらに、ベクトルは専用のベクトル データベースに保存する必要があり、このデータベースは、アプリケーションが他のトランザクションで依存するデータベースとともに管理する必要があります。

AlloyDB AI は、この 3 ステップのプロセスを 1 つの SQL クエリに変換し、データからエンべディングを生成し、すでに使用しているものと同じ AlloyDB データベースに保存できるようにします。

https://storage.googleapis.com/gweb-cloudblog-publish/images/2_AlloyDB_AI_Embedding_Generation.max-1300x1300.png

テーブルのエンべディングを自動的に生成するには、以下のコマンドを使用して、生成された列をテーブルに追加するだけです。

読み込んでいます...

これで、テーブルに行を挿入すると、Vertex AI textembedding-gecko モデルによって自動的に商品のテキスト エンべディングが生成されます。その後、pgvector AlloyDB AI の強化されたベクトル検索機能を使用して類似検索を実行し、商品のレコメンデーション エクスペリエンスを向上させることができます。

感情分析

Model Garden の事前トレーニング済みモデルを使用すると、AlloyDB のデータをさらに活用できます。たとえば、Vertex AI の感情分析モデルを使用すると、独自のモデルをトレーニングすることなく、ユーザーの感情を測定できます。

さまざまなコンテンツ クリエイターが主催するライブ ストリーミング チャネルを提供する動画ストリーミング サービスを例として考えてみましょう。視聴者はライブコメントを書き込むことができ、そのコメントは AlloyDB に保存されます。ここで、視聴者の全体的な感情を測定し、その情報をデータベースに保存し、チャネル上のコメントの全体的な感情を絵文字として表示するとします。たとえば、肯定的なコメントと否定的なコメントが 50% ずつであれば、? の絵文字が、コメントが圧倒的に肯定的であれば ? の絵文字がクリエイターとその視聴者に表示されます。

コメントを保存する際、Vertex AI の事前トレーニング済み感情分析モデルを使用すれば、AlloyDB に入力する感情を表す数値、スコアと強度を計算できます。このモデルは -1 から 1 までのスコアを出力します。-1 は否定的、0 は中立、1 は肯定的です。また、否定的なコンテンツと肯定的なコンテンツの量を反映する強度も計算します。たとえば、このモデルでは「You are a terrible streamer!(あなたはひどい配信者だ)」という否定的なコメントに対して、スコア -.868、強度 0.977 を付けます。

ストリームに対する否定的なコメントにおいて、その感情がどの程度強いものなのかを計算する場合は、スコア分布を(-1 から 1 の代わりに)0 から 1 の範囲にシフトし、強度を乗算します。

分布をシフトするには、f(x) = .5(x +1) のような方程式を使用してインターバルを [-1,1] から [0,1] にマッピングします。

そして、各コメントの結果を合計し、コメントの総数で割ります。分布は 100 を掛けることでパーセンテージに変換できます。0% は配信者へのコメントがほぼ否定的であることを示し、50% は否定的なコメントと肯定的なコメントが同じバランスで含まれていることを示し、100% はほぼ肯定的なコメントのみであることを示しています。以下は、ストリームのスコアが 0.306、つまり、肯定的なスコアが 31% の例です。このスコアは否定的(50% 未満)とみなされるため、このストリームには ? の絵文字が表示されます。

https://storage.googleapis.com/gweb-cloudblog-publish/images/3_Lonely_Streaming_App.max-1200x1200.png

事前トレーニング済みモデルを使用すると、ライブストリームに対する視聴者の反応を即座に測定できるため、ユーザーに向けてダイナミックなエクスペリエンスを提供できます。また、クリエイターにはリアルタイムのフィードバックを提供できるので、クリエイターはストリーミング中に軌道修正を行うことができます。また、各クリエイターに対する全体的な感情を追跡し、その結果をプロフィールに投稿することもできるので、クリエイターはより多くのフィードバックを得て、コンテンツの改善に役立てることができます。

カスタムモデル

Model Garden のモデルにアクセスする以外に、Vertex AI にデプロイされた独自のカスタムモデルを使用して予測を実行することもできます。これを行うには、エンドポイント ID を指定して google_ml_integration 拡張機能を使用します。その後、独自のデータベースのライブデータに対して予測を実行し、時間的制約のあるトランザクションをリアルタイムで予測できます。以下に、例を 3 つ紹介します。

オンライン ゲームの bot 検出

リアルタイムのマルチプレーヤー型スポーツゲームを開発しているビデオゲーム デベロッパーのケースを考えてみます。bot を使用して不正行為をしていると思われるプレーヤーがいるため、一部のプレーヤーからゲームが公平ではないという不満が出ており、日々のアクティブユーザーも大幅に減少しているとします。この問題に対処するために、プレーヤーが不正行為をしている場合にデータ サイエンス チームが検出できるモデルを作成しました。いったん不正行為をしているとフラグが立てば、そのプレーヤーをゲームから排除し、参加を禁止できます。

不正行為者を捕まえることは、ゲーム デベロッパーにとっていたちごっこです。bot と思われる動作を識別するためのシグナルをモデルに組み込んでいっても、ハッカーは必然的にそれらを打ち負かす新たな方法を見つけるでしょう。幸い、Vertex AI と AlloyDB を使用すれば、ダウンタイムなしで簡単にモデルを更新できます。デプロイされたエンドポイントを新しいモデルに切り替えるだけで、アプリケーション コードを変更することなく、そのモデルをアプリケーションで使用できます。

医療予測

患者の心臓の健康状態に関して、より詳しいインサイトを医師に提供する方法を模索しているヘルステック企業のケースを考えてみましょう。企業は BMI や血圧などの最新の指標に基づいて、患者の心臓リスクスコアを生成できないかと考えているとします。この場合、生成された列を使用することで、AlloyDB データベースに入力された新しい指標から心臓リスクスコアを新たに自動的に計算できます。その後、更新された記録をアプリケーションに返し、この情報を患者のカルテに表示することで、医師が最適な治療方針を決定できるようになります。

https://storage.googleapis.com/gweb-cloudblog-publish/images/4Semiconductor_health_app.max-900x900.png

保険リスクモデル

保険会社のコア コンピテンシーは、リスクを正確にモデル化する能力です。たとえば、オンライン見積もりを提供する自動車保険会社を想像してみてください。顧客が保険を申し込むたびに、顧客のデータ(運転記録など)に基づいてリスクを評価し、リスクモデルを実行して見積もりを作成する必要があります。

顧客情報や他のデータが AlloyDB に保存されていれば、AlloyDB AI を使用してそれらのデータにアクセスし、Vertex AI でホストされているリスクモデルを実行できます。同様のアプローチは、モデルが保険金請求の妥当性を判断する必要がある請求処理や、保険や金融における他の種類の不正検出にも有効です。

まとめ

組織のデータベースにあるデータを使用して ML モデルを使用するには、多くの場合、複数のステップからなるプロセスとデータ サイエンス チームのサポートが必要です。AlloyDB AI は、これらのプロセスを 1 つのステップに集約し、ML モデルを使用したエンべディングの生成、データの分類、データに基づく結果の予測などを可能にします。さらに、AlloyDB を使用すると、Vertex AI の事前トレーニング済みモデルに簡単にアクセスできるため、デベロッパーはデータ サイエンス チームのサポートに頼ることなく AI アプリケーションを作成できます。詳細は、AlloyDB AI の概要をご覧になるか、Langchain アプリケーションで AlloyDB AI を使用する方法を説明しているこちらのチュートリアルをお試しください。

-ソフトウェア エンジニア Tabatha Lewis

投稿先