Autonome Generierung von Einbettungen
In diesem Dokument wird beschrieben, wie Sie die autonome 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 die Einbettungsspalte für diese Daten automatisch mithilfe eines Einbettungsmodells der Agent Platform.
Das ist hilfreich, wenn Sie möchten, dass BigQuery Ihre Einbettungen verwaltet, 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 autonomen Generierung von Einbettungen können Sie den Prozess der Erstellung, Wartung 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 autonomer Einbettungsgenerierung 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
Damit das automatische Generieren von Einbettungen für eine Tabelle möglich ist, benötigen Sie die erforderlichen Berechtigungen und die entsprechende 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, damit Sie die nötigen Berechtigungen zum Aktivieren der autonomen Einbettungsgenerierung haben:
-
So verwenden Sie eine Verbindungsressource:
BigQuery Connections User (
roles/bigquery.connectionUser) für die Verbindung -
Tabelle erstellen oder ändern:
BigQuery-Dateneditor (
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 User (
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 einem Dienstkonto Berechtigungen erteilen
Wenn Sie die autonome Einbettungserstellung für eine Tabelle aktivieren möchten, müssen Sie eine Cloud-Ressourcenverbindung erstellen.
Weisen Sie dem Dienstkonto, das beim Erstellen der Verbindung erstellt wurde, die Rolle „Agent Platform User“ (roles/aiplatform.user) zu.
Automatisch generierte Einbettungsspalte erstellen
Sie können entweder eine automatisch generierte Spalte für Einbettungen in einer neuen Tabelle erstellen oder einer vorhandenen Tabelle hinzufügen.
Tabelle mit einer automatisch generierten Einbettungsspalte erstellen
Sie können die autonome Einbettungsgenerierung 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. So erstellen Sie die Tabelle:
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 autonome Generierung von Einbettungen erstellt werden soll.COLUMN, ...: Alle Spalten, die Ihre Tabelle neben der Spalte enthalten soll, die automatisch eingebettet werden soll.SOURCE_COL: Der Name derSTRING- oderObjectRef-Spalte, die automatisch eingebettet werden soll.EMBEDDING_COL_NAME: Der Name der automatisch generierten Spalte für Einbettungen.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 User zuweisen.ENDPOINT: einSTRING-Wert, der einen unterstützten Agent Platform-Endpunkt für das Texteinbettungsmodell angibt, der für das Texteinbettungsmodell verwendet werden soll. 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-300m-Modell. 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 zum Erstellen der Einbettungen verwendet. Es werden keine Daten an die Agent Platform gesendet und es fallen keine Gebühren in der Agent Platform an.
Klicken Sie auf Ausführen.
Informationen zum Ausführen von Abfragen finden Sie unter Interaktive Abfrage ausführen.
bq
Wenn Sie eine Tabelle mit einer automatisch generierten Einbettungsspalte mit dem bq-Befehlszeilentool 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, mit dem eine Spalte für Einbettungen auf Grundlage einer Quellspalte erstellt wird. In diesem Beispiel wird ein Agent Platform-Endpunkt für die Generierung von Einbettungen 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 ein integriertes Modell anstelle eines Agent Platform-Endpunkts verwenden, verwenden Sie für
generationExpressioneine ähnliche Syntax wie die folgende:"AI.EMBED(SOURCE_COL, model => 'MODEL')"Informationen zu den zu verwendenden Werten finden Sie auf dem Tab SQL in den Beschreibungen für
SOURCE_COL,EMBEDDING_COL_NAME,CONNECTION_ID,ENDPOINTundMODEL.Speichern Sie das Schema in einer Datei, z. B.
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 autonome Einbettungsgenerierung erstellt werden soll.COLUMN, ...: Alle Spalten, die Ihre Tabelle zusätzlich zu der Spalte enthalten soll, die automatisch eingebettet werden soll.STRING_COL: Der Name der SpalteSTRING, die automatisch eingebettet werden soll.EMBEDDING_COL_NAME: Der Name der automatisch generierten Spalte für Einbettungen.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 User zuweisen.ENDPOINT: EinSTRING-Wert, der einen unterstützten Endpunkt für das Texteinbettungsmodell der Agent-Plattform angibt, der für das Texteinbettungsmodell verwendet werden soll. 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-300m-Modell. 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 zum Erstellen der Einbettungen verwendet. Es werden keine Daten an die Agent Platform gesendet und es fallen keine Gebühren in der Agent Platform an.
Einer vorhandenen Tabelle eine automatisch generierte Spalte mit Einbettungen hinzufügen
Sie können einer vorhandenen Tabelle auch eine automatisch generierte Spalte für Einbettungen hinzufügen, indem Sie eine ALTER TABLE ADD COLUMN-Anweisung verwenden.
SQL
Verwenden Sie eine ALTER TABLE ADD COLUMN-Anweisung, um einer vorhandenen Tabelle eine automatisch generierte Spalte mit Einbettungen hinzuzufügen. So fügen Sie die Spalte hinzu:
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 Spalte für Einbettungen hinzufügen möchten.EMBEDDING_COL_NAME: Der Name der automatisch generierten Spalte für Einbettungen.SOURCE_COL: Der Name derSTRING- oderObjectRef-Spalte, die automatisch eingebettet werden soll.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-Endpunkt für das Texteinbettungsmodell angibt, der für das Texteinbettungsmodell verwendet werden soll.MODEL(Vorschau): einSTRING-Wert, der ein integriertes Texteinbettungsmodell angibt. Der einzige unterstützte Wert ist dasembeddinggemma-300m-Modell. 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 zum Erstellen der Einbettungen verwendet. Es werden keine Daten an die Agent Platform gesendet und es fallen keine Gebühren in der 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 Spalte für Einbettungen hinzufügen möchten, verwenden Sie den Befehl bq update mit einer JSON-Schemadatei, in der das aktualisierte Tabellenschema definiert ist:
- 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 Spalte für Einbettungen hinzuzufügen. Im folgenden Beispiel sehen Sie die Definition für eine Einbettungsspalte, die auf einer Quellspalte basiert. In diesem Beispiel wird ein Agent Platform-Endpunkt für die Generierung von Einbettungen 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 ein integriertes Modell anstelle eines Agent Platform-Endpunkts verwenden, verwenden Sie für
generationExpressioneine ähnliche Syntax wie die folgende:"AI.EMBED(SOURCE_COL, model => 'MODEL')"Informationen zu den zu verwendenden Werten finden Sie auf dem Tab SQL in den Beschreibungen für
SOURCE_COL,EMBEDDING_COL_NAME,CONNECTION_ID,ENDPOINTundMODEL.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 Spalte für Einbettungen hinzufügen möchten.
Der Job zur Generierung von Hintergrund-Einbettungen wird kurz nach dem Erstellen oder Ändern der Tabelle oder nach dem Aktualisieren von Daten in der Quellspalte gestartet.
Um den Fortschritt der Einbettungsgenerierung zu verfolgen, 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 für die Spalte STRUCT erstellen, 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 autonomer Einbettungserstellung, in der Ihre Produktinformationen gespeichert werden. Die automatisch generierte Spalte heißt description_embedding und basiert auf der Spalte description.
# 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 Funktion AI.SEARCH 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 |
+------------------+----------------------------------------------+----------------------*/
Generierte Einbettungen aus ObjectRef Spalten
Sie können einer Tabelle Spalten mit generierten Einbettungen für eine ObjectRef-Spalte hinzufügen.
Im folgenden Beispiel wird gezeigt, wie Sie eine Tabelle mit einer Spalte vom Typ ObjectRef 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 Spalten für Einbettungen abrufen
Wenn Sie prüfen möchten, ob eine Spalte eine automatisch generierte Spalte für Einbettungen ist, fragen Sie die INFORMATION_SCHEMA.COLUMNS-Ansicht ab.
Die folgende Abfrage enthält Informationen zu allen automatisch generierten Spalten für Einbettungen:
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 für die Spalte generiert werden.
Eigene Reservierung verwenden
Standardmäßig verwendet BigQuery On-Demand-Slots für die Verarbeitung, die zum Verwalten der generierten Spalte mit Einbettungen 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, um stattdessen die generierte Spalte für Einbettungen zu verwalten.
Kontingente
Wenn Sie einen Agent Platform-Endpunkt zum Generieren von Einbettungen verwenden, indem Sie den Parameter endpoint in der Funktion AI.EMBED angeben, sendet BigQuery Anfragen an Agent Platform, um Einbettungen zu generieren. Für diese Anfragen gelten die Kontingente für die 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 Generierung von Einbettungen langsam ist, können Sie ein höheres Kontingentlimit für die Agent Platform anfordern. Folgen Sie dazu der Anleitung unter Höheres Kontingent anfordern. Wenn Sie den Parameter model in der Funktion AI.EMBED angeben, werden die Einbettungen in BigQuery generiert und es werden keine Anfragen an die Agent Platform gesendet. Daher gelten keine Kontingente für die Agent Platform.
Fehlerbehebung
Die generierte Einbettungsspalte enthält zwei Felder: result und status.
Wenn beim Versuch von BigQuery, ein Embedding für eine bestimmte Zeile in Ihrer Tabelle zu generieren, ein Fehler auftritt, ist das Feld result auf NULL gesetzt und das Feld status beschreibt den Fehler. Wenn die Quellspalte beispielsweise NULL ist, ist die result-Einbettung ebenfalls NULL und der Status NULL value is not supported for embedding generation.
Ein schwerwiegenderer Fehler kann die Generierung von Einbettungen zum Stillstand bringen. In diesem Fall können Sie die Spalte async_generation_status in der INFORMATION_SCHEMA.COLUMNS-Ansicht abfragen, um den blockierenden Fehler zu ermitteln.
Blockierungsfehler können folgende Ursachen haben:
- Fehler „Berechtigung verweigert“
- Fehler vom Typ „Nicht gefunden“
- Fehler bei nicht unterstützten Endpunkten für Einbettungsmodelle
- Fehler „Vertex AI API nicht aktiviert“
Sobald der nächste Job zur Generierung von Einbettungen erfolgreich abgeschlossen ist, wird die Spalte async_generation_status geleert.
Mit der folgenden Abfrage können Sie nach Blockierungsfehlern suchen:
SELECT
column_name,
async_generation_status
FROM
mydataset.INFORMATION_SCHEMA.COLUMNS
WHERE
table_name = 'images';
Wenn in der Spalte image_embedding ein schwerwiegender Fehler vorliegt, 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 Ansicht INFORMATION_SCHEMA.JOBS für den Hintergrundjob abfragen und sich die Informationen im Feld error_result ansehen.
Die Job-ID eines Hintergrund-Embedding-Jobs hat das Präfix gc_. Mit der folgenden Abfrage werden beispielsweise alle Hintergrundjobs extrahiert, 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 im Blick behalten
Die Kosten für die autonome Generierung von Einbettungen fallen in die folgenden Kategorien.
Kosten für DML-Vorgänge im Hintergrund in BigQuery
Generierte Einbettungen werden mithilfe von DML-Hintergrundjobs 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 sie zum Ausführen der DML-Hintergrundjobs. Die Hintergrundreservierung wird für die Slot-Zeitnutzung durch die Hintergrund-DML-Jobs in Rechnung gestellt.
Wenn Sie die Werte total_slot_ms und total_bytes_billed für DML-Hintergrundjobs für eine Tabelle erfassen möchten, fragen Sie die Ansicht INFORMATION_SCHEMA.JOBS für Jobs mit dem job_id-Präfix gc_ ab:
SELECT
job_id,
creation_time,
reservation_id,
total_slot_ms,
total_bytes_processed,
total_bytes_billed
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_')
ORDER BY
j.creation_time DESC;
Ersetzen Sie Folgendes:
REGION: Die Dataset-Region, die Ihre Tabelle enthält, z. B.us.PROJECT_ID: Die ID des Projekts, das Ihre Tabelle enthält.DATASET_ID: der Name des Datasets, das Ihre Tabelle enthält.TABLE: der Name der Tabelle, für die die autonome Generierung von Einbettungen aktiviert ist.
Wenn Sie das integrierte Modell embeddinggemma-300m mit dem Parameter model in der Funktion AI.EMBED angeben, generiert BigQuery die Einbettungen auch direkt in diesen Hintergrund-DML-Jobs mit BigQuery-Slots. Es werden keine Anfragen an die Agent Platform gesendet und es fallen keine Gebühren für die Agent Platform an. Weitere Informationen finden Sie unter Modell auswählen.
Kosten für die Gemini Enterprise Agent Platform
Wenn Sie ein Modell der Gemini Enterprise Agent Platform mit dem Parameter endpoint in der Funktion AI.EMBED angeben, werden Anfragen für die autonome Einbettungserstellung an die Gemini Enterprise Agent Platform gesendet. Dies kann Kosten verursachen. So verfolgen Sie die Kosten für die Agent Platform, die durch Hintergrund-Embedding-Jobs anfallen:
- Abrechnungsberichte in Cloud Billing ansehen
Verwenden Sie Filter, um die Ergebnisse einzugrenzen.
Wählen Sie für Dienste Vertex AI aus.
Wenn Sie die Gebühren 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 Embedding-Jobs fest. Alle Hintergrundjobs zum Einbetten haben das Präfixgc_.
Es kann bis zu 24 Stunden dauern, bis einige Belastungen in Cloud Billing angezeigt werden.
Beschränkungen
- Jede Tabelle unterstützt höchstens eine automatisch generierte Spalte für Einbettungen.
- 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 Senkung der Kosten empfehlen wir, Daten in Batches einzufügen und häufige DML-Aktualisierungen zu vermeiden.
- Wenn Sie die alte Streaming-API zum Erfassen von Daten verwenden, kann es zu Verzögerungen kommen, bevor die Einbettungsgenerierung beginnt.
- Wenn Sie die BigQuery Storage Write API (gRPC) verwenden, können Hintergrundjobs zur Einbettungserstellung fehlschlagen, wenn gleichzeitig ein Streaming-Schreibjob ausgeführt wird. In diesem Fall werden das Kontingent der Agent Platform und die Kosten für die Hintergrund-DML verschwendet. Die Verwendung der Storage Write API (gRPC) führt auch zu gleichzeitigen Jobs zur Generierung von Einbettungen 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 an Remote-Endpunkten der Agent Platform empfehlen wir, Modelle zur Texteinbettung anstelle von Gemini-Modellen zu verwenden. 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 Feld
ddlder AnsichtINFORMATION_SCHEMA.TABLESaufrufen. - Wenn Sie eine Kopie, einen Klon oder einen Snapshot einer Tabelle mit einer generierten Spalte für Einbettungen 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 autonome Einbettungsgenerierung aktiviert war, aus einem Snapshot wiederherstellen, wird die Konfiguration für die Einbettungsgenerierung nicht wiederhergestellt.
- Wenn Sie die BigQuery API verwenden, können Sie das Attribut
generatedColumnnur beim Erstellen einer neuen Spalte angeben. Sie können diegeneratedColumn-Property einer vorhandenen Spalte nicht hinzufügen, aktualisieren oder entfernen. Nachdem Sie die generierte Spalte für Einbettungen erstellt haben, gelten die folgenden Einschränkungen:
- Sie können die Quellspalte nicht löschen oder umbenennen, aber die generierte Einbettungsspalte. Wenn Sie die Spalte mit den Einbettungen entfernen, können Sie die Quellspalte entfernen oder umbenennen.
- Sie können den Datentyp der Quellspalte oder der generierten Spalte mit Einbettungen nicht ändern.
Für automatisch generierte Einbettungsspalten können keine Standardwerte angegeben werden.
Sie können mit diesen Methoden nicht direkt in generierte Einbettungsspalten schreiben:
- DML
- Streaming-Schreibvorgänge
bq insertbq loadbq copy -a
Tabellen mit generierten Spalten für Einbettungen unterstützen keine Sicherheitsrichtlinien auf Spaltenebene, z. B. Richtlinien-Tags.
Wenn Sie eine Suchfunktion wie
VECTOR_SEARCHoderAI.SEARCHaufrufen, 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 autonome Einbettungsgenerierung aktiviert ist.
Wenn Sie einen Vektorindex für die automatisch generierte Spalte mit Einbettungen erstellen, beginnt das Indextraining, nachdem für mindestens 80% der Zeilen Einbettungen generiert wurden. So können Sie den Fortschritt der Einbettungsgenerierung prüfen:
So 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
- Weitere Informationen finden Sie unter Einführung in die Vektorsuche.