Skalieren des AI-Suchendpunktdurchsatzes mit hohem QPS

Standardmäßig unterstützen Standardendpunkte 20 bis 200 QPS je nach Indexgröße. Echtzeitanwendungen wie Suchleisten, Empfehlungssysteme und Entitätsabgleich erfordern häufig 100 bis 1000 QPS. Nur auf Standardendpunkten können Sie einen Ziel-QPS festlegen. Databricks stellt die Infrastruktur so bereit, dass sie diesem Durchsatzniveau bestmöglich entspricht (nach bestem Bemühen, ohne Gewähr).

Wichtig

Das Festlegen eines Ziel-QPS bietet zusätzliche Kapazität, wodurch die Kosten des Endpunkts erhöht werden. Sie werden für diese zusätzliche Kapazität berechnet, unabhängig vom tatsächlichen Abfragedatenverkehr. Die Durchsatzskalierung erfolgt nach bestem Bemühen und wird nicht garantiert.

Verwenden Sie hohe QPS in folgenden Fällen:

  • Für Ihre Anwendung sind mehr als 50 QPS dauerhafter Durchsatz erforderlich.
  • Sie erhalten 429 (Zu viele Anforderungen) Fehler bei normaler Auslastung.
  • Die Latenz degradiert, wenn der Datenverkehr ansteigt, selbst wenn die durchschnittliche Auslastung niedrig erscheint.

Requirements

  • High QPS ist nur für Standardendpunkte verfügbar. Speicheroptimierte Endpunkte werden nicht unterstützt.
  • Verwenden Sie die Dienstprinzipal-OAuth-Authentifizierung und die Index-URL für Produktionsworkloads mit hoher QPS. Persönliche Zugriffstoken (PATs) und die URL für Arbeitsbereichsabfragen eignen sich für die Erstellung von Prototypen, verwenden jedoch nicht den optimierten Abfragepfad und sind auf einige Dutzend QPS begrenzt.
  • Bei Delta Sync-Indizes, die verwaltete Einbettungsmodelle für Textabfragen verwenden, ist die optimierte Abfrageroute nicht verfügbar, wenn der Arbeitsbereich IP-Zugriffslisten oder private Konnektivität verwendet, z. B. Azure Private Link. In dieser Konfiguration erreicht der Endpunkt möglicherweise nicht den konfigurierten Ziel-QPS.

Ziel-QPS konfigurieren

Legen Sie eine Ziel-QPS fest, wenn Sie einen neuen Endpunkt erstellen oder einen vorhandenen aktualisieren. Die zusätzliche Kapazität, die erforderlich ist, um den Zieldurchsatz optimal abzugleichen, wird automatisch bereitgestellt. Die Durchsatzskalierung erfolgt nach dem Best-Effort-Prinzip und wird nicht garantiert: Die tatsächliche QPS hängt von Ihrer Indexgröße, der Vektordimensionalität, der Abfragekomplexität und der Verwendung von Filtern ab.

Databricks UI

Beim Erstellen eines neuen Endpunkts:

  1. Klicken Sie in der linken Seitenleiste auf Compute.

  2. Klicken Sie auf die Registerkarte "KI-Suche ", und klicken Sie auf " Endpunkt erstellen".

    Erstellen Sie KI-Suchberechnungen.

  3. Geben Sie unter "Erweiterte Einstellungen" den Ziel-QPS-Wert ein.

    Dialog zum Erstellen eines KI-Suchendpunkts.

Beim Aktualisieren eines vorhandenen Endpunkts:

  1. Navigieren Sie zur Endpunktdetailseite.

  2. Klicken Sie im rechten Bereich auf das Stiftsymbol Stiftsymbol neben Target QPS.

    Ziel-QPS bearbeiten.

  3. Geben Sie den neuen Wert ein, und klicken Sie auf "Speichern".

    Geben Sie den Ziel-QPS-Wert ein.

Python SDK

from databricks.ai_search.client import AISearchClient

client = AISearchClient()

# Create a new endpoint with target QPS
endpoint = client.create_endpoint(
    name="my-high-qps-endpoint",
    endpoint_type="STANDARD",
    target_qps=500,
)

# Update an existing endpoint's target QPS
response = client.update_endpoint(name="my-endpoint", target_qps=500)

# Check scaling status
scaling_info = response.get("endpoint", {}).get("scaling_info", {})
print(f"Requested target QPS: {scaling_info.get('requested_target_qps')}")
print(f"State: {scaling_info.get('state')}")
# State is "SCALING_CHANGE_IN_PROGRESS" while capacity is being provisioned,
# then transitions to "SCALING_CHANGE_APPLIED"

REST API

Endpunkt mit Ziel-QPS erstellen:

POST /api/2.0/vector-search/endpoints
{
  "name": "my-high-qps-endpoint",
  "endpoint_type": "STANDARD",
  "target_qps": 500
}

Aktualisieren von Ziel-QPS auf einem vorhandenen Endpunkt:

PATCH /api/2.0/vector-search/endpoints/<ENDPOINT_NAME>
{
  "target_qps": 500
}

