Spanner とそのマルチモデル機能は、Google Cloudの AI サービスとオープンソース フレームワークである LangChain と統合され、生成 AI アプリケーションの構築に役立ちます。類似度検索、検索拡張生成(RAG)、ナレッジグラフなどの機能を使用して、アプリケーションを強化できます。Spanner は、スケーラビリティ、可用性、整合性の基盤の上にこの機能を構築します。
ベクトル検索で類似性検索を行う
Spanner と Vector Search を使用して、非構造化テキスト データで類似性検索を実装します。Spanner は Vertex AI などのサービスと統合して、非構造化テキストデータからベクトル エンベディングの生成を呼び出します。これらのエンベディングは、テキストの意味を反映した数値表現です。概念的に類似したアイテムを見つけるには、ベクトル距離関数を使用して、検索リクエストのエンベディングに最も類似したエンベディング ベクトルを見つけます。このプロセスにより、商品やコンテンツのレコメンデーションなどの機能を構築できます。
まず、既存のテキストデータの Vertex AI ベクトル エンベディングを一括で生成してバックフィルします。これを行うには、テキスト エンベディング API のドキュメントで説明されている text-embedding
モデルなどの SQL と Vertex AI エンベディング モデルを使用します。Spanner は、クエリ ベクトル エンベディングで近似最近傍(ANN)とK 最近傍(KNN)を使用することをサポートしています。ANN は、高速でスケーラブルな検索にベクトル インデックスを使用し、近似結果を返します。KNN は、より正確な結果を返す徹底的な検索を実行しますが、大規模なデータセットでは処理が遅くなる可能性があります。複数のベクトル距離関数を使用して、次のような類似性を測定できます。
コサイン距離: 2 つのベクトル間の角度のコサインを測定します。これは、大きさに関係なく、類似した方向を持つアイテムを見つけるのに役立ちます。
ユークリッド距離: 2 つのベクトル間の直線距離を測定します。
ドット積: ベクトルの大きさと、ベクトル間の角度のコサインの積を計算します。これは、正規化されたベクトルに対して最も計算効率の高いオプションです。
詳細については次のトピックをご覧ください。
SQL を使用して ML 予測を生成する
Spanner で SQL クエリを使用して、Vertex AI にデプロイされた大規模言語モデル(LLM)を呼び出すことができます。LLM に直接アクセスすると、Spanner に保存されているデータに対して、感情分析、テキスト分類、翻訳などのタスクの予測を実行できます。
ML.PREDICT
(GoogleSQL)または spanner.ML_PREDICT_ROW
(PostgreSQL)関数を使用すると、データを移動したり、LLM とやり取りするためのカスタム アプリケーション コードを記述したりすることなく、機械学習(ML)予測を生成できます。これにより、アプリケーション アーキテクチャが簡素化され、ML 機能がデータに近づきます。詳細については、SQL を使用して ML 予測を生成するをご覧ください。
Model Context Protocol(MCP)を使用して LLM エージェントに接続する
Model Context Protocol(MCP)をサポートする IDE に Spanner インスタンスを接続できます。MCP は、LLM を Spanner のデータに接続するために使用できるオープン プロトコルです。接続後、LLM エージェントは Spanner インスタンスに対してクエリを実行し、操作できます。詳細については、IDE を Spanner に接続するをご覧ください。
Spanner グラフで分析情報を確認する
より高度な RAG ユースケースでは、Spanner Graph はグラフ データベース機能を Spanner のコア機能と統合します。Spanner Graph を使用すると、高度に接続されたデータをモデル化、保存、クエリできます。
Spanner Graph と LangChain を統合して、GraphRAG アプリケーションを構築します。この統合により、従来の RAG を強化できます。GraphRAG を使用すると、ナレッジグラフなど、エンティティ間の複雑な関係をキャプチャするアプリケーションを作成できます。この統合では、ベクトル検索に加えてグラフクエリを使用して、データ内の複雑で暗黙的な関係をキャプチャします。グラフクエリとベクトル検索を組み合わせて使用すると、ベクトル検索のみを使用するよりも、LLM からより正確で関連性の高い回答を得ることができます。
詳細については、Vertex AI と Spanner Graph を使用した生成 AI 用 GraphRAG インフラストラクチャをご覧ください。
LangChain を使用して LLM を活用したアプリケーションを構築する
Spanner には、LangChain をプログラムで操作するためのクラスがいくつか用意されています。LangChain は、複雑な LLM ワークフローを合理化するための構造、ツール、コンポーネントを提供する LLM オーケストレーション フレームワークです。LangChain を使用して、生成 AI アプリケーションと RAG ワークフローを構築します。Spanner で使用可能な LangChain クラスは次のとおりです。
SpannerVectorStore
: ベクトル エンベディングを保存して検索し、このクラスを使用してアプリ内で類似検索を有効にします。SpannerLoader
: Spanner からデータを読み込んで、エンベディングで使用したり、クラスを使用して LLM チェーンに特定のコンテキストを提供したりします。SpannerChatMessageHistory
: Spanner データベースに会話の履歴を保存して、会話型 AI アプリケーションを有効にします。
詳細については、LangChain を使用して LLM を活用したアプリケーションを構築すると LangChain 用の Spanner クライアント ライブラリをご覧ください。
ユースケースを確認する
Spanner の AI 機能を使用して、次のようなユースケースに対応するインテリジェント アプリケーションを構築します。
e コマース レコメンデーション エンジン: 商品説明のベクトル エンベディングを生成して、レコメンデーション エンジンを強化します。このエンジンは、お客様に類似商品を提案できるため、ショッピング エクスペリエンスが向上し、売上が増加します。詳細については、生成 AI を使用して e コマース アプリケーションでパーソナライズされたレコメンデーションを取得するをご覧ください。
チャット メッセージ履歴を管理する: Spanner と LangChain を使用して、会話履歴を保存して取得します。Spanner はこのデータをデータベースに保存し、
SpannerChatMessageHistory
クラスを提供します。このクラスは、LangChain の基本クラスを拡張して、データベースからメッセージを保存して取得します。詳細については、Spanner を使用したチャット メッセージ履歴をご覧ください。金融詐欺行為の検出: Spanner Graph を使用して、ユーザー、アカウント、トランザクションの間の複雑な関係を分析し、従来のリレーショナル データベースでは検出が困難な疑わしいパターンや異常を特定します。
Customer 360: Spanner Graph を使用して、関係、好み、購入履歴を追跡することで、顧客の全体像を把握できます。これにより、パーソナライズされたおすすめ情報、ターゲットを絞ったマーケティング キャンペーン、カスタマー サービスの利用体験の向上が実現します。
ソーシャル ネットワーク: Spanner Graph でユーザーのアクティビティとインタラクションをモデル化して、ソーシャル ネットワークで友だちのおすすめ情報を提供し、コンテンツを検出します。
次のステップ
Spanner での AI 機能の実装の詳細については、次のトピックをご覧ください。
- ベクトル エンベディングを生成してバックフィルする
- K 最近傍を検索する
- 近似最近傍を使用してベクトル検索のパフォーマンスを改善する
- LangChain インテグレーション
- Spanner Graph の概要