Batch Cortex Search¶
Die Batch Cortex Search-Funktion ist eine Tabellenfunktion, mit der Sie einen Batch von Abfragen an einen Cortex Search Service übermitteln können. Es ist für Offline-Anwendungsfälle mit hohen Durchsatzanforderungen gedacht, z. B. bei der Auflösung von Entitäten, der Deduplizierung oder beim Clustering von Aufgaben.
Jobs, die mit der CORTEX_SEARCH_BATCH-Funktion an einen Cortex Search Service übermittelt wurden, nutzen zusätzliche Computeressourcen, um einen deutlich höheren Durchsatz (Abfragen pro Sekunde) zu erzielen als die interaktiven (Python, REST oderSEARCH_PREVIEW) API-Weboberflächen für Suchabfragen.
Syntax¶
Verwenden Sie die folgende Syntax, um einen Cortex Search Service im Batchmodus unter Verwendung der CORTEX_SEARCH_BATCH-Tabellenfunktion abzufragen:
Parameter¶
Die CORTEX_SEARCH_BATCH-Funktion unterstützt die folgenden Parameter:
service_name(string, erforderlich)Vollqualifizierter Name des abzufragenden Cortex Search Service.
query(string, optional):Spalte, die die Abfragezeichenfolge für die Suche des Service enthält.
multi_index_query(variant, optional)Ein Objekt, das eine oder mehrere Vektor- oder Schlüsselwortabfrageeingaben angibt, die im Serviceindex gesucht werden sollen. Details zum Erstellen dieses Parameters finden Sie unter multi_index_query.
Bemerkung
Aus Leistungsgründen unterstützt
multi_index_queryderzeit höchstens einen Vektorindexeintrag im Abfragearray.filter(variant, optional)Spalte mit Filterobjekten, die auf die Suchergebnisse angewendet werden sollen.
limit(integer, optional):Maximale Anzahl von Ergebnissen, die pro Abfrage zurückgegeben werden sollen Standard: 10.
options(variant, optional)Spalte, die ein VARIANT-Objekt mit optionalen Einstellungen pro Abfrage enthält. Zu den unterstützten Schlüsseln der obersten Ebene gehören:
scoring_config(Objekt, optional): Gleiche Struktur wie derscoring_config-Parameter für interaktive Cortex Search-Abfragen (Python, REST oderSEARCH_PREVIEW). Verwenden Sie ihn, um die Rangfolge für die Batch-Abfrage dieser Zeile anzupassen. Siehe Anpassen der Cortex Search-Bewertungen.replicas(integer, optional): Gibt an, wie viele Kopien des Suchindexes die Batch-Abfrage dieser Zeile bedienen. Standard: 2. Höhere Werte können den Durchsatz verbessern. Die Kosten für die -Bereitstellung steigen im Verhältnis zur Anzahl der Replikate.experimental(Objekt, optional): Objekt, das für experimentelle oder Vorschau-Suchverhalten reserviert ist. Felder und Semantik können sich ohne Vorankündigung ändern. Verwenden Sie diesen Parameter nur, wenn die Snowflake-Dokumentation oder der Support Sie anweist, bestimmte Schlüssel festzulegen.
Bemerkung
Mindestens query, multi_index_query oder filter muss angegeben werden.
Nutzungshinweise¶
Der Durchsatz der Batch-Suchfunktion kann je nach Umfang der im abgefragten Cortex Search Service indizierten Daten und der Komplexität der Suchabfragen variieren. Führen Sie die Funktion für eine kleine Anzahl von Abfragen aus, um den Durchsatz für Ihren speziellen Workload zu messen. Im Allgemeinen weisen Abfragen für größere Services mit mehr Filterbedingungen einen geringeren Durchsatz auf.
Der Durchsatz der Batch-Suchfunktion, d. h. die Anzahl der pro Sekunde verarbeiteten Suchabfragen, wird nicht von der Größe des für die Abfrage verwendeten Warehouse beeinflusst.
Da die Batch-Suche dedizierte Ressourcen für jeden Job bereitstellt, verursacht sie eine zusätzliche Startlatenz. Wenn Sie weniger als 2.000 Abfragen ausführen müssen, erhalten Sie in der Regel schnellere Ergebnisse, wenn Sie die interaktive Cortex Search API (Python oder REST API) anstelle der Batch-Suche verwenden.
Im Gegensatz zur interaktiven Cortex Search API kann die Batch-Suchfunktion Services abfragen, deren Bereitstellung derzeit ausgesetzt ist.
Ein einzelner Cortex Search Service kann gleichzeitig im interaktiven und im Batch-Modus abgefragt werden, ohne dass die Leistung oder der Durchsatz der interaktiven Abfrage beeinträchtigt wird. Für interaktive Abfragen und Batch-Abfragen werden separate Computeressourcen verwendet.
Hinweise zu Kosten¶
Die Batch-Suche hat drei Kostenkomponenten:
- Bereitstellungskosten
Eine Gebühr basierend auf der Größe der Suchindexdaten und der Dauer des Batch-Suchjobs, ohne die Startzeit. Spiegelt auch den
replicas-Wert in``options`` (Standard 2) wider; siehe``replicas``-Option weiter oben.- Kosten für Abfrageeinbettung
Eine Gebühr für die Anzahl der Token, die als Ergebnis der Eingabeabfragen eingebettet sind. Im Gegensatz zur interaktiven Cortex Search ist die Einbettung von Abfragen bei der Batch-Suche nicht kostenlos.
- Kosten für virtuelles Warehouse
Eine Gebühr für die Verarbeitung des virtuellen Warehouses, die zur Ausführung des Batch-Jobs verwendet wird.
Weitere Informationen zur Nutzungsverfolgung finden Sie in der Account Usage-Ansicht CORTEX_SEARCH_BATCH_QUERY_USAGE_HISTORY. Weitere Informationen zu den Kosten für Cortex Search finden Sie unter Hinweise zu Kosten.
Regionale Verfügbarkeit¶
Die Batch-Suche ist in allen Regionen verfügbar, in denen Cortex Search verfügbar ist. Eine vollständige Liste der unterstützten Regionen finden Sie unter Regionale Verfügbarkeit.
Nutzungsbeispiel¶
In diesem Beispiel werden die Produkte in einem von einem Benutzenden übermittelten Bestellformular mit einem „Gold-“Produktkatalog abgeglichen. Der CORTEX_SEARCH_BATCH-Aufruf verwendet options, sodass die Einbettungen ohne das Standardpräfix für die Suchabfrage berechnet werden; siehe Deaktivieren des Abfragepräfixes für Vektoreinbettungen. Verwenden Sie diese Einstellung erst, wenn Sie die Auswirkungen auf die Ergebnisqualität ausgewertet haben.
Im folgenden Beispiel wird multi_index_query verwendet, um vorberechnete Einbettungen als Abfrageeingabe anstelle von Rohtext zu übermitteln. Hier enthält die Quelltabelle``my_db.my_schema.product_embeddings`` eine Spalte embedding mit vorberechneten Vektoren und der Cortex Search Service my_db.my_schema.golden_product_service wurde mit einer BYOV-Konfiguration (Bring your own vector) erstellt. Weitere Informationen zur Erstellung von``multi_index_query`` finden Sie unter multi_index_query.