ブログ

Google Cloud の Vertex AI Platform のネイティブ基盤となる Elasticsearch ベクトル データベース

Google Cloud の Vertex AI 向けの初のサードパーティ製ネイティブ グラウンディング エンジンである Elasticsearch を使用して、Gemini モデルをエンタープライズ データにグラウンディングすることで、カスタム GenAI エクスペリエンスを構築する方法をご覧ください。

Elasticは、Elasticsearchベクターデータベースがネイティブサポートされた情報検索エンジンとしてGoogle CloudのVertex AIプラットフォームに統合され、ユーザーがElasticsearchの高度なAI搭載セマンティックおよびハイブリッド検索機能を使用してGoogleのGeminiモデルのマルチモーダルな強みを活用できるようになることを発表します。

開発者は、統一されたジャーニー内で RAG アプリケーションを作成し、ローコードで柔軟な方法でプライベート データに基づいたチャット エクスペリエンスを実現できるようになりました。顧客や社内従業員向けの AI エージェントを構築する場合でも、ソフトウェア内で LLM 生成を活用する場合でも、Vertex AI プラットフォームでは、最小限の構成で Elasticsearch の関連性を簡単に利用できます。この統合により、本番環境のユースケースで Gemini モデルをより簡単に、より迅速に導入できるようになり、GenAI を PoC から実際のシナリオへと推進できます。

このブログでは、Elasticsearch を Google Cloud の Vertex AI プラットフォームと統合して、シームレスなデータグラウンディングと完全にカスタマイズ可能な GenAI アプリケーションの構築を実現する方法について説明します。どのようにするか見てみましょう。

Google Cloud の Vertex AI と Gemini モデルは Elasticsearch によってデータに基づいています

GenAI アプリケーションを作成するために Vertex AI サービスとツールを活用するユーザーは、新しい「Grounding」オプションにアクセスして、プライベート データを会話のやり取りに自動的に取り入れることができるようになりました。Elasticsearch は現在この機能の一部となっており、両方から使用できます。

  • Vertex AI LLM API は、生成時に Google の Gemini モデルを直接強化します (推奨)。

  • Grounded Generation API は、Vertex AI Agent Builder エコシステムでエージェント エクスペリエンスを構築する代わりに使用されます。

この統合により、最もダウンロードされ、導入されているベクターデータベースである Elasticsearch が、社内のエンド カスタマー対応チャットで必要な場所に適切なエンタープライズ データを提供します。これは、GenAI をビジネス プロセスに実際に導入する上で非常に重要です。

前述の API により、開発者はこの新しい提携機能をコードに採用できるようになります。ただし、迅速なエンジニアリングとテストは、アプリケーション開発において依然として重要なステップであり、初期の発見の場として機能します。これをサポートするために、Elasticsearch は Vertex AI Studio コンソール ツール内でユーザーが簡単に評価できるように設計されています。

以下に示すように、UI の「Grounding のカスタマイズ」タブ内で、必要なパラメータ (検索するインデックス、取得するドキュメントの数、必要な検索テンプレート) を使用して Elastic エンドポイントを構成するには、いくつかの簡単な手順を実行するだけです (これを機能させるには、UI と以下のコード例に「ApiKey」という単語を含む API キーを入力する必要があることに注意してください)。これで、プライベートな知識を使って生成する準備が整いました。

Elasticsearch を活用したデータに基づく Google Cloud の Vertex AI と Gemini モデル

GenAIアプリケーションを簡単に本番環境に対応

Elastic と Google Cloud は、開発者中心で包括的かつ楽しいエクスペリエンスを提供するために連携しています。LLM と Grounding Generation API の両方で Elastic にネイティブに接続することで、Vertex AI 上で GAI アプリケーションを構築する際の複雑さとオーバーヘッドが軽減され、不要な追加 API やデータ オーケストレーションが回避され、1 回の統合呼び出しでグラウンディングが可能になります。

両方のシナリオでどのように機能するかを見てみましょう。

最初の例は LLM API を使用して実行されます。

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \https://us-central1-aiplatform.googleapis.com/v1beta1/projects/<PROJECT_ID>/locations/us-central1/publishers/google/models/gemini-2.0-flash-001:generateContent \
  -d '
{
  "contents": [
    {
      "role": "user",
      "parts": [
        {
          "text": "What's my company car policy?"
        }
      ]
    }
  ],
  "tools": [{
    "retrieval": {
      "externalApi": {
        "api_spec": "ELASTIC_SEARCH",
    "endpoint": "https://<my-elastic-cluster>.gcp.elastic-cloud.com:9243",
    "apiAuth": {
      "apiKeyConfig": {
            "apiKeyString": "ApiKey <API_KEY>"
      }
    },
    "elasticSearchParams": {
      "index": "<my-index>",
      "searchTemplate": "<my-search-template>"
    }
      }
    }
  }]
}