Überprüfen des Skalierungsstatus:

GET /api/2.0/vector-search/endpoints/<ENDPOINT_NAME>

Das Feld „Antwort“ scaling_info zeigt requested_target_qps und die Skalierung state an. Der Zustand ist SCALING_CHANGE_IN_PROGRESS , während die Kapazität bereitgestellt wird, und wechselt dann zu SCALING_CHANGE_APPLIED.

Abfrage der Index-URL

Nachdem der Endpunkt den Skalierungszustand SCALING_CHANGE_APPLIED erreicht hat, senden Sie Abfragen an die Index-URL, indem Sie ein OAuth-Token eines Dienstprinzipals verwenden. Diese URL ist erforderlich, um die zusätzliche Abfragekapazität zu nutzen, die von target_qps bereitgestellt wird.

Rufen Sie für Python Anwendungen einmal aufget_index(), und verwenden Sie das zurückgegebene Indexobjekt wieder. Das Python SDK sendet Abfragen an die Index-URL.

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)

Rufen Sie bei REST- oder nicht Python Anwendungen zuerst die Index-URL ab, und senden Sie dann Abfrageanforderungen an diese URL. Das Token muss ein Dienstprinzipal-OAuth-Token sein.

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"]}'

Verwenden Sie für Produktionsdatenverkehr mit hoher QPS nicht die Abfrage-URL des Arbeitsbereichs, wie z. B. /api/2.0/vector-search/indexes/<index_name>/query. Diese URL verwendet nicht die optimierte Abfrageroute und gibt möglicherweise 429 Fehler zurück, bevor der Endpunkt den konfigurierten Ziel-QPS erreicht.

Wie die Skalierung angewendet wird

Nachdem Sie einen Ziel-QPS festgelegt haben, wird die erforderliche Kapazität automatisch bereitgestellt. Die neue Durchsatzstufe gilt nach Abschluss der Bereitstellung; Sie müssen keine Indizes synchronisieren, um die Änderung auszulösen.

Hinweis

Beim Versuch, die Ziel-QPS zu aktualisieren, während ein Skalierungsvorgang ausgeführt wird, wird ein RESOURCE_CONFLICT Fehler zurückgegeben. Warten Sie, bis der aktuelle Vorgang abgeschlossen ist, bevor Sie den Vorgang wiederholen.

Beheben von 429-Fehlern

Verwenden Sie bei Workloads mit hoher QPS diese Prüfungen, um den Engpass zu finden:

  • Wenn Sie eine PAT- oder Arbeitsbereichsabfrage-URL verwenden, wechseln Sie zur OAuth-Authentifizierung des Dienstprinzipals und zur Index-URL.
  • Wenn scaling_info.state auf SCALING_CHANGE_IN_PROGRESS gesetzt ist, warten Sie, bis sich der Zustand zu SCALING_CHANGE_APPLIED ändert.
  • Wenn Ihre Anwendung Vektorabfragen mit query_vectorsendet, befindet sich das Einbettungsmodell nicht im Abfragepfad. Wenn 429-Fehler weiterhin auftreten, nachdem die Skalierung abgeschlossen ist, reduzieren Sie die Anforderungsparallelität oder legen Sie eine höhere target_qps fest.
  • Wenn Ihre Anwendung Textabfragen an einen Delta-Sync-Index mit von Databricks verwalteten Einbettungsmodellen richtet, könnte das Einbettungsmodell der Engpass sein. Verwenden Sie ein kleineres Einbettungsmodell, zum Beispiel databricks-qwen3-embedding-0-6b, anstelle von databricks-gte-large-en, oder verwenden Sie einen Endpunkt für Foundation-Model-APIs mit bereitgestelltem Durchsatz oder einen anderen dedizierten Modellserving-Endpunkt für Einbettungen.

Limitations

  • Keine automatische Skalierung: Sie müssen die Ziel-QPS basierend auf dem erwarteten Datenverkehr manuell festlegen. Wenn der Datenverkehr die bereitgestellte Ebene überschreitet, treten 429 Fehler auf. Siehe Plan für Abfrage-Spitzen.
  • Nur Standardendpunkte: Speicheroptimierte Endpunkte unterstützen target_qpsnicht .
  • Optimierte Route erforderlich: Die konfigurierte Ziel-QPS gilt für Datenverkehr, bei dem die OAuth-Authentifizierung für den Dienstprinzipal und die Index-URL verwendet werden. Der PAT-Datenverkehr und der URL-Datenverkehr für Workspace-Abfragen sind auf einige Dutzend QPS begrenzt.
  • Verwaltete Einbettungsmodelle können einen zweiten Grenzwert hinzufügen: Bei Delta-Synchronisierungsindizes, die ein verwaltetes Einbettungsmodell für Textabfragen verwenden, hängt der Abfragedurchsatz auch vom Einbettungsmodell ab, das den Endpunkt bedient. Erhöhen Sie die Kapazität des Modells, verwenden Sie den bereitgestellten Durchsatz, oder verwenden Sie selbstverwaltete Einbettungen für vorhersehbaren Abfragedurchsatz.