Cloud SQL を使用して生成 AI アプリケーションを作成する

このページでは、生成 AI アプリケーションの構築に役立つ Cloud SQL for PostgreSQL の機能の概要について説明します。サンプル アプリケーションの使用方法については、Cloud SQL を使用して生成 AI アプリケーションを開始するをご覧ください。

検索拡張生成(RAG)は、回答を生成する前に信頼できるナレッジベースを参照し、大規模言語モデル(LLM)の出力を最適化する手法です。RAG は、精度を向上させることで生成 AI アプリケーションの機能を強化します。このページで説明されているように、Cloud SQL データベースは、RAG と生成 AI アプリケーション向けにキュレートされた機能を提供します。

ベクトル エンベディングを生成する

ベクトル エンベディングは、セマンティックな理解と効率的な類似検索を可能にするため、RAG に不可欠です。これらのエンベディングはテキスト、画像、音声、動画の数値表現です。エンベディング モデルはベクトル エンベディングを生成します。これにより、2 つのコンテンツが意味的に類似している場合、それらのエンベディングはエンベディング ベクトル空間内で互いに近接した場所に配置されます。

Cloud SQL は Vertex AI と統合されています。ベクトル エンベディングは、Vertex AI がホストするモデルを使用して SQL クエリで生成できます。

Cloud SQL は、テキストのベクトル エンベディングを生成するエンベディング関数を使用して PostgreSQL 構文を拡張します。生成したエンベディングは Cloud SQL データベースに保存できます。ベクトル データベースを別途用意する必要はありません。

Cloud SQL を使用して、Cloud SQL の外部で生成されたベクトル エンベディングを保存することもできます。たとえば、事前トレーニング済みモデルで生成されたベクトル エンベディングを Vertex AI Model Garden に保存できます。これらのベクトル エンベディングは、類似検索とセマンティック検索の pgvector 関数の入力として使用できます。

pgvector を使用してベクトル エンベディングの保存、インデックス登録、クエリを行う

pgvector PostgreSQL 拡張機能を使用すると、Cloud SQL でベクトル エンベディングの保存、インデックス登録、クエリを行うことができます。

この拡張機能の構成の詳細については、PostgreSQL 拡張機能の構成をご覧ください。ベクトル エンベディングの保存、インデックス登録、クエリの詳細については、生成されたエンベディングを保存するpgvector を使用したエンベディングのクエリとインデックス登録をご覧ください。

SQL クエリを使用してオンライン予測を呼び出す

SQL クエリを使用して、Vertex AI Model Garden に保存されているモデルでオンライン予測を呼び出すことができます。

LangChain 統合を使用する

Cloud SQL は、オープンソースの LLM オーケストレーション フレームワークである LangChain と連携して、生成 AI アプリケーションの開発を簡素化します。次の LangChain パッケージを使用できます。

ベクトル検索のパフォーマンスを改善する

ベクトル検索のパフォーマンスを改善するには、次のものを使用します。

  • データ キャッシュ: 組み込みのデータ キャッシュを使用して、頻繁に読み取られるデータページを高速のローカル SSD に保存します。永続ディスクからの読み取りと比較して、読み取りパフォーマンスが最大で 3 倍向上します。
  • データ キャッシュ指標: ベクトル検索でデータ キャッシュがどれだけ効率的に使用されているかに基づいてクエリを最適化します。

    Cloud SQL は、Cloud Monitoring の Metrics Explorer に次の指標を提供します。

    指標 説明 指標ラベル
    使用されたデータ キャッシュ データ キャッシュの使用量(バイト単位) database/data_cache/bytes_used
    データ キャッシュの割り当て データ キャッシュの最大サイズ(バイト単位) database/data_cache/quota
    データ キャッシュ ヒット数 インスタンスのデータ キャッシュ ヒット読み取りオペレーションの合計数 database/postgresql/data_cache/hit_count
    データ キャッシュミス数 インスタンスのデータ キャッシュミス読み取りオペレーションの合計数 database/postgresql/data_cache/miss_count
    データ キャッシュ ヒット率 インスタンスのデータ キャッシュ ヒット読み取りオペレーションとデータ キャッシュミス読み取りオペレーションの比率
    database/postgresql/data_cache/hit_ratio
  • システム分析情報: CPU 使用率、ディスク使用率、スループットなどのシステム指標を提供します。インスタンスの健全性をモニタリングして、生成 AI アプリケーションのパフォーマンスに影響する問題のトラブルシューティングに役立ちます。これらの指標を表示するには、Cloud SQL システム分析情報ダッシュボードを使用します。

  • Query Insights: クエリのパフォーマンスの問題を検出、診断し、防止します。これは、生成 AI アプリケーションのベクトル検索のパフォーマンスを向上させる際に役立ちます。

    Cloud SQL Query Insights ダッシュボードを使用すると、上位のクエリのパフォーマンスを把握し、視覚的なクエリプランを使用してクエリを分析できます。また、SQLcommenter を使用して、アプリケーション レベルでパフォーマンスをモニタリングし、アプリケーション スタック全体で問題のあるクエリの原因をデータベースまでトレースすることもできます。これは、オープンソースのオブジェクト リレーショナル マッピング(ORM)自動計測ライブラリです。

    Query Insights を既存のアプリケーション モニタリング(APM)ツールと統合し、使い慣れたツールでクエリの問題をトラブルシューティングすることもできます。

生成 AI アプリケーションで Cloud SQL を使用するメリット

Cloud SQL を使用して生成 AI アプリケーションを構築すると、次のようなメリットがあります。

  • PostgreSQL を使用して生成 AI アプリケーションを構築する。Cloud SQL for PostgreSQL は pgvector をサポートし、Vertex AI と LangChain の両方と統合されます。
  • エンタープライズ クラスのデータ保護、セキュリティ、ガバナンスを備えた信頼できるサービスを使用する。Cloud SQL を使用すると、次のようなメリットがあります。
    • 99.99% の高可用性 SLA(メンテナンスを含む)
    • 自動バックアップ、レプリケーション、パッチ、暗号化、ストレージの自動増量などの機能を提供するマネージド サービス
    • セキュリティ、ガバナンス、コンプライアンス機能
  • コンテキスト オペレーション データと組み合わせる。ベクトル エンベディングを使用しながら、オペレーション データに対して結合とフィルタを使用し、生成 AI アプリケーションからコンテキストに沿った正確で最新の回答を得ることができます。
  • 運用の負担を軽減する。ベクトル データベースとして Cloud SQL を使用すると、別のベクトル データベースにデータをエクスポートするための作業を減らすことができます。
  • 最新の生成 AI モデルにアクセスする。SQL クエリを使用して、Vertex AI でホストされている最新の AI モデルにアクセスできます。

生成 AI アプリケーションでの Cloud SQL の使用を開始する

生成 AI アプリケーションを初めて作成する場合は、このサンプルアプリを使用してください。このアプリでは、Cloud SQL、Google Kubernetes Engine、Vertex AI を使用します。

このソリューションには次のコンテンツが含まれています。

  • セキュリティのベスト プラクティスに従ってインフラストラクチャを設定するための Terraform テンプレート
  • LLM を搭載した chatbot のサンプルアプリ

次のステップ