上記の例では、Gemini 2.0 Flash へのコンテンツ生成を要求する API のretrievalフィールドを使用して、要求の検索エンジンをコンテキストに応じて設定できます。api_specを「ELASTIC_SEARCH」に設定すると、API キーやクラスターエンドポイント (Elastic クラスターへのリクエストをルーティングするために必要)、データを取得するインデックス、検索ロジックに使用する検索テンプレートなどの追加の構成パラメータが使用できるようになります。

同様に、Grounding Generation API を使用してgroundingSpecパラメータを設定することで、同じ結果を得ることができます。

curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" https://us-discoveryengine.googleapis.com/v1alpha/projects/<PROJECT_ID>/locations/global:generateGroundedContent -d '
{
  "contents": [{
    "role": "user",
    "parts": [{
      "text": "What do I need to patch a hole in my drywall?"
    }]
  }],
  "groundingSpec": {
    "groundingSources": [{
      "elasticSource": {
        "endpoint": "https://<my-elastic-cluster>.gcp.elastic-cloud.com:9243",
        "index": "<my-index>",
        "searchTemplate": "<my-search-template",
        "apiKey": "projects/<PROJECT_ID>/secrets/api-key/versions/latest"
      }
    }]
  }
}
'

どちらのアプローチでも、レスポンスには、クエリをサポートするために、Elasticsearch で見つかった最も関連性の高いプライベート ドキュメントと、関連する接続されたデータ ソースが含まれた回答が提供されます。

ただし、シンプルであることは、特定のニーズやユースケースを満たすためのパーソナライゼーションの欠如と混同しないでください。これを念頭に置いて、検索構成をシナリオに完全に適応させることができるように設計しました。

指先で完全にカスタマイズ可能な検索:検索テンプレート

検索シナリオを最大限にカスタマイズするために、Google Cloud と連携して、当社の有名な検索テンプレートをベースにしたエクスペリエンスを構築しました。Elasticsearch 検索テンプレートは、動的で再利用可能かつ保守可能な検索クエリを作成するための優れたツールです。クエリ構造を事前に定義して再利用することができます。これらは、開発時間を節約し、エラーの可能性を減らすため、異なるパラメータを使用して同様のクエリを実行する場合に特に役立ちます。テンプレートには変数のプレースホルダーを含めることができるため、クエリは動的になり、さまざまな検索要件に適応できるようになります。

Vertex AI API と Elasticsearch をグラウンディングに使用する場合は、上記のコード スニペットに示すように、検索ロジックが実装され Elasticsearch にプッシュダウンされる目的の検索テンプレートを参照する必要があります。Elastic のパワー ユーザーは、検索アプローチを非同期的に管理、構成、更新し、特定のインデックス、モデル、データに合わせてカスタマイズできます。その操作は、Vertex AI ユーザー、ウェブ アプリ開発者、AI エンジニアにとって完全に透過的な方法で実行でき、グラウンディング API でテンプレートの名前を指定するだけで済みます。

この設計により完全なカスタマイズが可能になり、Elasticsearch の広範な検索機能を Google Cloud AI 環境で利用できるようになり、モジュール性、透明性、そして Elastic に精通していない開発者にとっても使いやすさが確保されます。

BM25 検索、セマンティック検索、または 2 つの間のハイブリッド アプローチが必要なときはいつでも (リトリーバーをすでに調べましたか?)単一の検索 API 呼び出しで構成可能な検索テクニックを使用すれば、検索テンプレートでカスタム ロジックを定義でき、Vertex AI はそれを自動的に活用できます。

これは、ベクトルと結果を管理するために選択した埋め込みおよび再ランク付けモデルにも適用されます。ユースケースに応じて、Elastic の ML ノードでモデルをホストしたり、推論 API を介してサードパーティのサービスエンドポイントを使用したり、オンプレミスでローカルモデルを実行したりすることができます。これは検索テンプレートを介して実行可能であり、次のセクションでその仕組みを見ていきます。

参照テンプレートから始めて、独自のテンプレートを作成しましょう

すぐに使い始められるように、初期リファレンスとして使用できる互換性のある検索テンプレートのサンプル セットを用意しました。その後、それを基にしてカスタムの検索テンプレートを変更および構築できます。

  • ELSER モデルによるセマンティック検索 (スパースベクトルとチャンキング)

  • e5多言語モデルによるセマンティック検索(密ベクトルとチャンキング)

  • Vertex AI テキスト埋め込みモデルを使用したハイブリッド検索

