Texteinbettungen

Einbettungen für Text (textembedding-gecko) ist der Name des Modells, das Texteinbettungen unterstützt. Texteinbettungen sind eine NLP-Methode, die Textdaten in numerische Vektoren konvertiert, die von maschinellen Lernalgorithmen verarbeitet werden können, insbesondere von großen Modellen. Diese Vektordarstellungen sind so konzipiert, dass die semantische Bedeutung und der Kontext der von ihnen dargestellten Wörter erfasst werden.

Für Einbettungen stehen mehrere Versionen zur Verfügung. textembedding-gecko@003 ist das neueste stabile Einbettungsmodell mit verbesserter KI-Qualität. textembedding-gecko-multilingual@001 ist ein Modell, das für eine Vielzahl an Sprachen (aber nicht für Englisch) optimiert ist.

Weitere Informationen zu diesem Modell finden Sie in der Console auf der Karte "Textmodell für Einbettungen" im Model Garden.
Zum Model Garden

Anwendungsfälle

Semantische Suche: Texteinbettungen können verwendet werden, um die Abfrage des Nutzers und das Universum von Dokumenten in einem hochdimensionalen Vektorbereich darzustellen. Dokumente, die der Anfrage des Nutzers semantisch eher ähneln, haben im Vektorbereich eine kürzere Entfernung und können in den Suchergebnissen höher eingestuft werden.

Textklassifizierung: Training eines Modells, das die Texteinbettungen den richtigen Kategorielabels zuordnet (z. B. Katze vs. Hund, Spam vs. Nicht-Spam). Sobald das Modell trainiert ist, können es verwendet werden, um neue Texteingaben anhand ihrer Einbettungen in eine oder mehrere Kategorien zu klassifizieren.

HTTP-Anfrage

POST https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/publishers/google/models/textembedding-gecko:predict

Modellversionen

Wenn Sie die neueste Modellversion verwenden wollen geben Sie dies mit dem Suffix @latest ein, z. B. textembedding-gecko@latest.

Wenn Sie eine stabile Modellversion verwenden möchten, geben Sie die Modellversionsnummer an, z. B. textembedding-gecko@003. Stabile Versionen sind ab dem Releasedatum der nachfolgenden stabilen Version noch sechs Monate verfügbar.

Die folgende Tabelle enthält die verfügbaren stabilen Modellversionen:

Textembedding-gecko-Modell Veröffentlicht Einstellungsdatum
textembedding-gecko@003 12. Dezember 2023 9. Oktober 2024
textembedding-gecko@002 2. November 2023 9. Oktober 2024
textembedding-gecko-multilingual@001 2. November 2023 9. Oktober 2024
textembedding-gecko@001 7. Juni 2023 9. Oktober 2024
text-embedding-preview-0409 09. April 2024 Soll auf eine stabile Version aktualisiert werden
text-multilingual-embedding-preview-0409 09. April 2024 Soll auf eine stabile Version aktualisiert werden

Weitere Informationen finden Sie unter Modellversionen und Lebenszyklus.

Anfragetext

{
  "instances": [
    {
      "task_type": "RETRIEVAL_DOCUMENT",
      "title": "document title",
      "content": "I would like embeddings for this text!"
    },
  ]
}

Die Vertex AI PaLM Embedding API führt Onlinevorhersagen (in Echtzeit) aus, um Einbettungen aus Eingabetext zu erhalten.

Die API akzeptiert maximal 3.072 Eingabetokens und gibt 768-dimensionale Vektoreinbettungen aus. Verwenden Sie folgende Parameter für das Texteinbettungsmodell textembedding-gecko. Weitere Informationen finden Sie unter Übersicht über Texteinbettungen.

Parameter Beschreibung Zulässige Werte

content

Der Text, für den Sie Einbettungen generieren möchten. Text

task_type

