Texteinbettungen mit der Funktion ML.GENERATE_EMBEDDING generieren
In dieser Anleitung wird gezeigt, wie Sie ein BigQuery ML-Remote-Modell erstellen, das auf ein Einbettungsmodell verweist. Anschließend verwenden Sie dieses Modell mit der ML.GENERATE_EMBEDDING
-Funktion, um Texteinbettungen über Daten aus einer BigQuery-Standardtabelle zu erstellen.
Die folgenden Typen von Remote-Modellen werden unterstützt:
- Remote-Modelle über Vertex AI-Einbettungsmodelle.
- Remotemodelle über unterstützte offene Modelle (Vorschau).
Erforderliche Rollen
Zum Erstellen eines Remote-Modells und Verwenden der Funktion ML.GENERATE_EMBEDDING
benötigen Sie die folgenden IAM-Rollen (Identity and Access Management):
- BigQuery-Datasets, -Tabellen und -Modelle erstellen und verwenden: BigQuery-Dateneditor (
roles/bigquery.dataEditor
) für Ihr Projekt. BigQuery-Verbindungen erstellen, delegieren und verwenden: BigQuery-Verbindungsadministrator (
roles/bigquery.connectionsAdmin
) für Ihr Projekt.Wenn Sie keine Standardverbindung konfiguriert haben, können Sie eine erstellen und festlegen, wenn Sie die
CREATE MODEL
-Anweisung ausführen. Dazu benötigen Sie die Rolle „BigQuery Admin“ (roles/bigquery.admin
) für Ihr Projekt. Weitere Informationen finden Sie unter Standardverbindung konfigurieren.Gewähren Sie dem Dienstkonto der Verbindung die Berechtigungen „Projekt-IAM-Administrator“ (
roles/resourcemanager.projectIamAdmin
) für das Projekt, das den Vertex AI-Endpunkt enthält. Dies ist das aktuelle Projekt für Remote-Modelle, die Sie erstellen, indem Sie den Modellnamen als Endpunkt angeben. Dies ist das Projekt, das in der URL für Remote-Modelle angegeben ist, die Sie durch Angabe einer URL als Endpunkt erstellen.BigQuery-Jobs erstellen: Rolle „BigQuery Job User“ (
roles/bigquery.jobUser
) für Ihr Projekt.
Diese vordefinierten Rollen enthalten die Berechtigungen, die zum Ausführen der Aufgaben in diesem Dokument erforderlich sind. Erweitern Sie den Abschnitt Erforderliche Berechtigungen, um die erforderlichen Berechtigungen anzuzeigen:
Erforderliche Berechtigungen
- Dataset erstellen:
bigquery.datasets.create
- Verbindung erstellen, delegieren und verwenden:
bigquery.connections.*
- Dienstkontoberechtigungen festlegen:
resourcemanager.projects.getIamPolicy
undresourcemanager.projects.setIamPolicy
- Modell erstellen und Inferenz ausführen:
bigquery.jobs.create
bigquery.models.create
bigquery.models.getData
bigquery.models.updateData
bigquery.models.updateMetadata
- Tabellendaten abfragen:
bigquery.tables.getData
Sie können diese Berechtigungen auch mit benutzerdefinierten Rollen oder anderen vordefinierten Rollen erhalten.
Hinweise
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the BigQuery, BigQuery Connection, and Vertex AI APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles.
Dataset erstellen
Erstellen Sie ein BigQuery-Dataset, das Ihre Ressourcen enthält:
Console
Öffnen Sie in der Google Cloud Console die Seite BigQuery.
Klicken Sie im linken Bereich auf
Explorer:Wenn Sie den linken Bereich nicht sehen, klicken Sie auf
Linken Bereich maximieren, um ihn zu öffnen.Klicken Sie im Bereich Explorer auf den Namen Ihres Projekts.
Klicken Sie auf
Aktionen ansehen > Dataset erstellen.Führen Sie auf der Seite Dataset erstellen die folgenden Schritte aus:
Geben Sie für Dataset-ID einen Namen für das Dataset ein.
Wählen Sie als Standorttyp die Option Region oder Mehrere Regionen aus.
- Wenn Sie Region ausgewählt haben, wählen Sie einen Standort aus der Liste Region aus.
- Wenn Sie Mehrere Regionen ausgewählt haben, wählen Sie in der Liste Mehrere Regionen die Option USA oder Europa aus.
Klicken Sie auf Dataset erstellen.
bq
Wenn Sie ein neues Dataset erstellen möchten, verwenden Sie den Befehl
bq mk
mit dem Flag--location
:bq --location=LOCATION mk -d DATASET_ID
Ersetzen Sie Folgendes:
LOCATION
: Speicherort des Datasets.DATASET_ID
: der Name des zu erstellenden Datasets.
Prüfen Sie, ob das Dataset erstellt wurde:
bq ls
Verbindung herstellen
Sie können diesen Schritt überspringen, wenn Sie entweder eine Standardverbindung konfiguriert haben oder die Rolle „BigQuery-Administrator“ haben.
Erstellen Sie eine Cloud-Ressourcenverbindung, die vom Remote-Modell verwendet werden soll, und rufen Sie das Dienstkonto der Verbindung ab. Erstellen Sie die Verbindung am selben Speicherort wie das Dataset, das Sie im vorherigen Schritt erstellt haben.
Wählen Sie eine der folgenden Optionen aus:
Console
Rufen Sie die Seite BigQuery auf.
Klicken Sie im Bereich Explorer auf
Daten hinzufügen:Das Dialogfeld Daten hinzufügen wird geöffnet.
Wählen Sie im Bereich Filtern nach im Abschnitt Datenquellentyp die Option Geschäftsanwendungen aus.
Alternativ können Sie im Feld Nach Datenquellen suchen
Vertex AI
eingeben.Klicken Sie im Abschnitt Empfohlene Datenquellen auf Vertex AI.
Klicken Sie auf die Lösungsübersichtskarte Vertex AI-Modelle: BigQuery Federation.
Wählen Sie in der Liste Verbindungstyp die Option Vertex AI-Remote-Modelle, Remote-Funktionen, BigLake und Cloud Spanner (Cloud-Ressource) aus.
Geben Sie im Feld Verbindungs-ID einen Namen für die Verbindung ein.
Klicken Sie auf Verbindung erstellen.
Klicken Sie auf Zur Verbindung.
Kopieren Sie im Bereich Verbindungsinformationen die Dienstkonto-ID zur Verwendung in einem späteren Schritt.
bq
Erstellen Sie in einer Befehlszeilenumgebung eine Verbindung:
bq mk --connection --location=REGION --project_id=PROJECT_ID \ --connection_type=CLOUD_RESOURCE CONNECTION_ID
Der Parameter
--project_id
überschreibt das Standardprojekt.Ersetzen Sie dabei Folgendes:
REGION
: Ihre VerbindungsregionPROJECT_ID
: Ihre Google Cloud Projekt-IDCONNECTION_ID
: eine ID für Ihre Verbindung
Wenn Sie eine Verbindungsressource herstellen, erstellt BigQuery ein eindeutiges Systemdienstkonto und ordnet es der Verbindung zu.
Fehlerbehebung:Wird der folgende Verbindungsfehler angezeigt, aktualisieren Sie das Google Cloud SDK:
Flags parsing error: flag --connection_type=CLOUD_RESOURCE: value should be one of...
Rufen Sie die Dienstkonto-ID ab und kopieren Sie sie zur Verwendung in einem späteren Schritt:
bq show --connection PROJECT_ID.REGION.CONNECTION_ID
Die Ausgabe sieht in etwa so aus:
name properties 1234.REGION.CONNECTION_ID {"serviceAccountId": "connection-1234-9u56h9@gcp-sa-bigquery-condel.iam.gserviceaccount.com"}
Terraform
Verwenden Sie die Ressource google_bigquery_connection
:
Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
Im folgenden Beispiel wird eine Cloud-Ressourcenverbindung mit dem Namen my_cloud_resource_connection
in der Region US
erstellt:
Führen Sie die Schritte in den folgenden Abschnitten aus, um Ihre Terraform-Konfiguration auf ein Google Cloud -Projekt anzuwenden.
Cloud Shell vorbereiten
- Rufen Sie Cloud Shell auf.
-
Legen Sie das Standardprojekt Google Cloud fest, auf das Sie Ihre Terraform-Konfigurationen anwenden möchten.
Sie müssen diesen Befehl nur einmal pro Projekt und in jedem beliebigen Verzeichnis ausführen.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Umgebungsvariablen werden überschrieben, wenn Sie in der Terraform-Konfigurationsdatei explizite Werte festlegen.
Verzeichnis vorbereiten
Jede Terraform-Konfigurationsdatei muss ein eigenes Verzeichnis haben (auch als Stammmodul bezeichnet).
-
Erstellen Sie in Cloud Shell ein Verzeichnis und eine neue Datei in diesem Verzeichnis. Der Dateiname muss die Erweiterung
.tf
haben, z. B.main.tf
. In dieser Anleitung wird die Datei alsmain.tf
bezeichnet.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
Wenn Sie einer Anleitung folgen, können Sie den Beispielcode in jedem Abschnitt oder Schritt kopieren.
Kopieren Sie den Beispielcode in das neu erstellte
main.tf
.Kopieren Sie optional den Code aus GitHub. Dies wird empfohlen, wenn das Terraform-Snippet Teil einer End-to-End-Lösung ist.
- Prüfen und ändern Sie die Beispielparameter, die auf Ihre Umgebung angewendet werden sollen.
- Speichern Sie die Änderungen.
-
Initialisieren Sie Terraform. Dies ist nur einmal für jedes Verzeichnis erforderlich.
terraform init
Fügen Sie optional die Option
-upgrade
ein, um die neueste Google-Anbieterversion zu verwenden:terraform init -upgrade
Änderungen anwenden
-
Prüfen Sie die Konfiguration und prüfen Sie, ob die Ressourcen, die Terraform erstellen oder aktualisieren wird, Ihren Erwartungen entsprechen:
terraform plan
Korrigieren Sie die Konfiguration nach Bedarf.
-
Wenden Sie die Terraform-Konfiguration an. Führen Sie dazu den folgenden Befehl aus und geben Sie
yes
an der Eingabeaufforderung ein:terraform apply
Warten Sie, bis Terraform die Meldung „Apply complete“ anzeigt.
- Öffnen Sie Ihr Google Cloud Projekt, um die Ergebnisse aufzurufen. Rufen Sie in der Google Cloud Console Ihre Ressourcen in der Benutzeroberfläche auf, um sicherzustellen, dass Terraform sie erstellt oder aktualisiert hat.
Dem Dienstkonto der Verbindung zum Remote-Modell eine Rolle zuweisen
Sie müssen dem Dienstkonto der Verbindung die Rolle „Vertex AI-Nutzer“ zuweisen.
Wenn Sie den Endpunkt beim Erstellen des Remote-Modells als URL angeben möchten, z. B. endpoint = 'https://us-central1-aiplatform.googleapis.com/v1/projects/myproject/locations/us-central1/publishers/google/models/text-embedding-005'
, gewähren Sie diese Rolle in demselben Projekt, das Sie in der URL angeben.
Wenn Sie beim Erstellen des Remote-Modells den Endpunkt mit dem Modellnamen angeben möchten, z. B. endpoint = 'text-embedding-005'
, gewähren Sie diese Rolle in demselben Projekt, in dem Sie das Remote-Modell erstellen möchten.
Die Zuweisung der Rolle in einem anderen Projekt führt zu dem Fehler bqcx-1234567890-wxyz@gcp-sa-bigquery-condel.iam.gserviceaccount.com does not have the permission to access resource
.
So weisen Sie die Rolle zu:
Console
Zur Seite IAM & Verwaltung.
Klicken Sie auf
Zugriff erlauben.Das Dialogfeld Principals hinzufügen wird geöffnet.
Geben Sie im Feld Neue Hauptkonten die Dienstkonto-ID ein, die Sie zuvor kopiert haben.
Wählen Sie im Feld Rolle auswählen die Option Vertex AI und dann Vertex AI-Nutzer aus.
Klicken Sie auf Speichern.
gcloud
Führen Sie den Befehl gcloud projects add-iam-policy-binding
aus:
gcloud projects add-iam-policy-binding 'PROJECT_NUMBER' --member='serviceAccount:MEMBER' --role='roles/aiplatform.user' --condition=None
Ersetzen Sie Folgendes:
PROJECT_NUMBER
: Ihre ProjektnummerMEMBER
: Die Dienstkonto-ID, die Sie zuvor kopiert haben
Bereitstellungsmethode für offene Modelle auswählen
Wenn Sie ein Remote-Modell für ein unterstütztes offenes Modell erstellen, können Sie das offene Modell automatisch gleichzeitig mit dem Remote-Modell bereitstellen. Geben Sie dazu die Vertex AI Model Garden- oder Hugging Face-Modell-ID in der CREATE MODEL
-Anweisung an.
Alternativ können Sie das offene Modell zuerst manuell bereitstellen und es dann mit dem Remote-Modell verwenden, indem Sie den Modellendpunkt in der CREATE MODEL
-Anweisung angeben. Weitere Informationen finden Sie unter Offene Modelle bereitstellen.
BigQuery ML-Remote-Modell erstellen
Remote-Modell erstellen:
Neue offene Modelle
Öffnen Sie in der Google Cloud Console die Seite BigQuery.
Erstellen Sie mit dem SQL-Editor ein Remote-Modell:
CREATE OR REPLACE MODEL `PROJECT_ID.DATASET_ID.MODEL_NAME` REMOTE WITH CONNECTION {DEFAULT | `PROJECT_ID.REGION.CONNECTION_ID`} OPTIONS ( {HUGGING_FACE_MODEL_ID = 'HUGGING_FACE_MODEL_ID' | MODEL_GARDEN_MODEL_NAME = 'MODEL_GARDEN_MODEL_NAME'} [, HUGGING_FACE_TOKEN = 'HUGGING_FACE_TOKEN' ] [, MACHINE_TYPE = 'MACHINE_TYPE' ] [, MIN_REPLICA_COUNT = MIN_REPLICA_COUNT ] [, MAX_REPLICA_COUNT = MAX_REPLICA_COUNT ] [, RESERVATION_AFFINITY_TYPE = {'NO_RESERVATION' | 'ANY_RESERVATION' | 'SPECIFIC_RESERVATION'} ] [, RESERVATION_AFFINITY_KEY = 'compute.googleapis.com/reservation-name' ] [, RESERVATION_AFFINITY_VALUES = RESERVATION_AFFINITY_VALUES ] [, ENDPOINT_IDLE_TTL = ENDPOINT_IDLE_TTL ] );
Ersetzen Sie Folgendes:
PROJECT_ID
: Ihre Projekt-ID.DATASET_ID
ist die ID des Datasets, das das Modell enthalten soll. Dieses Dataset muss sich am selben Standort wie die von Ihnen verwendete Verbindung befinden.MODEL_NAME
ist der Name des Modells.REGION
ist die Region, die von der Verbindung verwendet wird.CONNECTION_ID
ist die ID Ihrer BigQuery-Verbindung.Sie können diesen Wert abrufen, indem Sie sich die Verbindungsdetails in der Google Cloud Console ansehen und den Wert im letzten Abschnitt der voll qualifizierten Verbindungs-ID kopieren, der unter Verbindungs-ID angezeigt wird. Zum Beispiel,
projects/myproject/locations/connection_location/connections/myconnection
.HUGGING_FACE_MODEL_ID
: einSTRING
-Wert, der die Modell-ID für ein unterstütztes Hugging Face-Modell im Formatprovider_name
/model_name
angibt, z. B.deepseek-ai/DeepSeek-R1
. Sie können die Modell-ID abrufen, indem Sie im Hugging Face Model Hub auf den Modellnamen klicken und dann die Modell-ID oben auf der Modellkarte kopieren.MODEL_GARDEN_MODEL_NAME
: einSTRING
-Wert, der die Modell-ID und Modellversion eines unterstützten Vertex AI Model Garden-Modells im Formatpublishers/publisher
/models/model_name
@model_version
angibt. Zum Beispielpublishers/openai/models/gpt-oss@gpt-oss-120b
. Sie können die Modell-ID abrufen, indem Sie im Vertex AI Model Garden auf die Modellkarte klicken und dann die Modell-ID aus dem Feld Modell-ID kopieren. Sie können die Standardmodellversion abrufen, indem Sie sie aus dem Feld Version auf der Modellkarte kopieren. Wenn Sie andere Modellversionen sehen möchten, die Sie verwenden können, klicken Sie auf Modell bereitstellen und dann auf das Feld Ressourcen-ID.HUGGING_FACE_TOKEN
: einSTRING
-Wert, der das zu verwendende Hugging Face-Nutzerzugriffstoken angibt. Sie können nur dann einen Wert für diese Option angeben, wenn Sie auch einen Wert für die OptionHUGGING_FACE_MODEL_ID
angeben.Das Token muss mindestens die Rolle
read
haben. Tokens mit einem größeren Umfang sind ebenfalls zulässig. Diese Option ist erforderlich, wenn das durch denHUGGING_FACE_MODEL_ID
-Wert identifizierte Modell ein gated oder privates Hugging Face-Modell ist.Für einige eingeschränkte Modelle ist eine ausdrückliche Zustimmung zu den Nutzungsbedingungen erforderlich, bevor der Zugriff gewährt wird. So stimmen Sie diesen Nutzungsbedingungen zu:
- Rufen Sie die Seite des Modells auf der Hugging Face-Website auf.
- Suchen Sie die Nutzungsbedingungen des Modells und lesen Sie sie. Ein Link zur Dienstvereinbarung ist in der Regel auf der Modellkarte zu finden.
- Akzeptieren Sie die Nutzungsbedingungen, wenn Sie auf der Seite dazu aufgefordert werden.
MACHINE_TYPE
: einSTRING
-Wert, der den Maschinentyp angibt, der beim Bereitstellen des Modells in Vertex AI verwendet werden soll. Informationen zu unterstützten Maschinentypen finden Sie unter Maschinentypen. Wenn Sie keinen Wert für die OptionMACHINE_TYPE
angeben, wird der Standardmaschinentyp für das Modell aus dem Vertex AI Model Garden verwendet.MIN_REPLICA_COUNT
: einINT64
-Wert, der die Mindestanzahl der Maschinenreplikate angibt, die beim Bereitstellen des Modells an einem Vertex AI-Endpunkt verwendet werden. Der Dienst erhöht oder verringert die Anzahl der Replikate je nach Inferenzlast am Endpunkt. Die Anzahl der verwendeten Replikate ist nie niedriger als derMIN_REPLICA_COUNT
-Wert und nie höher als derMAX_REPLICA_COUNT
-Wert. DerMIN_REPLICA_COUNT
-Wert muss im Bereich[1, 4096]
liegen. Der Standardwert ist1
.MAX_REPLICA_COUNT
: einINT64
-Wert, der die maximale Anzahl von Maschinenreplikaten angibt, die beim Bereitstellen des Modells an einem Vertex AI-Endpunkt verwendet werden. Der Dienst erhöht oder verringert die Anzahl der Replikate je nach Inferenzlast am Endpunkt. Die Anzahl der verwendeten Replikate ist nie niedriger als derMIN_REPLICA_COUNT
-Wert und nie höher als derMAX_REPLICA_COUNT
-Wert. DerMAX_REPLICA_COUNT
-Wert muss im Bereich[1, 4096]
liegen. Der Standardwert ist derMIN_REPLICA_COUNT
-Wert.RESERVATION_AFFINITY_TYPE
: Gibt an, ob das bereitgestellte Modell Compute Engine-Reservierungen verwendet, um eine garantierte VM-Verfügbarkeit beim Bereitstellen von Vorhersagen zu gewährleisten, und ob das Modell VMs aus allen verfügbaren Reservierungen oder nur aus einer bestimmten Reservierung verwendet. Weitere Informationen finden Sie unter Reservierungsaffinität für Compute Engine.Sie können nur Compute Engine-Reservierungen verwenden, die für Vertex AI freigegeben sind. Weitere Informationen finden Sie unter Nutzung einer Reservierung zulassen.
Folgende Werte werden unterstützt:
NO_RESERVATION
: Wenn Ihr Modell für einen Vertex AI-Endpunkt bereitgestellt wird, wird keine Reservierung genutzt. Wenn SieNO_RESERVATION
angeben, hat das denselben Effekt wie das Weglassen einer Reservierungsaffinität.ANY_RESERVATION
: Bei der Bereitstellung des Vertex AI-Modells werden VMs aus Compute Engine-Reservierungen genutzt, die sich im aktuellen Projekt befinden oder für das Projekt freigegeben sind und für die automatische Nutzung konfiguriert sind. Es werden nur VMs verwendet, die die folgenden Anforderungen erfüllen:- Sie verwenden den Maschinentyp, der durch den Wert
MACHINE_TYPE
angegeben wird. - Wenn das BigQuery-Dataset, in dem Sie das Remote-Modell erstellen, nur eine Region umfasst, muss sich die Reservierung in derselben Region befinden. Wenn sich das Dataset in der Multi-Region
US
befindet, muss sich die Reservierung in der Regionus-central1
befinden. Wenn sich das Dataset in der Multi-RegionEU
befindet, muss sich die Reservierung in der Regioneurope-west4
befinden.
Wenn in den verfügbaren Reservierungen nicht genügend Kapazität vorhanden ist oder keine geeigneten Reservierungen gefunden werden, stellt das System On-Demand-Compute Engine-VMs bereit, um die Ressourcenanforderungen zu erfüllen.
- Sie verwenden den Maschinentyp, der durch den Wert
SPECIFIC_RESERVATION
: Bei der Bereitstellung des Vertex AI-Modells werden VMs nur aus der Reservierung verwendet, die Sie im WertRESERVATION_AFFINITY_VALUES
angeben. Diese Reservierung muss für die gezielte Nutzung konfiguriert sein. Die Bereitstellung schlägt fehl, wenn die angegebene Reservierung nicht über ausreichende Kapazität verfügt.
RESERVATION_AFFINITY_KEY
: der Stringcompute.googleapis.com/reservation-name
. Sie müssen diese Option angeben, wenn der WertRESERVATION_AFFINITY_TYPE
SPECIFIC_RESERVATION
ist.RESERVATION_AFFINITY_VALUES
: einARRAY<STRING>
-Wert, der den vollständigen Ressourcennamen der Compute Engine-Reservierung im folgenden Format angibt:
projects/myproject/zones/reservation_zone/reservations/reservation_name
Beispiel:
RESERVATION_AFFINITY_values = ['projects/myProject/zones/us-central1-a/reservations/myReservationName']
.Sie können den Reservierungsnamen und die Zone auf der Seite Reservierungen der Google Cloud Console abrufen. Weitere Informationen finden Sie unter Reservierungen ansehen.
Sie müssen diese Option angeben, wenn der Wert von
RESERVATION_AFFINITY_TYPE
SPECIFIC_RESERVATION
ist.ENDPOINT_IDLE_TTL
: einINTERVAL
-Wert, der die Dauer der Inaktivität angibt, nach der das offene Modell automatisch vom Vertex AI-Endpunkt entfernt wird.Geben Sie zum Aktivieren der automatischen Bereitstellungsaufhebung für das Intervallliteral einen Wert zwischen 390 Minuten (6, 5 Stunden) und 7 Tagen an. Geben Sie beispielsweise
INTERVAL 8 HOUR
an, damit das Modell nach 8 Stunden Inaktivität nicht mehr bereitgestellt wird. Der Standardwert ist 390 Minuten (6,5 Stunden).Die Inaktivität eines Modells wird als die Zeitspanne definiert, die seit der Ausführung einer der folgenden Operationen für das Modell vergangen ist:
- Führen Sie die Anweisung
CREATE MODEL
aus. - Ausführen der
ALTER MODEL
-Anweisung mit dem ArgumentDEPLOY_MODEL
aufTRUE
gesetzt. - Senden einer Inferenzanfrage an den Modellendpunkt. Beispiel: Sie führen die Funktion
ML.GENERATE_EMBEDDING
oderML.GENERATE_TEXT
aus.
Bei jedem dieser Vorgänge wird der Inaktivitätstimer auf null zurückgesetzt. Das Zurücksetzen wird zu Beginn des BigQuery-Jobs ausgelöst, mit dem der Vorgang ausgeführt wird.
Nachdem das Modell nicht mehr bereitgestellt wurde, geben Inferenzanfragen, die an das Modell gesendet werden, einen Fehler zurück. Das BigQuery-Modellobjekt bleibt unverändert, einschließlich der Modellmetadaten. Wenn Sie das Modell wieder für die Inferenz verwenden möchten, müssen Sie es noch einmal bereitstellen. Führen Sie dazu die
ALTER MODEL
-Anweisung für das Modell aus und legen Sie die OptionDEPLOY_MODEL
aufTRUE
fest.- Führen Sie die Anweisung
Bereitgestellte offene Modelle
Öffnen Sie in der Google Cloud Console die Seite BigQuery.
Erstellen Sie mit dem SQL-Editor ein Remote-Modell:
CREATE OR REPLACE MODEL `PROJECT_ID.DATASET_ID.MODEL_NAME` REMOTE WITH CONNECTION {DEFAULT | `PROJECT_ID.REGION.CONNECTION_ID`} OPTIONS ( ENDPOINT = 'https://ENDPOINT_REGION-aiplatform.googleapis.com/v1/projects/ENDPOINT_PROJECT_ID/locations/ENDPOINT_REGION/endpoints/ENDPOINT_ID' );
Ersetzen Sie Folgendes:
PROJECT_ID
: Ihre Projekt-ID.DATASET_ID
ist die ID des Datasets, das das Modell enthalten soll. Dieses Dataset muss sich am selben Standort wie die von Ihnen verwendete Verbindung befinden.MODEL_NAME
ist der Name des Modells.REGION
ist die Region, die von der Verbindung verwendet wird.CONNECTION_ID
ist die ID Ihrer BigQuery-Verbindung.Sie können diesen Wert abrufen, indem Sie sich die Verbindungsdetails in der Google Cloud Console ansehen und den Wert im letzten Abschnitt der voll qualifizierten Verbindungs-ID kopieren, der unter Verbindungs-ID angezeigt wird. Zum Beispiel,
projects/myproject/locations/connection_location/connections/myconnection
.ENDPOINT_REGION
: die Region, in der das offene Modell bereitgestellt wird.ENDPOINT_PROJECT_ID
: Das Projekt, in dem das offene Modell bereitgestellt wird.ENDPOINT_ID
: die ID des HTTPS-Endpunkts, der vom offenen Modell verwendet wird. Sie können die Endpunkt-ID abrufen, indem Sie das offene Modell auf der Seite Onlinevorhersage suchen und den Wert im Feld ID kopieren.
Alle anderen Modelle
Öffnen Sie in der Google Cloud Console die Seite BigQuery.
Erstellen Sie mit dem SQL-Editor ein Remote-Modell:
CREATE OR REPLACE MODEL `PROJECT_ID.DATASET_ID.MODEL_NAME` REMOTE WITH CONNECTION {DEFAULT | `PROJECT_ID.REGION.CONNECTION_ID`} OPTIONS (ENDPOINT = 'ENDPOINT');
Ersetzen Sie Folgendes:
PROJECT_ID
: Ihre Projekt-ID.DATASET_ID
ist die ID des Datasets, das das Modell enthalten soll. Dieses Dataset muss sich am selben Standort wie die von Ihnen verwendete Verbindung befinden.MODEL_NAME
ist der Name des Modells.REGION
ist die Region, die von der Verbindung verwendet wird.CONNECTION_ID
ist die ID Ihrer BigQuery-Verbindung.Sie können diesen Wert abrufen, indem Sie sich die Verbindungsdetails in der Google Cloud Console ansehen und den Wert im letzten Abschnitt der voll qualifizierten Verbindungs-ID kopieren, der unter Verbindungs-ID angezeigt wird. Zum Beispiel,
projects/myproject/locations/connection_location/connections/myconnection
.ENDPOINT
: der Name eines Einbettungsmodells, das verwendet werden soll. Weitere Informationen finden Sie unterENDPOINT
.Das von Ihnen angegebene Vertex AI-Modell muss an dem Ort verfügbar sein, an dem Sie das Remote-Modell erstellen. Weitere Informationen finden Sie unter Standorte.
Texteinbettungen generieren
Erstellen Sie Texteinbettungen mit der Funktion ML.GENERATE_EMBEDDING
. Verwenden Sie dazu Textdaten aus einer Tabellenspalte oder einer Abfrage.
In der Regel verwenden Sie ein Texteinbettungsmodell für Anwendungsfälle mit nur Text und ein multimodales Einbettungsmodell für modale Suchanwendungsfälle, wobei Einbettungen für Text und visuelle Inhalte im selben semantischen Bereich generiert werden.
Vertex AI Text
Generieren Sie Texteinbettungen mit einem Remote-Modell über ein Vertex AI-Modell für die Texteinbettung:
SELECT * FROM ML.GENERATE_EMBEDDING( MODEL `PROJECT_ID.DATASET_ID.MODEL_NAME`, {TABLE PROJECT_ID.DATASET_ID.TABLE_NAME | (CONTENT_QUERY)}, STRUCT(FLATTEN_JSON AS flatten_json_output, TASK_TYPE AS task_type, OUTPUT_DIMENSIONALITY AS output_dimensionality) );
Ersetzen Sie Folgendes:
PROJECT_ID
: Ihre Projekt-ID.DATASET_ID
ist die ID des Datasets, das das Modell enthält.MODEL_NAME
: der Name des Remote-Modells über ein Einbettungsmodell.TABLE_NAME
ist der Name der Tabelle, die den einzubettenden Text enthält. Diese Tabelle muss eine Spalte namenscontent
enthalten. Sie können auch einen Alias nutzen, um eine Spalte mit anderen Namen zu verwenden.CONTENT_QUERY
ist eine Abfrage, deren Ergebnis einSTRING
-Spalte mit dem Namencontent
enthält.FLATTEN_JSON
ist einBOOL
-Wert, der angibt, ob die Einbettung in eine separate Spalte geparst werden soll. Der Standardwert istTRUE
.TASK_TYPE
: EinSTRING
-Literal, das die beabsichtigte nachgelagerte Anwendung angibt, um dem Modell zu helfen, Einbettungen mit höherer Qualität zu erstellen.TASK_TYPE
kann folgende Werte haben:RETRIEVAL_QUERY
: Gibt an, dass der angegebene Text eine Abfrage in einer Such- oder Abrufeinstellung ist.RETRIEVAL_DOCUMENT
: Gibt an, dass der angegebene Text ein Dokument in einer Such- oder Abrufeinstellung ist.Wenn Sie diesen Aufgabentyp verwenden, ist es hilfreich, den Dokumenttitel in die Abfrageanweisung aufzunehmen, um die Qualität der Einbettung zu verbessern. Der Dokumenttitel muss sich in einer Spalte befinden, die entweder
title
heißt oder den Aliastitle
verwendet. Beispiel:SELECT * FROM ML.GENERATE_EMBEDDING( MODEL
mydataset.embedding_model
, (SELECT abstract as content, header as title, publication_number FROMmydataset.publications
), STRUCT(TRUE AS flatten_json_output, 'RETRIEVAL_DOCUMENT' as task_type) );Wenn Sie die Spalte „title“ (Titel) in der Eingabeabfrage angeben, wird das Feld
title
des Anfragetextstitle
, der an das Modell gesendet wird, ausgefüllt. Wenn Sie einentitle
-Wert für einen anderen Aufgabentyp angeben, wird die Eingabe ignoriert und hat keine Auswirkungen auf die Einbettungsergebnisse.SEMANTIC_SIMILARITY
: Gibt an, dass der angegebene Text für die Bestimmung der semantischen Textähnlichkeit (Semantic Textual Similarity, STS) verwendet wird.CLASSIFICATION
: Gibt an, dass die Einbettungen zur Klassifizierung verwendet werden.CLUSTERING
: Gibt an, dass die Einbettungen für das Clustering verwendet werden.QUESTION_ANSWERING
: Gibt an, dass die Einbettungen für die Beantwortung von Fragen verwendet werden.FACT_VERIFICATION
: Gibt an, dass die Einbettungen für die Faktenprüfung verwendet werden.CODE_RETRIEVAL_QUERY
: Gibt an, dass die Einbettungen für den Codeabruf verwendet werden.
OUTPUT_DIMENSIONALITY
: einINT64
-Wert, der die Anzahl der Dimensionen angibt, die beim Generieren von Einbettungen verwendet werden sollen. Wenn Sie beispielsweise256 AS output_dimensionality
angeben, enthält die Ausgabespalteml_generate_embedding_result
für jeden Eingabewert 256 Einbettungen.Bei Remote-Modellen über
gemini-embedding-001
-Modelle muss derOUTPUT_DIMENSIONALITY
-Wert im Bereich[1, 3072]
liegen. Der Standardwert ist3072
. Bei Remote-Modellen übertext-embedding
- odertext-multilingual-embedding
-Modelle muss derOUTPUT_DIMENSIONALITY
-Wert im Bereich[1, 768]
liegen. Der Standardwert ist768
.Wenn Sie ein Remote-Modell über einem
text-embedding
-Modell verwenden, muss dietext-embedding
-Modellversiontext-embedding-004
oder höher sein. Wenn Sie ein Remote-Modell über einemtext-multilingual-embedding
-Modell verwenden, muss dietext-multilingual-embedding
-Modellversiontext-multilingual-embedding-002
oder höher sein.
Beispiel: Text in eine Tabelle einbetten
Das folgende Beispiel zeigt eine Anfrage zum Einbetten der Spalte content
der Tabelle text_data
:
SELECT * FROM ML.GENERATE_EMBEDDING( MODEL `mydataset.embedding_model`, TABLE mydataset.text_data, STRUCT(TRUE AS flatten_json_output, 'CLASSIFICATION' AS task_type) );
Freitext
Generieren Sie Texteinbettungen mit einem Remote-Modell über ein offenes Einbettungsmodell:
SELECT * FROM ML.GENERATE_EMBEDDING( MODEL `PROJECT_ID.DATASET_ID.MODEL_NAME`, {TABLE PROJECT_ID.DATASET_ID.TABLE_NAME | (CONTENT_QUERY)}, STRUCT(FLATTEN_JSON AS flatten_json_output) );
Ersetzen Sie Folgendes:
PROJECT_ID
: Ihre Projekt-ID.DATASET_ID
ist die ID des Datasets, das das Modell enthält.MODEL_NAME
: der Name des Remote-Modells über ein Einbettungsmodell.TABLE_NAME
ist der Name der Tabelle, die den einzubettenden Text enthält. Diese Tabelle muss eine Spalte namenscontent
enthalten. Sie können auch einen Alias nutzen, um eine Spalte mit anderen Namen zu verwenden.CONTENT_QUERY
ist eine Abfrage, deren Ergebnis einSTRING
-Spalte mit dem Namencontent
enthält.FLATTEN_JSON
ist einBOOL
-Wert, der angibt, ob die Einbettung in eine separate Spalte geparst werden soll. Der Standardwert istTRUE
.
Vertex AI Multimodal
Generieren Sie Texteinbettungen mit einem Remote-Modell über ein multimodales Vertex AI-Einbettungsmodell:
SELECT * FROM ML.GENERATE_EMBEDDING( MODEL `PROJECT_ID.DATASET_ID.MODEL_NAME`, {TABLE PROJECT_ID.DATASET_ID.TABLE_NAME | (CONTENT_QUERY)}, STRUCT(FLATTEN_JSON AS flatten_json_output, OUTPUT_DIMENSIONALITY AS output_dimensionality) );
Ersetzen Sie Folgendes:
PROJECT_ID
: Ihre Projekt-ID.DATASET_ID
ist die ID des Datasets, das das Modell enthält.MODEL_NAME
: der Name des Remote-Modells über einmultimodalembedding@001
-Modell.TABLE_NAME
ist der Name der Tabelle, die den einzubettenden Text enthält. Diese Tabelle muss eine Spalte namenscontent
enthalten. Sie können auch einen Alias nutzen, um eine Spalte mit anderen Namen zu verwenden.CONTENT_QUERY
: eine Abfrage, deren Ergebnis eineSTRING
-Spalte mit dem Namencontent
enthält.FLATTEN_JSON
ist einBOOL
-Wert, der angibt, ob die Einbettung in eine separate Spalte geparst werden soll. Der Standardwert istTRUE
.OUTPUT_DIMENSIONALITY
: einINT64
-Wert, der die Anzahl der Dimensionen angibt, die beim Generieren von Einbettungen verwendet werden sollen. Gültige Werte sind128
,256
,512
und1408
. Der Standardwert ist1408
. Wenn Sie beispielsweise256 AS output_dimensionality
angeben, enthält die Ausgabespalteml_generate_embedding_result
für jeden Eingabewert 256 Einbettungen.
Beispiel: Semantische Ähnlichkeit mit Einbettungen sortieren
Im folgenden Beispiel wird eine Sammlung von Filmrezensionen eingebettet. Die Rezension werden dann mithilfe der VECTOR_SEARCH
-Funktion nach der Kosinus-Distanz zur Rezension „Dieser Film war durchschnittlich“ sortiert.
Eine kleinere Distanz weist auf eine größere semantische Ähnlichkeit hin.
Weitere Informationen zur Vektorsuche und zum Vektorindex finden Sie unter Einführung in die Vektorsuche.
CREATE TEMPORARY TABLE movie_review_embeddings AS ( SELECT * FROM ML.GENERATE_EMBEDDING( MODEL `bqml_tutorial.embedding_model`, ( SELECT "This movie was fantastic" AS content UNION ALL SELECT "This was the best movie I've ever seen!!" AS content UNION ALL SELECT "This movie was just okay..." AS content UNION ALL SELECT "This movie was terrible." AS content ), STRUCT(TRUE AS flatten_json_output) ) ); WITH average_review_embedding AS ( SELECT ml_generate_embedding_result FROM ML.GENERATE_EMBEDDING( MODEL `bqml_tutorial.embedding_model`, (SELECT "This movie was average" AS content), STRUCT(TRUE AS flatten_json_output) ) ) SELECT base.content AS content, distance AS distance_to_average_review FROM VECTOR_SEARCH( TABLE movie_review_embeddings, "ml_generate_embedding_result", (SELECT ml_generate_embedding_result FROM average_review_embedding), distance_type=>"COSINE", top_k=>-1 ) ORDER BY distance_to_average_review;
Das Ergebnis lautet:
+------------------------------------------+----------------------------+ | content | distance_to_average_review | +------------------------------------------+----------------------------+ | This movie was just okay... | 0.062789813467745592 | | This movie was fantastic | 0.18579561313064263 | | This movie was terrible. | 0.35707466240930985 | | This was the best movie I've ever seen!! | 0.41844932504542975 | +------------------------------------------+----------------------------+
Nächste Schritte
- Informationen zum Verwenden von Text- und Bildeinbettungen für eine semantische Text-zu-Bild-Suche
- Informationen zum Verwenden von Texteinbettungen für die semantische Suche und Retrieval Augmented Generation (RAG)