これらは、このGitHub リポジトリで見つけることができます。

1 つの例を見てみましょう。製品カタログに Google Cloud の Vertex AI API を使用して埋め込みを作成します。まず、以下に示すように Elasticsearch で検索テンプレートを作成する必要があります。

PUT _scripts/google-template-knn
{
  "script": {
    "lang": "mustache",
    "source": {
      "_source": {
        "excludes": [ "title_embedding", "description_embedding", "images" ]
      },
        "size": "{{num_hits}}",
          "knn" : [
          { 
            "field": "description_embedding",
            "k": 5,
            "num_candidates": 10,
            "query_vector_builder": {
              "text_embedding": {
                "model_id": "googlevertexai_embeddings_004",
                "model_text": "{{query}}"
              }
            },
            "boost": 0.4
          },
          {
            "field": "title_embedding",
            "k": 5,
            "num_candidates": 10,
            "query_vector_builder": {
              "text_embedding": {
                "model_id": "googlevertexai_embeddings_004",
                "model_text": "{{query}}"
            }
          },
          "boost": 0.6
          }
          ]
    }  
  }
}

この例では、1 回の検索内で 2 つのフィールド ( title_embedding – 製品の名前を含むベクトル フィールド – とdescription_embedding – 製品の説明の表現を含むベクトル フィールド) に対して KNN 検索を実行します。

excludes構文を利用すると、LLM に不要なフィールドが返されることを回避できます。不要なフィールドが返されると、処理中にノイズが発生し、最終的な回答の品質に影響を及ぼす可能性があります。この例では、ベクターと画像の URL を含むフィールドを除外しました。

ベクトルは、以前は次のように定義されていた Vertex AI 埋め込み API googlevertexai_embeddings_004への推論エンドポイントを介して送信された入力に対して、クエリ時にオンザフライで作成されます。

PUT /_inference/text_embedding/googlevertexai_embeddings_004
{
    "service": "googlevertexai",
    "service_settings": {
        "service_account_json": "<your_service_account_key>",
        "model_id": "text-embedding-004",
        "location": "us-central1",
        "project_id": "<your_gcp_project>"
    }
}

Elastic の推論 API の使用方法に関する追加情報については、こちらをご覧ください。

これで、テンプレート検索をテストする準備が整いました。

GET product-catalog-with-embeddings/_search/template
{
  "id": "google-template-knn",
  "params": {
    "query": "What do I need to patch a hole in my drywall?",
    "index_name": "product-catalog-with-embeddings",
    "num_hits": 3
  }
}

paramsフィールドは、テンプレート スクリプトで二重中括弧内に設定した変数を置き換えます。現在、Vertex AI LLM および Grounded Generation API は、次の入力変数を Elastic に送信できます。

  • 「クエリ」 - 検索対象となるユーザークエリ

  • 「index_name」 - 検索するインデックスの名前

  • 「num_hits」 - 最終出力で取得したいドキュメントの数

出力例は次のとおりです。

