Automatische Einbettungserstellung
In diesem Dokument wird beschrieben, wie Sie die automatische Einbettungserstellung für Ihre Daten verwenden. Damit kann BigQuery eine Spalte mit Einbettungen in einer Tabelle basierend auf einer Quellspalte verwalten. Die Quellspalte muss den Datentyp STRING oder ObjectRef haben. Wenn Sie Daten in der Quellspalte hinzufügen oder ändern, generiert oder aktualisiert BigQuery automatisch die Einbettungsspalte für diese Daten mithilfe eines Agent Platform-Einbettungsmodells.
Das ist hilfreich, wenn Sie BigQuery Ihre Einbettungen verwalten lassen möchten, wenn Ihre Quelldaten regelmäßig aktualisiert werden.
Einbettungen sind nützlich für moderne generative KI-Anwendungen wie Retrieval Augmented Generation (RAG), aber sie können komplex zu erstellen, zu verwalten und abzufragen sein. Mit der automatischen Einbettungserstellung können Sie den Prozess der Erstellung, Verwaltung und Abfrage von Einbettungen für die Verwendung in Ähnlichkeitssuchen und anderen generativen KI-Anwendungen vereinfachen.
Sie können beispielsweise Abfragen wie die folgenden verwenden, um eine Tabelle mit aktivierter automatischer Einbettungserstellung zu erstellen, Daten einzufügen und dann eine semantische Suche durchzuführen:
CREATE TABLE mydataset.products (
name STRING,
description STRING,
description_embedding STRUCT<result ARRAY<FLOAT64>, status STRING>
GENERATED ALWAYS AS (
AI.EMBED(description, connection_id => 'us.example_connection',
endpoint => 'text-embedding-005')
# Alternatively, you can use the syntax for a built-in model.
# AI.EMBED(description, model => 'embeddinggemma-300m')
) STORED OPTIONS( asynchronous = TRUE ));
# Values in the description_embedding column are automatically generated.
INSERT INTO mydataset.products (name, description) VALUES
('Super slingers', 'An exciting board game for the whole family'), ...;
SELECT * FROM AI.SEARCH(TABLE mydataset.products, 'description', 'A really fun toy');
Hinweis
Wenn Sie die automatische Einbettungserstellung für eine Tabelle aktivieren möchten, benötigen Sie die erforderlichen Berechtigungen und eine Verbindung und müssen die Vertex AI API für Ihr Projekt aktivieren.
Erforderliche Rollen
Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Aktivieren der automatischen Einbettungserstellung benötigen:
-
Zum Verwenden einer Verbindungsressource:
BigQuery-Verbindungsnutzer (
roles/bigquery.connectionUser) für die Verbindung -
Zum Erstellen oder Ändern einer Tabelle:
BigQuery-Datenbearbeiter (
roles/bigquery.dataEditor) für die Tabelle -
Weisen Sie dem Dienstkonto der Verbindung die folgende Rolle zu, damit es auf Modelle zugreifen kann, die auf Agent Platform-Endpunkten gehostet werden:
Agent Platform-Nutzer (
roles/aiplatform.user) für das Projekt mit der Verbindung
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.
Sie können die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.
Verbindung erstellen und Berechtigung für ein Dienstkonto gewähren
Wenn Sie die automatische Einbettungserstellung für eine Tabelle aktivieren möchten, müssen Sie
eine Cloud-Ressourcenverbindung erstellen.
Weisen Sie dann dem Dienstkonto
, das beim Erstellen der Verbindung erstellt wurde, die Rolle „Agent Platform-Nutzer“
(roles/aiplatform.user) zu.
Automatisch generierte Einbettungsspalte erstellen
Sie können entweder eine automatisch generierte Einbettungsspalte in einer neuen Tabelle erstellen oder einer vorhandenen Tabelle hinzufügen.
Tabelle mit einer automatisch generierten Einbettungsspalte erstellen
Sie können die automatische Einbettungserstellung verwenden, um Einbettungen mit
der AI.EMBED Funktion
in einer
CREATE TABLE Anweisung zu generieren.
SQL
Verwenden Sie eine CREATE TABLE-Anweisung, um eine Tabelle mit einer automatisch generierten Einbettungsspalte zu erstellen. Führen Sie dazu die folgenden Schritte aus:
Rufen Sie in der Google Cloud Console die Seite BigQuery auf.
Geben Sie im Abfrageeditor die folgende Anweisung ein:
CREATE TABLE DATASET_ID.TABLE ( [COLUMN, ...] SOURCE_COL { STRING | ObjectRef }, EMBEDDING_COL_NAME STRUCT<result ARRAY<FLOAT64>, status STRING> GENERATED ALWAYS AS ( AI.EMBED( SOURCE_COL, { connection_id => CONNECTION_ID, endpoint => ENDPOINT | model => MODEL }) ) STORED OPTIONS (asynchronous = TRUE) );
Ersetzen Sie Folgendes:
DATASET_ID: der Name des Datasets, in dem Sie die Tabelle erstellen möchten.TABLE: der Name der Tabelle, für die die automatische Einbettungserstellung erstellt werden soll.COLUMN, ...: alle Spalten, die Ihre Tabelle neben der Spalte enthalten soll, die Sie automatisch einbetten möchten.SOURCE_COL: der Name derSTRING- oderObjectRef-Spalte, die Sie automatisch einbetten möchten.EMBEDDING_COL_NAME: der Name der automatisch generierten Einbettungsspalte.CONNECTION_ID: einSTRING-Wert, der den Namen einer zu verwendenden Verbindung enthält, z. B.my_project.us.example_connection. Sie müssen dem Dienstkonto der Verbindung in dem Projekt, in dem Sie die Tabelle erstellen, die Rolle „Agent Platform-Nutzer“ zuweisen.ENDPOINT: einSTRING-Wert, der einen unterstützten Agent Platform-Texteinbettungsmodell-Endpunkt angibt. Der von Ihnen angegebene Endpunktwert muss die Modellversion enthalten, z. B.text-embedding-005. Wenn Sie den Modellnamen anstelle einer URL angeben, identifiziert BigQuery ML das Modell automatisch und verwendet den vollständigen Endpunkt des Modells.MODEL(Vorschau): einSTRING-Wert, der ein integriertes Texteinbettungsmodell angibt. Der einzige unterstützte Wert ist dasembeddinggemma-300mModell. Wenn Sie diesen Parameter angeben, können Sie die Parameterendpointoderconnection_idnicht angeben. Wenn Sie den ParameterMODELangeben, bleiben Ihre Daten in BigQuery und Ihre Slots werden verwendet, um die Einbettungen zu erstellen. Es werden keine Daten an Agent Platform gesendet und es fallen keine Gebühren in Agent Platform an.
Klicken Sie auf Ausführen.
Informationen zum Ausführen von Abfragen finden Sie unter Interaktive Abfrage ausführen.
bq
Wenn Sie mit dem bq-Befehlszeilentool eine Tabelle mit einer automatisch generierten Einbettungsspalte erstellen möchten, verwenden Sie den Befehl bq mk mit einer JSON-Schemadatei, die das Tabellenschema definiert:
Erstellen Sie eine JSON-Schemadatei. Das folgende Beispiel zeigt ein Schema, das eine Einbettungsspalte basierend auf einer Quellspalte erstellt. In diesem Beispiel wird ein Agent Platform-Endpunkt für die Einbettungserstellung verwendet.
[ { "name": "SOURCE_COL", "type": "STRING" }, { "fields": [ { "mode": "REPEATED", "name": "result", "type": "FLOAT" }, { "name": "status", "type": "STRING" } ], "generatedColumn": { "generationExpressionInfo": { "asynchronous": true, "generationExpression": "AI.EMBED(SOURCE_COL, connection_id => 'CONNECTION_ID', endpoint => 'ENDPOINT')", "stored": true }, "generatedMode": "GENERATED_ALWAYS" }, "name": "EMBEDDING_COL_NAME", "type": "RECORD" } ]Wenn Sie anstelle eines Agent Platform Endpunkts ein integriertes Modell verwenden, verwenden Sie eine ähnliche Syntax wie die folgende für
generationExpression:"AI.EMBED(SOURCE_COL, model => 'MODEL')"Informationen zu den zu verwendenden Werten finden Sie in den Beschreibungen für
SOURCE_COL,EMBEDDING_COL_NAME,CONNECTION_ID,ENDPOINTundMODELauf dem Tab SQL.Speichern Sie das Schema in einer Datei wie
schema.json.Erstellen Sie die Tabelle mit dem Befehl
bq mk --table:bq mk --table DATASET_ID.TABLE schema.json
Ersetzen Sie Folgendes:
DATASET_ID: der Name des Datasets, in dem Sie die Tabelle erstellen möchten.TABLE: der Name der Tabelle, für die die automatische Einbettungserstellung erstellt werden soll.COLUMN, ...: alle Spalten, die Ihre Tabelle neben der Spalte enthalten soll, die Sie automatisch einbetten möchten.STRING_COL: der Name derSTRING-Spalte, die Sie automatisch einbetten möchten.EMBEDDING_COL_NAME: der Name der automatisch generierten Einbettungsspalte.CONNECTION_ID: einSTRING-Wert, der den Namen einer zu verwendenden Verbindung enthält, z. B.my_project.us.example_connection. Sie müssen dem Dienstkonto der Verbindung in dem Projekt, in dem Sie die Tabelle erstellen, die Rolle „Agent Platform-Nutzer“ zuweisen.ENDPOINT: einSTRING-Wert, der einen unterstützten Agent Platform Endpunkt für das Texteinbettungsmodell angibt. Der von Ihnen angegebene Endpunktwert muss die Modellversion enthalten, z. B.text-embedding-005. Wenn Sie den Modellnamen anstelle einer URL angeben, identifiziert BigQuery ML das Modell automatisch und verwendet den vollständigen Endpunkt des Modells.MODEL(Vorschau): einSTRING-Wert, der ein integriertes Texteinbettungsmodell angibt. Der einzige unterstützte Wert ist dasembeddinggemma-300mModell. Wenn Sie diesen Parameter angeben, können Sie die Parameterendpointoderconnection_idnicht angeben.Wenn Sie den Parameter
MODELangeben, bleiben Ihre Daten in BigQuery und Ihre Slots werden verwendet, um die Einbettungen zu erstellen. Es werden keine Daten an Agent Platform gesendet und es fallen keine Gebühren in Agent Platform an.
Vorhandener Tabelle eine automatisch generierte Einbettungsspalte hinzufügen
Sie können einer vorhandenen Tabelle auch mit
einer ALTER TABLE ADD COLUMN Anweisung eine automatisch generierte Einbettungsspalte hinzufügen.
SQL
Verwenden Sie eine ALTER TABLE ADD COLUMN-Anweisung, um einer vorhandenen Tabelle eine automatisch generierte Einbettungsspalte hinzuzufügen. Führen Sie dazu die folgenden Schritte aus:
Rufen Sie in der Google Cloud Console die Seite BigQuery auf.
Geben Sie im Abfrageeditor die folgende Anweisung ein:
ALTER TABLE DATASET_ID.TABLE ADD COLUMN EMBEDDING_COL_NAME STRUCT<result ARRAY<FLOAT64>, status STRING> GENERATED ALWAYS AS ( AI.EMBED( SOURCE_COL, { connection_id => CONNECTION_ID, endpoint => ENDPOINT | model => MODEL }) ) STORED OPTIONS (asynchronous = TRUE) ;
Ersetzen Sie Folgendes:
DATASET_ID: der Name des Datasets, das die Tabelle enthält.TABLE: der Name der Tabelle, der Sie die automatisch generierte Einbettungsspalte hinzufügen möchten.EMBEDDING_COL_NAME: der Name der automatisch generierten Einbettungsspalte.SOURCE_COL: der Name derSTRING- oderObjectRef-Spalte, die Sie automatisch einbetten möchten.CONNECTION_ID: einSTRING-Wert, der den Namen einer zu verwendenden Verbindung enthält, z. B.my_project.us.example_connection.ENDPOINT: einSTRING-Wert, der einen unterstützten Agent Platform-Texteinbettungsmodell-Endpunkt angibt.MODEL(Vorschau): einSTRING-Wert, der ein integriertes Texteinbettungsmodell angibt. Der einzige unterstützte Wert ist dasembeddinggemma-300mModell. Wenn Sie diesen Parameter angeben, können Sie die Parameterendpointoderconnection_idnicht angeben. Wenn Sie den ParameterMODELangeben, bleiben Ihre Daten in BigQuery und Ihre Slots werden verwendet, um die Einbettungen zu erstellen. Es werden keine Daten an Agent Platform gesendet und es fallen keine Gebühren in Agent Platform an.
Klicken Sie auf Ausführen.
Informationen zum Ausführen von Abfragen finden Sie unter Interaktive Abfrage ausführen.
bq
Wenn Sie einer vorhandenen Tabelle mit dem bq-Befehlszeilentool eine automatisch generierte Einbettungsspalte hinzufügen möchten, verwenden Sie den Befehl bq update mit einer JSON-Schemadatei, die das aktualisierte Tabellenschema definiert:
- Rufen Sie das aktuelle Schema der Tabelle ab und speichern Sie es in einer Datei wie
schema.json:bq show --schema --format=prettyjson DATASET_ID.TABLE > schema.json
Bearbeiten Sie
schema.json, um die Definition für die neue automatisch generierte Einbettungsspalte hinzuzufügen. Das folgende Beispiel zeigt die Definition für eine Einbettungsspalte, die auf einer Quellspalte basiert. In diesem Beispiel wird ein Agent Platform-Endpunkt für die Einbettungserstellung verwendet.[ { "name": "SOURCE_COL", "type": "STRING" }, { "fields": [ { "mode": "REPEATED", "name": "result", "type": "FLOAT" }, { "name": "status", "type": "STRING" } ], "generatedColumn": { "generationExpressionInfo": { "asynchronous": true, "generationExpression": "AI.EMBED(SOURCE_COL, connection_id => 'CONNECTION_ID', endpoint => 'ENDPOINT')", "stored": true }, "generatedMode": "GENERATED_ALWAYS" }, "name": "EMBEDDING_COL_NAME", "type": "RECORD" } ]Wenn Sie anstelle eines Agent Platform Endpunkts ein integriertes Modell verwenden, verwenden Sie eine ähnliche Syntax wie die folgende für
generationExpression:"AI.EMBED(SOURCE_COL, model => 'MODEL')"Informationen zu den zu verwendenden Werten finden Sie in den Beschreibungen für
SOURCE_COL,EMBEDDING_COL_NAME,CONNECTION_ID,ENDPOINTundMODELauf dem Tab SQL.Aktualisieren Sie die Tabelle mit dem Befehl
bq update --table:bq update --table DATASET_ID.TABLE schema.json
Ersetzen Sie Folgendes:
DATASET_ID: der Name des Datasets, das die Tabelle enthält.TABLE: der Name der Tabelle, der Sie die automatisch generierte Einbettungsspalte hinzufügen möchten.
Der Hintergrundjob zur Einbettungserstellung wird kurz nach dem Erstellen oder Ändern der Tabelle oder nach dem Aktualisieren der Daten in der Quellspalte gestartet.
Wenn Sie den Fortschritt der Einbettungserstellung verfolgen möchten, können Sie eine Abfrage wie die folgende verwenden:
SELECT
COUNT(*) AS total_num_rows,
COUNTIF(description_embedding IS NOT NULL
AND description_embedding.status = '') AS total_num_generated_embeddings
FROM
PROJECT_ID.DATASET_ID.TABLE;
Nachdem Sie die Tabelle mit Einbettungen haben, können Sie
einen Vektorindex erstellen
für die STRUCT Spalte, die die automatisch generierte Einbettung enthält.
Beispiel
Angenommen, Sie sind ein großer Einzelhändler, der viele verschiedene Produkte verkauft. Sie haben eine Tabelle mit Produktnamen und -beschreibungen und möchten Ihren Kunden helfen, die gesuchten Produkte zu finden. Die folgenden Abfragen zeigen, wie Sie die automatische Einbettungserstellung einrichten, um die semantische Suche in Ihren Produktbeschreibungen zu unterstützen.
Erstellen Sie zuerst ein Dataset:
CREATE SCHEMA mydataset;
Erstellen Sie als Nächstes eine Tabelle mit aktivierter automatischer Einbettungserstellung, um Ihre Produktinformationen zu speichern. Die automatisch generierte Spalte heißt
description_embedding und basiert auf der description Spalte.
# Create a table of products and descriptions with a generated embedding column.
CREATE TABLE mydataset.products (
name STRING,
description STRING,
description_embedding STRUCT<result ARRAY<FLOAT64>, status STRING>
GENERATED ALWAYS AS (
AI.EMBED(description, connection_id => 'us.example_connection',
endpoint => 'text-embedding-005')
# Alternatively, you can use the syntax for a built-in model.
# AI.EMBED(description, model => 'embeddinggemma-300m')
) STORED OPTIONS( asynchronous = TRUE )
);
Mit der folgenden Abfrage werden einige Produktnamen und -beschreibungen in die Tabelle eingefügt.
Sie geben keinen Wert für description_embedding an, da er automatisch generiert wird.
# Insert product descriptions into the table.
# The description_embedding column is automatically updated.
INSERT INTO mydataset.products (name, description) VALUES
("Lounger chair", "A comfortable chair for relaxing in."),
("Super slingers", "An exciting board game for the whole family."),
("Encyclopedia set", "A collection of informational books.");
Optional können Sie einen Vektorindex für die Tabelle erstellen, um die Suche zu beschleunigen.
Für einen Vektorindex sind mehr als drei Zeilen erforderlich. Bei der folgenden Abfrage wird davon ausgegangen, dass Sie zusätzliche Daten eingefügt haben. Jedes Mal, wenn Sie Daten einfügen, wird die Spalte description_embedding automatisch aktualisiert.
CREATE VECTOR INDEX my_index
ON mydataset.products(description_embedding)
OPTIONS(index_type = 'IVF');
Schließlich können Sie mit der
AI.SEARCH Funktion
eine semantische Suche nach einem lustigen Spielzeug für Ihre Produkte durchführen:
# Search for products that are fun to play with.
SELECT base.name, base.description, distance
FROM AI.SEARCH(TABLE mydataset.products, 'description', "A really fun toy");
/*------------------+----------------------------------------------+----------------------+
| name | description | distance |
+------------------+----------------------------------------------+----------------------+
| Super slingers | An exciting board game for the whole family. | 0.80954913893618929 |
| Lounger chair | A comfortable chair for relaxing in. | 0.938933930620146 |
| Encyclopedia set | A collection of informational books. | 1.1119297739353384 |
+------------------+----------------------------------------------+----------------------*/
Aus ObjectRef-Spalten generierte Einbettungen
Sie können generierte Einbettungsspalten für eine ObjectRef-Spalte in einer Tabelle hinzufügen.
Das folgende Beispiel zeigt, wie Sie eine Tabelle mit einer ObjectRef-Spalte erstellen und dann eine generierte Einbettungsspalte für diese Spalte hinzufügen:
# Create a table with ObjectRef columns.
CREATE TABLE mydataset.images AS
SELECT
REGEXP_EXTRACT(ref.uri, r'.*/(.*).jpg$') AS name,
ref
FROM mydataset.object_table;
# Add a generated embedding column for the ObjectRef column.
ALTER TABLE mydataset.images
ADD COLUMN image_embedding STRUCT<result ARRAY<FLOAT64>, status STRING>
GENERATED ALWAYS AS (
AI.EMBED(
ref,
connection_id => "us.my_connection",
endpoint => "multimodalembedding@001")
)
STORED OPTIONS (asynchronous = true);
Informationen zu automatisch generierten Einbettungsspalten abrufen
Wenn Sie prüfen möchten, ob eine Spalte eine automatisch generierte Einbettungsspalte ist, fragen Sie
die
INFORMATION_SCHEMA.COLUMNS Ansicht ab.
Die folgende Abfrage zeigt Informationen zu allen automatisch generierten Einbettungsspalten:
SELECT *
FROM PROJECT_ID.DATASET_ID.INFORMATION_SCHEMA.COLUMNS
WHERE is_generated = 'ALWAYS';
Im Feld generation_expression sehen Sie den Aufruf der Funktion AI.EMBED, mit der die Einbettungen in der Spalte generiert werden.
Eigene Reservierung verwenden
Standardmäßig verwendet BigQuery On-Demand-Slots, um die Verarbeitung zu übernehmen, die zum Verwalten der generierten Einbettungsspalte erforderlich ist. Um eine
vorhersehbare und konsistente Leistung zu gewährleisten, können Sie
optional
eine Reservierung erstellen
und job_type auf BACKGROUND festlegen. Wenn eine Hintergrundreservierung vorhanden ist, verwendet BigQuery diese stattdessen, um die generierte Einbettungsspalte zu verwalten.
Kontingente
Wenn Sie einen Agent Platform-Endpunkt für die Einbettungserstellung verwenden, indem Sie den Parameter endpoint in der Funktion AI.EMBED angeben, sendet BigQuery Anfragen an Agent Platform, um Einbettungen zu generieren. Diese Anfragen unterliegen den Kontingenten für
Agent Platform. Das Kontingent für Anfragen pro Minute für Ihr Einbettungsmodell wirkt sich direkt auf den Durchsatz von Hintergrundjobs zur Einbettungserstellung aus. Wenn die Einbettungserstellung langsam ist, fordern Sie ein
höheres Kontingentlimit für Agent Platform an. Folgen Sie dazu der Anleitung unter
Höheres Kontingent anfordern. Wenn Sie den Parameter model in der Funktion AI.EMBED angeben, werden Einbettungen in BigQuery generiert und es werden keine Anfragen an Agent Platform gesendet. Daher gelten keine Agent Platform-Kontingente.
Fehlerbehebung
Die generierte Einbettungsspalte enthält zwei Felder: result und status.
Wenn ein Fehler auftritt, wenn BigQuery versucht, eine Einbettung für eine bestimmte Zeile in Ihrer Tabelle zu generieren, ist das Feld result NULL und das Feld status beschreibt den Fehler. Wenn die Quellspalte beispielsweise NULL
ist, ist die result-Einbettung ebenfalls NULL und der Status ist
NULL value is not supported for embedding generation.
Ein schwerwiegenderer Fehler kann die Einbettungserstellung zum Stillstand bringen. In diesem Fall können Sie
die async_generation_status Spalte in der
INFORMATION_SCHEMA.COLUMNS Ansicht
abfragen, um den blockierenden Fehler zu identifizieren.
Blockierende Fehler können Folgendes umfassen:
- Fehler „Berechtigung verweigert“
- Fehler des Typs „Nicht gefunden“
- Fehler des Typs „Nicht unterstützter Endpunkt für Einbettungsmodell“
- Fehler des Typs „Vertex AI API nicht aktiviert“
Sobald der nächste Job zur Einbettungserstellung erfolgreich abgeschlossen wurde, wird die Spalte async_generation_status gelöscht.
Die folgende Abfrage zeigt, wie Sie nach blockierenden Fehlern suchen:
SELECT
column_name,
async_generation_status
FROM
mydataset.INFORMATION_SCHEMA.COLUMNS
WHERE
table_name = 'images';
Wenn die Spalte image_embedding einen blockierenden Fehler aufweist, sieht das Ergebnis in etwa so aus:
[
{
"column_name": "image_embedding",
"async_generation_status": {
"blocking_error": {
"message": "<service_account> does not have the permission to access resources used by AI.EMBED. Please follow https://cloud.google.com/bigquery/docs/permissions-for-ai-functions to set up permissions.",
...
}
}
}
]
Sie können auch die
INFORMATION_SCHEMA.JOBS Ansicht
für den Hintergrundjob abfragen und die Informationen im error_result Feld ansehen.
Die Job-ID eines Hintergrundjobs zur Einbettungserstellung hat das Präfix gc_. Die folgende Abfrage extrahiert beispielsweise alle Hintergrundjobs, deren Fehlerergebnis nicht NULL ist:
SELECT * FROM `region-REGION.INFORMATION_SCHEMA.JOBS` j
WHERE EXISTS (
SELECT 1
FROM unnest(j.referenced_tables) t
WHERE
j.project_id = 'PROJECT_ID'
AND t.dataset_id = 'DATASET_ID'
AND t.table_id = 'TABLE'
)
AND starts_with(job_id, 'gc')
AND error_result IS NOT NULL
ORDER BY j.creation_time DESC;
Kosten verfolgen
Die Kosten für die automatische Einbettungserstellung lassen sich in die folgenden Kategorien unterteilen.
Kosten für BigQuery-Hintergrund-DML
Generierte Einbettungen werden mit Hintergrund-DML-Jobs in Ihre Tabelle geschrieben. Standardmäßig verwendet BigQuery On-Demand-Slots, um diese Jobs zu verarbeiten. Das Projekt der Tabelle wird gemäß dem On-Demand-Abrechnungsmodell für DML abgerechnet.
Alternativ können Sie
eine Reservierung erstellen
und job_type auf BACKGROUND festlegen, um eine vorhersehbare und konsistente Leistung zu gewährleisten. Wenn eine Hintergrundreservierung vorhanden ist, verwendet BigQuery diese, um die Hintergrund-DML-Jobs auszuführen. Die Hintergrundreservierung wird für die Slotzeitnutzung durch die Hintergrund-DML-Jobs in Rechnung gestellt.
Kosten für die Gemini Enterprise Agent Platform
Bei der automatischen Einbettungserstellung werden Anfragen an die Gemini Enterprise Agent Platform gesendet, wodurch Kosten entstehen können. So verfolgen Sie die Kosten für die Agent Platform, die durch Hintergrundjobs zur Einbettungserstellung entstehen:
- Rufen Sie Ihre Abrechnungsberichte in Cloud Billing auf.
Verwenden Sie Filter, um die Ergebnisse zu verfeinern.
Wählen Sie für Dienste Vertex AI aus.
Wenn Sie die Kosten für einen bestimmten Job sehen möchten, filtern Sie nach Label.
Legen Sie den Schlüssel auf
bigquery_ml_jobund den Wert auf die Job-ID des Einbettungsjobs fest. Alle Hintergrundjobs zur Einbettungserstellung haben das Präfixgc_.
Es kann bis zu 24 Stunden dauern, bis einige Kosten in Cloud Billing angezeigt werden.
Beschränkungen
- Jede Tabelle unterstützt maximal eine automatisch generierte Einbettungsspalte.
- Gleichzeitige DML-Vorgänge können zu Verzögerungen und vorübergehenden Fehlern bei der Einbettungserstellung führen. Für eine bessere Leistung und zur Reduzierung der Kosten empfehlen wir, Daten in Batches einzufügen und häufige DML-Aktualisierungen zu vermeiden.
- Wenn Sie die Legacy-Streaming-API zum Aufnehmen von Daten verwenden, kann es zu Verzögerungen kommen, bevor die Einbettung serstellung beginnt.
- Bei Verwendung der BigQuery Storage Write API, können Hintergrundjobs zur Einbettungserstellung fehlschlagen, wenn gleichzeitig ein Streaming-Schreibjob ausgeführt wird. In diesem Fall werden das Agent Platform-Kontingent und die Kosten für Hintergrund-DML verschwendet. Die Verwendung der Storage Write API führt auch zu gleichzeitigen Einbettungserstellungsjobs für die Tabelle. Dies wird jedoch von BigQuery verarbeitet und es werden keine Agent Platform-Kontingente oder Kosten für Hintergrund-DML verschwendet.
- Für einen höheren Durchsatz auf Remote-Endpunkten der Agent Platform empfehlen wir die Verwendung von Texteinbettungsmodellen anstelle von Gemini-Modellen. Weitere Informationen finden Sie unter Kontingente.
- Es gibt keinen Hinweis darauf, dass eine Spalte automatisch generiert wird, wenn Sie das Schema einer Tabelle über die Google Cloud Console
oder das
ddlFeld derINFORMATION_SCHEMA.TABLESAnsicht aufrufen. - Wenn Sie eine Kopie, einen Klon oder einen Snapshot einer Tabelle mit einer generierten Einbettungsspalte erstellen, werden nur die Daten kopiert. Die Konfiguration für die Generierung gilt nicht für die neue Tabelle und Aktualisierungen der Quellspalte der neuen Tabelle führen nicht zu neuen Einbettungen.
- Wenn Sie eine Tabelle, für die die automatische Einbettungserstellung aktiviert war, aus einem Snapshot wiederherstellen, wird die Konfiguration für die Einbettungserstellung nicht wiederhergestellt.
- Bei Verwendung der BigQuery API können Sie die Eigenschaft
generatedColumnnur beim Erstellen einer neuen Spalte angeben. Sie können die EigenschaftgeneratedColumnfür eine vorhandene Spalte nicht hinzufügen, aktualisieren oder entfernen. Nachdem Sie die generierte Einbettungsspalte erstellt haben, gelten die folgenden Einschränkungen:
- Sie können die Quellspalte nicht löschen oder umbenennen, aber Sie können die generierte Einbettungsspalte weiterhin löschen oder umbenennen. Wenn Sie die Einbettungsspalte löschen, können Sie die Quellspalte löschen oder umbenennen.
- Sie können den Datentyp der Quellspalte oder der generierten Einbettungsspalte nicht ändern.
Sie können keine Standardwerte für automatisch generierte Einbettungsspalten angeben.
Sie können mit den folgenden Methoden nicht direkt in generierte Einbettungsspalten schreiben:
- DML
- Streaming-Schreibvorgänge
bq insertbq loadbq copy -a
Tabellen mit generierten Einbettungsspalten unterstützen keine Sicherheitsrichtlinien auf Spaltenebene wie Richtlinien-Tags.
Wenn Sie eine Suchfunktion wie
VECTOR_SEARCHoderAI.SEARCH, aufrufen, werden Zeilen mit fehlenden Einbettungen in der Basistabelle bei der Suche übersprungen.Sie können keinen partitionierten Vektorindex für eine Tabelle erstellen, für die die automatische Einbettungserstellung aktiviert ist.
Wenn Sie einen Vektorindex für die automatisch generierte Einbettungsspalte erstellen, beginnt das Indextraining, nachdem für mindestens 80% der Zeilen Einbettungen generiert wurden. So prüfen Sie den Fortschritt der Einbettungserstellung:
Fragen Sie den Prozentsatz der Einbettungen in Ihrer Tabelle ab, die generiert wurden:
SELECT COUNTIF(description_embedding IS NOT NULL AND description_embedding.status = '') * 100.0 / COUNT(*) AS percent FROM PROJECT_ID.DATASET_ID.TABLE;
Nächste Schritte
- Weitere Informationen zum Erstellen und Verwalten von Vektorindexen.
- Siehe die Einführung in die Vektorsuche.