メインコンテンツまでスキップ

高 QPS で AI Search エンドポイントのスループットをスケーリングする

備考

プレビュー

この機能は パブリック プレビュー段階です。

デフォルトでは、標準エンドポイントはインデックスのサイズに応じて20~200 QPSをサポートしています。検索バー、レコメンデーションシステム、エンティティマッチングのようなリアルタイムアプリケーションは、多くの場合、100〜1,000以上のQPSを必要とします。標準エンドポイントのみ、ターゲットQPSを設定できます。Databricks は、そのスループットレベルに最適に一致するようにインフラストラクチャをプロビジョニングします(ベストエフォートであり、保証されません)。

重要

ターゲットQPSを設定すると、追加の容量がプロビジョニングされ、エンドポイントのコストが増加します。この追加のキャパシティには、実際のクエリトラフィックに関わらず課金されます。スループットのスケーリングはベストエフォートであり、パブリックプレビュー期間中は保証されません。

高QPSを使用するのは、次のような場合です:

  • お客様のアプリケーションには、50 QPSを超える持続的なスループットが必要です。
  • 通常の負荷時に429 (リクエストが多すぎます) エラーが発生します。
  • トラフィックが増加すると、平均利用率が低く見える場合でも、レイテンシは低下します。

要件

  • High QPSは標準エンドポイントでのみ利用可能です。ストレージ最適化エンドポイントはサポートされていません。
  • 高QPSの本番運用ワークロードには、サービスプリンシパルのOAuth認証とインデックスURLを使用します。個人アクセストークン (PAT) とワークスペースクエリURLはプロトタイピングには適していますが、最適化されたクエリ経路を使用せず、数十QPSに制限されています。
  • テキストクエリに管理された埋め込みモデルを使用するDelta Syncインデックスの場合、ワークスペースがIPアクセスリストまたはAWS PrivateLinkのようなプライベート接続を使用しているとき、最適化されたクエリのルーティングは利用できません。その構成では、エンドポイントは構成されたターゲットQPSに達しない可能性があります。

ターゲットQPSを設定する

新しいエンドポイントを作成する際、または既存のエンドポイントを更新する際に、ターゲットQPSを設定します。ターゲットスループットに最適に一致させるために必要な追加容量は、自動的にプロビジョニングされます。Public Preview では、スループットのスケーリングはベストエフォートであり、保証されません:実際の QPS は、インデックスのサイズ、ベクトルの次元数、クエリーの複雑さ、およびフィルターの使用状況によって異なります。

新しいエンドポイントを作成する際:

  1. 左側のサイドバーで、 コンピュート をクリックします。

  2. 「**AI Search**」タブをクリックし、「**エンドポイントを作成**」をクリックします。

    AI Searchコンピュートを作成します。

  3. 「高度な設定」で、ターゲットQPS値を入力してください。

    「AI Searchエンドポイントの作成」ダイアログを作成します。

既存のエンドポイントを更新する際:

  1. エンドポイントの詳細ページに移動してください。

  2. 右側のパネルで、鉛筆アイコン。 「ターゲットQPS」 の横にある鉛筆アイコン をクリックします。

    ターゲットQPSを編集してください。

  3. 新しい値を入力し、「 保存 」をクリックします。

    ターゲットQPS値を入力してください。

インデックス URL をクエリーします

エンドポイントのスケーリング状態がSCALING_CHANGE_APPLIEDになった後、サービスプリンシパルのOAuthトークンを使用して、インデックスURLにクエリを送信します。この URL は、target_qps によってプロビジョニングされた追加のクエリー容量を使用するために必要です。

Pythonアプリケーションの場合は、get_index()を一度呼び出し、返されたインデックスオブジェクトを再利用してください。Python SDKはインデックスURLにクエリを送信します。

Python
from databricks.ai_search.client import AISearchClient

client = AISearchClient(
service_principal_client_id="...",
service_principal_client_secret="...",
workspace_url="https://<workspace-url>",
)