{
        "_index": "product-catalog-with-embeddings",
        "_id": "9ZQCm5IBcrGI1ivqV-f_",
        "_score": 0.4925191,
        "_ignored": [
          "description.keyword",
          "images.keyword"
        ],
        "_source": {
          "description": "DAP Eclipse Rapid Wall Repair Patch is a new, revolutionary product solution for repairing drywall damage. No more waiting for spackling to dry or messy sanding. DAP Eclipse allows you to patch drywall damage and paint immediately, allowing you to finish your project faster. This all-in-1, mess free solution not only provides a permanent, long-lasting repair but also superior impact resistance for areas that may see reoccurring impact, such as behind a door.",
          "availability": "InStock",
          "model_id": "googlevertexai_embeddings_004",
          "title": "4 in. Eclipse Wall Repair Patch (2-Pack)",
          "url": "https://www.myDIYwebsite.com/p/DAP-4-in-Eclipse-Wall-Repair-Patch-2-Pack-7079809164/317967195",
          "price": 23.96,
          "product_id": 317967195,
          "currency": "USD",
          "brand": "DAP"
        }

上記のクエリは、Google Cloud の Vertex AI が、以前に作成した検索テンプレートを参照するときに、バックグラウンドで Elasticsearch 上で実行するクエリとまったく同じです。Gemini モデルは、出力ドキュメントを使用して回答を根拠付けます。「乾式壁の補修には何が必要ですか?」と質問すると、一般的な提案ではなく、チャット エージェントが具体的な製品を提供します。

GoogleのVertex AIプラットフォームでプロンプトを作成する

ElasticとGoogle CloudによるエンドツーエンドのGenAIジャーニー

Elastic は Google Cloud と提携して、本番環境対応のエンドツーエンドの GenAI エクスペリエンスとソリューションを作成します。先ほど見てきたように、Elastic は Vertex AI プラットフォームの UI と SDK に直接統合された最初の ISV であり、シームレスで基盤のある Gemini モデル プロンプトとエージェントが当社のベクトル検索機能を使用して実行できるようになります。さらに、Elastic はVertex AIおよびGoogle AI Studioの埋め込み、再ランク付け、補完モデルと統合し、Google Cloud 環境を離れることなくベクトルを作成およびランク付けして、責任ある AI の原則を保証します。マルチモーダルアプローチをサポートすることで、さまざまなデータ形式にわたるアプリケーションを共同で促進します。

Playgroundを介して GenAI 検索コードを調整、テスト、エクスポートできます。

ElasticとGoogle CloudによるエンドツーエンドのGenAIジャーニー

しかし、検索アプリの構築だけではありません。ElasticはGeminiモデルを活用して、 Elastic AIアシスタント、攻撃検出、自動インポート機能などのIT運用を強化し、セキュリティアナリストやSREの低価値タスクによる日々の疲労を軽減し、ビジネスの改善に集中できるようにします。Elastic では、 Vertex AI の使用状況を包括的に監視し、応答時間、トークン、リソースなどのメトリックとログを追跡して、最適なパフォーマンスを確保することもできます。私たちは協力して、データの取り込みと埋め込み生成からハイブリッド検索によるグラウンディングまで、GenAI のライフサイクル全体を管理し、LLM を活用したアクションによって GenAI ツールの堅牢な観測性とセキュリティを確保します。

さらに詳しく調べて試してみてください!

これを試してみませんか?この機能は現在、Google Cloud プロジェクトで GA になっています。

Elastic Search AI Platform を使い始めて、その機能を試す最も簡単な方法の一つは、まだお試しいただいていない場合、 Elastic Cloud の無料トライアルを利用するか、 Google Cloud Marketplaceからサブスクライブすることです。

この投稿で説明されている機能のリリースとタイミングは、Elastic の独自の裁量により決定されます。現在利用できない機能は、予定どおりに提供されないか、まったく提供されない可能性があります。Elastic、Elasticsearch および関連するマークは、米国およびその他の国における Elasticsearch NV の商標、ロゴ、または登録商標です。その他すべての会社名および製品名は、それぞれの所有者の商標、ロゴ、または登録商標です。

よくあるご質問

Google Cloud の Vertex AI プラットフォームとは何ですか?

Vertex AI は、人工知能のライフサイクル全体をカバーする Google Cloud の統合プラットフォームです。これは、Google の最高の機械学習 (ML) ツールと生成 AI ツールを組み合わせることで、「研究」と「生産」の間のギャップを埋めるように設計されています。

Google Cloud の Vertex AI プラットフォームで Elasticsearch を使用する利点は何ですか?

Google の Vertex AI プラットフォームで Elasticsearch を使用する主な利点は、検索するインデックスや取得するドキュメントの数など、必要なパラメータを使用して Elastic エンドポイントを構成するのに、いくつかの簡単な手順しか必要としないことです。

Gemini モデルのクエリの設定を容易にするために、Elasticsearch にはどのようなリソースがありますか?

Elasticsearch には、動的で再利用可能な検索クエリを作成するために使用できるカスタマイズ可能な検索テンプレートがあります。

関連記事

LINQ to Elasticsearch ES|QL:C#を記述してElasticsearchをクエリ

Florian Bernd

Elasticsearch の NLP とベクトル検索によるチャットボット機能の強化

Priscilla Parodi

OpenSearchとElasticsearchの違い:ベクトル検索のパフォーマンス比較

Ugo Sangiorgi

AI盗作:Elasticsearchによる盗作検出

Priscilla Parodi

高度なRAGテクニックパート2:クエリとテスト

Han Xiang Choong

最先端の検索体験を構築する準備はできましたか?

十分に高度な検索は 1 人の努力だけでは実現できません。Elasticsearch は、データ サイエンティスト、ML オペレーター、エンジニアなど、あなたと同じように検索に情熱を傾ける多くの人々によって支えられています。ぜひつながり、協力して、希望する結果が得られる魔法の検索エクスペリエンスを構築しましょう。

はじめましょう