Vertex AI-Texteinbettungen abrufen

Eine Texteinbettung ist eine Vektordarstellung von Textdaten. Sie werden auf viele Arten verwendet, um ähnliche Elemente zu finden. Sie interagieren mit ihnen jedes Mal, wenn Sie eine Google-Suche durchführen oder beim Online-Shopping Empfehlungen erhalten. Wenn Sie Texteinbettungen erstellen, erhalten Sie Vektordarstellungen von natürlichem Text als Arrays mit Gleitkommazahlen. Das bedeutet, dass Ihrem gesamten Eingabetext eine numerische Darstellung zugewiesen wird. Durch den Vergleich der numerischen Entfernung zwischen den Vektordarstellungen zweier Textelemente kann eine Anwendung die Ähnlichkeit zwischen dem Text oder den durch den Text dargestellten Objekten ermitteln.

Mit der Vertex AI API für Texteinbettungen können Sie mit generativer KI eine Texteinbettung erstellen. Mit dieser Anleitung können Sie Texteinbettungen für die Daten generieren, die in Spanner- und Vertex AI-Einbettungsmodellen wie dem Modell textembedding-gecko gespeichert sind.

Weitere Informationen zu Einbettungen finden Sie unter Texteinbettungen abrufen.

Ziel

In dieser Anleitung erfahren Sie mehr über die folgenden Themen:

  • Registrieren Sie das textembedding-gecko-Modell von Vertex AI in einem Cloud Spanner-Schema mithilfe von DDL-Anweisungen.
  • Referenzieren Sie das registrierte Modell mithilfe von SQL-Abfragen, um Einbettungen aus in Spanner gespeicherten Daten zu generieren.

Kosten

In dieser Anleitung werden kostenpflichtige Komponenten von Google Cloud verwendet, darunter:

  • Spanner
  • Vertex AI

Weitere Informationen zu den Kosten für Spanner finden Sie auf der Seite Preise für Spanner.

Weitere Informationen zu den Kosten von Vertex AI finden Sie auf der Seite Vertex AI – Preise.

Texteinbettungsmodell in Spanner registrieren

Zum Registrieren des Modells textembedding-gecko in einer Spanner-Datenbank execute Sie die folgende DDL-Anweisung aus:

CREATE MODEL MODEL_NAME
INPUT(content STRING(MAX))
OUTPUT(
  embeddings
    STRUCT<
      statistics STRUCT<truncated BOOL, token_count FLOAT64>,
      values ARRAY<FLOAT64>>
)
REMOTE OPTIONS (
  endpoint = '//aiplatform.googleapis.com/projects/PROJECT/locations/LOCATION/publishers/google/models/textembedding-gecko'
);

Ersetzen Sie Folgendes:

  • MODEL_NAME: der Name des Einbettungsmodells
  • PROJECT: das Projekt, das den Vertex AI-Endpunkt hostet
  • LOCATION: der Standort des Vertex AI-Endpunkts

Spanner gewährt automatisch die entsprechenden Berechtigungen. Ist dies nicht der Fall, prüfen Sie die Zugriffssteuerung für Modellendpunkte.

Die Schemaerkennung und -validierung ist für generative KI-Modelle nicht verfügbar. Sie müssen INPUT- und OUTPUT-Klauseln angeben, die mit dem Modellschema übereinstimmen. Das vollständige Schema des Gecko-Modells finden Sie unter Texteinbettungen abrufen.

Texteinbettungen generieren und speichern

Je nach verwendetem Modell kann das Generieren von Einbettungen einige Zeit dauern. Bei leistungsempfindlichen Arbeitslasten empfiehlt es sich, das Generieren von Einbettungen in Lese-Schreib-Transaktionen zu vermeiden. Generieren Sie stattdessen die Einbettungen anhand der folgenden SQL-Beispiele in einer schreibgeschützten Transaktion.

Um Einbettungen zu generieren, übergeben Sie einen Text mit folgendem SQL-Code direkt an die Funktion ML.PREDICT:

SELECT embeddings.values
FROM ML.PREDICT(
  MODEL MODEL_NAME,
  (SELECT "A product description" as content)
);

Verwenden Sie den folgenden SQL-Code, um Einbettungen für Daten zu generieren, die in einer Tabelle gespeichert sind:

SELECT id, embeddings.values
FROM ML.PREDICT(
  MODEL MODEL_NAME,
  (SELECT id, description as content FROM Products)
);

Nachdem Sie die Einbettungen in einer schreibgeschützten Transaktion generiert haben, speichern Sie sie in Spanner, damit sie mit Ihren Betriebsdaten verwaltet werden können. Verwenden Sie eine Lese-Schreib-Transaktion, um die Einbettungen zu speichern.

Für Arbeitslasten, die weniger leistungsempfindlich sind, können Sie Einbettungen mit dem folgenden SQL-Code in einer Lese-/Schreibtransaktion generieren und einfügen:

INSERT INTO Products (id, description, embeddings)
SELECT @Id, @Description, embeddings.values
FROM ML.PREDICT(
  MODEL MODEL_NAME,
  (SELECT @Description as content)
);

Nächste Schritte