Der Parameter "task_type" wird als beabsichtigte nachgelagerte Anwendung definiert, um dem Modell zu helfen, Einbettungen mit höherer Qualität zu erstellen. Dies ist ein String, der einen der folgenden Werte annehmen kann: RETRIEVAL_QUERY, RETRIEVAL_DOCUMENT, SEMANTIC_SIMILARITY, CLASSIFICATION, CLUSTERING, QUESTION_ANSWERING, FACT_VERIFICATION.

title

Der Titel für die Einbettung. Text

Beispielanfrage

REST

Senden Sie zum Testen eines Text-Prompts mit der Vertex AI API eine POST-Anfrage an den Endpunkt des Publisher-Modells.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • PROJECT_ID: Ihre Projekt-ID.
  • TEXT: Der Text, für den Sie Einbettungen generieren möchten.

HTTP-Methode und URL:

POST https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/publishers/google/models/textembedding-gecko@003:predict

JSON-Text der Anfrage:

{
  "instances": [
    { "content": "TEXT"}
  ],
}

Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

curl

Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/publishers/google/models/textembedding-gecko@003:predict"

PowerShell

Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/publishers/google/models/textembedding-gecko@003:predict" | Select-Object -Expand Content

Sie sollten eine JSON-Antwort ähnlich wie die Beispielantwort erhalten.

Python

Informationen zum Installieren oder Aktualisieren von Python finden Sie unter Vertex AI SDK für Python installieren. Weitere Informationen finden Sie in der Referenzdokumentation zur Python API.

from typing import List

from vertexai.language_models import TextEmbeddingInput, TextEmbeddingModel

def embed_text(
    texts: List[str] = ["banana muffins? ", "banana bread? banana muffins?"],
    task: str = "RETRIEVAL_DOCUMENT",
    model_name: str = "textembedding-gecko@003",
) -> List[List[float]]:
    """Embeds texts with a pre-trained, foundational model."""
    model = TextEmbeddingModel.from_pretrained(model_name)
    inputs = [TextEmbeddingInput(text, task) for text in texts]
    embeddings = model.get_embeddings(inputs)
    return [embedding.values for embedding in embeddings]

Node.js

Bevor Sie dieses Beispiel anwenden, folgen Sie den Node.js-Einrichtungsschritten in der Vertex AI-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur Vertex AI Node.js API.

Richten Sie zur Authentifizierung bei Vertex AI Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

async function main(
  project,
  model = 'textembedding-gecko@003',
  texts = 'banana bread?;banana muffins?',
  task = 'RETRIEVAL_DOCUMENT',
  apiEndpoint = 'us-central1-aiplatform.googleapis.com'
) {
  const aiplatform = require('@google-cloud/aiplatform');
  const {PredictionServiceClient} = aiplatform.v1;
  const {helpers} = aiplatform; // helps construct protobuf.Value objects.
  const clientOptions = {apiEndpoint: apiEndpoint};
  const match = apiEndpoint.match(/(?<Location>\w+-\w+)/);
  const location = match ? match.groups.Location : 'us-centra11';
  const endpoint = `projects/${project}/locations/${location}/publishers/google/models/${model}`;

  async function callPredict() {
    const instances = texts
      .split(';')
      .map(e => helpers.toValue({content: e, taskType: task}));
    const request = {endpoint, instances};
    const client = new PredictionServiceClient(clientOptions);
    const [response] = await client.predict(request);
    console.log('Got predict response');
    const predictions = response.predictions;
    for (const prediction of predictions) {
      const embeddings = prediction.structValue.fields.embeddings;
      const values = embeddings.structValue.fields.values.listValue.values;
      console.log('Got prediction: ' + JSON.stringify(values));
    }
  }

  callPredict();
}

Java

Bevor Sie dieses Beispiel anwenden, folgen Sie den Java-Einrichtungsschritten in der Vertex AI-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur Vertex AI Java API.

Richten Sie zur Authentifizierung bei Vertex AI Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