index = client.get_index(endpoint_name="my-high-qps-endpoint", index_name="catalog.schema.index")

# Reuse this index object for every query.
index.similarity_search(query_vector=[...], columns=["id", "text"], num_results=10)

RESTまたはPython以外のアプリケーションの場合、まずインデックスURLを取得し、そのURLにクエリリクエストを送信します。トークンはサービスプリンシパルのOAuthトークンである必要があります。

sh
export WORKSPACE_URL=https://<workspace-url>
export INDEX_NAME=catalog.schema.index
export TOKEN=<oauth-token>

export INDEX_URL=$(curl -X GET \
-H "Authorization: Bearer $TOKEN" \
"$WORKSPACE_URL/api/2.0/vector-search/indexes/$INDEX_NAME" \
| jq -r '.status.index_url')

case "$INDEX_URL" in
http://*|https://*) ;;
*) INDEX_URL="https://$INDEX_URL" ;;
esac

curl -X POST \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
"$INDEX_URL/query" \
--data '{"num_results": 10, "query_vector": [...], "columns": ["id", "text"]}'

高QPSの本番運用トラフィックには、/api/2.0/vector-search/indexes/<index_name>/queryのようなワークスペースクエリURLを使用しないでください。そのURLは最適化されたクエリ経路を使用していないため、エンドポイントが設定されたターゲットQPSに達する前に429エラーを返す可能性があります。

スケーリングの適用方法

ターゲットQPSの設定後、必要な容量が自動的にプロビジョニングされます。新しいスループットレベルは、プロビジョニングが完了した後に適用されます;変更をトリガーするためにインデックスを同期する必要はありません。

注記

スケーリング操作の進行中にターゲットQPSの更新を試行すると、RESOURCE_CONFLICTエラーが返されます。現在の操作が完了するのを待ってから、再試行してください。

429エラーのトラブルシューティング

高いQPSワークロードの場合、ボトルネックを見つけるには、以下のチェックを使用してください。

  • PAT またはワークスペースクエリー URL を使用している場合は、サービスプリンシパル OAuth 認証およびインデックス URL に切り替えてください。
  • scaling_info.stateSCALING_CHANGE_IN_PROGRESS である場合、状態が SCALING_CHANGE_APPLIED に変更されるまでお待ちください。
  • アプリケーションがquery_vectorでベクタークエリを送信する場合、埋め込みモデルはクエリパスにありません。スケーリングが完了しても429エラーが続く場合、リクエストの同時実行を減らすか、より高いtarget_qpsを設定してください。
  • アプリケーションがDatabricksマネージド埋め込みモデルを持つDelta Syncインデックスにテキストクエリを送信する場合、埋め込みモデルがボトルネックになる可能性があります。の代わりに のようなより小さい埋め込みモデルを使用するか、databricks-qwen3-embedding-0-6b databricks-gte-large-enプロビジョニングされたスループットの基盤モデルAPIエンドポイント または埋め込み用の別の専用Model Servingエンドポイントを使用してください。

制限事項:

  • オートスケールなし:予測されるトラフィックに基づいて、ターゲットQPSを手動で設定する必要があります。トラフィックがプロビジョニングされたレベルを超過した場合、429エラーが発生します。「クエリ スパイクの計画」を参照してください。
  • 標準エンドポイントに限り:ストレージ最適化エンドポイントはtarget_qps をサポートしていません。
  • 最適化されたルートが必要です : 構成されたターゲットQPSは、サービスプリンシパルOAuth認証とインデックスURLを使用するトラフィックに適用されます。PATトラフィックとワークスペースのクエリURLトラフィックは、数十QPSに制限されています。
  • マネージド埋め込みモデルは 2 番目の制限を追加する場合があります : テキストクエリーにマネージド埋め込みモデルを使用する Delta Sync インデックスの場合、クエリースループットは、埋め込みモデルサービングエンドポイントにも依存します。モデルサービング容量を増やし、プロビジョニング済みスループットを使用するか、または自己管理の埋め込みを使用することで、予測可能なクエリースループットを実現できます。