import static java.util.stream.Collectors.toList;

import com.google.cloud.aiplatform.v1beta1.EndpointName;
import com.google.cloud.aiplatform.v1beta1.PredictRequest;
import com.google.cloud.aiplatform.v1beta1.PredictResponse;
import com.google.cloud.aiplatform.v1beta1.PredictionServiceClient;
import com.google.cloud.aiplatform.v1beta1.PredictionServiceSettings;
import com.google.protobuf.Struct;
import com.google.protobuf.Value;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class PredictTextEmbeddingsSample {
  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    // Details about text embedding request structure and supported models are available in:
    // https://cloud.google.com/vertex-ai/docs/generative-ai/embeddings/get-text-embeddings
    String endpoint = "us-central1-aiplatform.googleapis.com:443";
    String project = "YOUR_PROJECT_ID";
    String model = "textembedding-gecko@003";
    predictTextEmbeddings(
        endpoint,
        project,
        model,
        List.of("banana bread?", "banana muffins?"),
        "RETRIEVAL_DOCUMENT");
  }

  // Gets text embeddings from a pretrained, foundational model.
  public static List<List<Float>> predictTextEmbeddings(
      String endpoint, String project, String model, List<String> texts, String task)
      throws IOException {
    PredictionServiceSettings settings =
        PredictionServiceSettings.newBuilder().setEndpoint(endpoint).build();
    Matcher matcher = Pattern.compile("^(?<Location>\\w+-\\w+)").matcher(endpoint);
    String location = matcher.matches() ? matcher.group("Location") : "us-central1";
    EndpointName endpointName =
        EndpointName.ofProjectLocationPublisherModelName(project, location, "google", model);

    // You can use this prediction service client for multiple requests.
    try (PredictionServiceClient client = PredictionServiceClient.create(settings)) {
      PredictRequest.Builder request =
          PredictRequest.newBuilder().setEndpoint(endpointName.toString());
      for (int i = 0; i < texts.size(); i++) {
        request.addInstances(
            Value.newBuilder()
                .setStructValue(
                    Struct.newBuilder()
                        .putFields("content", valueOf(texts.get(i)))
                        .putFields("taskType", valueOf(task))
                        .build()));
      }
      PredictResponse response = client.predict(request.build());
      List<List<Float>> floats = new ArrayList<>();
      for (Value prediction : response.getPredictionsList()) {
        Value embeddings = prediction.getStructValue().getFieldsOrThrow("embeddings");
        Value values = embeddings.getStructValue().getFieldsOrThrow("values");
        floats.add(
            values.getListValue().getValuesList().stream()
                .map(Value::getNumberValue)
                .map(Double::floatValue)
                .collect(toList()));
      }
      return floats;
    }
  }

  private static Value valueOf(String s) {
    return Value.newBuilder().setStringValue(s).build();
  }
}

Antworttext

{
  "predictions": [
    {
      "embeddings": {
        "statistics": {
          "truncated": boolean,
          "token_count": integer
        },
        "values": [ number ]
      }
    }
  ]
}
Antwortelement Beschreibung
embeddings Das aus dem Eingabetext generierte Ergebnis.
statistics Die aus dem Eingabetext berechneten Statistiken.
truncated Gibt an, ob der Eingabetext länger als die maximal zulässige Tokenanzahl war und gekürzt wurde.
tokenCount Anzahl der Tokens des Eingabetexts.
values Das Feld values enthält die Einbettungsvektoren, die den Wörtern im Eingabetext entsprechen.

Beispielantwort

{
  "predictions": [
    {
      "embeddings": {
        "values": [
          0.0058424929156899452,
          0.011848051100969315,
          0.032247550785541534,
          -0.031829461455345154,
          -0.055369812995195389,
          ...
        ],
        "statistics": {
          "token_count": 4,
          "truncated": false
        }
      }
    }
  ]
}