Wenn Sie bereits benutzerdefinierte Vektoreinbettungen für Ihre Daten erstellt haben, können Sie sie in Gemini Enterprise hochladen und bei Abfragen mit Gemini Enterprise verwenden.
Diese Funktion ist für Datenspeicher mit benutzerdefinierten strukturierten Daten oder unstrukturierten Daten mit Metadaten verfügbar.
Standardmäßig generiert Gemini Enterprise automatisch Vektoreinbettungen, ohne dass eine Konfiguration erforderlich ist. Wenn Sie sich mit dem Erstellen von Einbettungen nicht auskennen, empfiehlt Google, dass Gemini Enterprise Einbettungen für Sie erstellt und verwendet. Wenn Sie jedoch eigene Einbettungen für Ihre Daten erstellt haben, möchten Sie diese möglicherweise anstelle der von Gemini Enterprise generierten Einbettungen verwenden, insbesondere wenn Ihre benutzerdefinierten Einbettungen zusätzlichen Kontext enthalten, der das Abrufen und Ranking von Suchergebnissen verbessern kann. Beispiel:
- Ihre Einbettungen wurden mit benutzerdefinierten Wörtern trainiert, z. B. internen Begriffen, deren semantische Ähnlichkeit nicht durch das Training mit öffentlichen Daten erfasst würde. Das können beispielsweise organisationsspezifische Begriffe sein, die nur in privaten Dokumenten vorkommen.
- Sie haben Einbettungen für Nutzerprofile erstellt und möchten diese verwenden, um ein personalisiertes, semantisch relevantes Dokumentranking zu erstellen. Sie können Ihre Einbettungen verwenden, um eine auf Personalisierung basierende Rangfolge zu erhalten, die die Dokumenteinbettungen von Google für die Relevanz-basierte Rangfolge ergänzen kann.
So verwenden Sie Ihre eigenen Einbettungen:
- Vorbereitung: Prüfen Sie, ob Ihre Einbettungen alle Anforderungen erfüllen.
- Daten mit Einbettungen aufnehmen: Nehmen Sie Ihre Dokumente mit ihren Einbettungen auf.
- Schema aktualisieren: Aktualisieren Sie Ihr Schema mit den Feldern für die wichtigsten Attribute und Dimensionsspezifikationen.
- Einbettung angeben: Sie können die Einbettung entweder global oder pro Suchanfrage angeben.
Hinweise
Bevor Sie beginnen, sollten Sie prüfen, ob Ihre Einbettungen die folgenden Anforderungen erfüllen:
- Einbettungen werden für strukturierte Daten und unstrukturierte Daten mit Metadaten unterstützt.
- Einbettungen müssen als eindimensionale Arrays angegeben werden
- Die Dimensionalität der Einbettung muss zwischen 1 und 768 liegen (jeweils einschließlich)
- Einbettungen werden für Text und Bilder unterstützt. Videos werden nicht unterstützt
- Es können bis zu zwei Felder als wichtige Felder für den Einbettungsschlüssel getaggt werden. Sie können zwei Felder für Fälle wie A/B-Tests für Ihre Einbettungen verwenden.
- Die Schlüsselattribute für Einbettungsfelder können nach dem Festlegen nicht mehr entfernt werden.
Daten mit Einbettungen aufnehmen
Sie können die Einbettungen eines Dokuments in ein bis zwei Feldern aufnehmen, die während der Dokumentaufnahme als Teil der Daten oder Metadaten dieses Dokuments enthalten sind.
So nehmen Sie Daten mit Einbettungen auf:
Bereiten Sie Ihre Daten je nach Datentyp für die Aufnahme vor:
Strukturierte Daten: Wenn Sie Ihre Daten vorbereiten, fügen Sie die Einbettungen der einzelnen Dokumente als eindimensionale Arrays in ein bis zwei Feldern im Dokument ein. Sie können bis zu zwei Einbettungen angeben, z. B. für A/B-Tests. Jede Einbettung muss in einem eigenen Feld im Dokument angegeben werden, z. B.:
"example_embedding_vector": [0.1, 0.2, 0.3 ...]
Folgen Sie der Anleitung zum Vorbereiten strukturierter Daten in der Dokumentation Daten für die Aufnahme vorbereiten.
Unstrukturierte Daten mit Metadaten: Wenn Sie Ihre Daten vorbereiten, fügen Sie die Einbettung jedes Dokuments als eindimensionales Array in ein Feld in den Dokumentmetadaten ein. Sie können bis zu zwei Einbettungen bereitstellen, z. B. wenn Sie A/B-Tests zwischen Einbettungen durchführen. Jede Einbettung muss in einem eigenen Feld in den Dokumentmetadaten angegeben werden, z. B.:
"example_embedding_vector": [0.1, 0.2, 0.3 ...]
Folgen Sie der Anleitung zum Vorbereiten unstrukturierter Daten mit Metadaten für Ihre Aufnahmemethode (Cloud Storage oder BigQuery) in der Dokumentation Daten für die Aufnahme vorbereiten.
Folgen Sie der Anleitung für Ihren Datentyp unter Datenspeicher für selbst erhobene Daten erstellen, um Ihre Dokumente mit Einbettungen aufzunehmen.
Aktualisieren Sie als Nächstes Ihr Schema, damit die richtigen Einbettungsfelder verwendet werden.
Schema aktualisieren
Aktualisieren Sie Ihr Schema mit Schlüsselattributzuordnungen und Dimensionen für Ihre Einbettungsfelder. Verwenden Sie dazu entweder die Google Cloud -Konsole oder die API.
Console
So aktualisieren Sie Ihr Schema über die Google Cloud Console:
Rufen Sie in der Google Cloud Console die Seite Gemini Enterprise auf.
Klicken Sie im Navigationsmenü auf Datenspeicher.
Klicken Sie in der Spalte Name auf den Datenspeicher mit dem Schema, das Sie aktualisieren möchten.
Klicken Sie auf den Tab Schema, um das Schema für Ihre Daten aufzurufen.
Klicken Sie auf Bearbeiten.
Suchen Sie im Schema nach dem Einbettungsfeld und wählen Sie in der Spalte Schlüsselattribute embedding_vector als Schlüsselattribut für dieses Feld aus.
Wenn Sie ein zweites Einbettungsfeld haben, wiederholen Sie diesen Schritt für dieses Feld.
Geben Sie in der Spalte Dimension die Anzahl der Dimensionen für das jeweilige Einbettungsfeld ein.
Wenn Sie ein zweites Einbettungsfeld haben, wiederholen Sie diesen Schritt für dieses Feld.
Klicken Sie auf Speichern, um die Schemaänderungen zu übernehmen.
Nachdem Sie Ihr Schema aktualisiert haben, kann es je nach Größe Ihres Datenspeichers bis zu 24 Stunden dauern, bis der Index neu erstellt wurde.
REST
So aktualisieren Sie Ihr Schema mithilfe der API:
Folgen Sie der REST-Anleitung unter Schema aktualisieren und geben Sie die Zuordnung der Schlüsselattribute und die Anzahl der Dimensionen für jedes Einbettungsfeld an:
"keyPropertyMapping": "embedding_vector"
"dimension": NUMBER_OF_DIMENSIONS
Hier sehen Sie beispielsweise ein formatiertes JSON-Schema mit 768 Dimensionen für das Feld
example_embedding_vector
:{ "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "properties": { "example_embedding_vector": { "type": "array", "keyPropertyMapping": 'embedding_vector', "dimension": 768, "items": { "type": "number" } } } }
In einer Anfrage zum Aktualisieren des Schemas würde das formatierte JSON als JSON-String enthalten sein:
"jsonSchema": "{\"$schema\":\"https://json-schema.org/draft/2020-12/schema\",\"type\":\"object\",\"properties\":{\"example_embedding_vector\":{\"type\":\"array\",\"keyPropertyMapping\":\"embedding_vector\",\"dimension\":768,\"items\":{\"type\":\"number\"}}}}"
Nachdem Sie Ihr Schema aktualisiert haben, kann es je nach Größe Ihres Datenspeichers bis zu 24 Stunden dauern, bis der Index neu erstellt wurde.
Geben Sie als Nächstes das Einbettungselement an.
Einbettung angeben
Nachdem die Indexierung aus Ihrer Schemaaktualisierung abgeschlossen ist, können Sie Suchanfragen mit einer Einbettungsspezifikation senden.
Es gibt zwei Möglichkeiten, ein Embedding anzugeben:
- Einbettung global angeben: Wenn Sie für alle Suchanfragen dieselbe Einbettung angeben möchten, aktualisieren Sie Ihre Bereitstellungseinstellungen, um eine Einbettungsspezifikation mit der Google Cloud -Konsole oder der API einzuschließen.
- Einbettung pro Suchanfrage angeben: Senden Sie
embeddingSpec
in jeder Suchanfrage über die API. Dadurch wird die globale Einstellung überschrieben, sofern sie festgelegt ist.
Einbettung global angeben
Sie können dasselbe Embedding für alle Suchanfragen über dieGoogle Cloud Console oder die API angeben.
Console
Wenn Sie allen Suchanfragen dieselbe Einbettungsspezifikation zur Verfügung stellen möchten, aktualisieren Sie Ihre Bereitstellungseinstellungen mit einer Einbettungsspezifikation.
Rufen Sie in der Google Cloud Console die Seite Gemini Enterprise auf.
Klicken Sie für den Datenspeicher mit dem Schema, das Sie aktualisieren möchten, auf Anzeigen.
Rufen Sie die Seite Konfigurationen auf und klicken Sie auf den Tab Bereitstellung.
Geben Sie für Pfad des Einbettungsfelds den Namen des Felds ein, das Sie der Eigenschaft für den Einbettungsschlüssel zugeordnet haben.
Geben Sie für Ranking-Ausdruck eine oder mehrere Funktionen ein, um das Ranking der Ergebnisse zu steuern. Variablen werden entsprechend dem eingegebenen Ausdruck gewichtet. Der Ranking-Ausdruck ist eine einzelne Funktion oder mehrere Funktionen, die durch
+
im Formatfunction, { " + ", function }
verbunden sind.Unterstützte Funktionen:
DOUBLE * relevance_score
DOUBLE * dotProduct(EMBEDDING_FIELD_PATH)
Die folgenden Variablen werden akzeptiert:
relevance_score
: Eine vordefinierte Variable, die von Gemini Enterprise bereitgestellt wird, um die Relevanz eines Dokuments zu messen. Der Wert liegt zwischen 0 und 1, einschließlich der Grenzwerte.dotProduct()
: Eine vordefinierte Funktion, die von Gemini Enterprise bereitgestellt wird. Sie müssen dieser Funktion denselben Feldnamen wie fürembeddingVector.fieldPath
angeben.
Beispiel:
0.3 * relevance_score
0.5 * relevance_score + 0.3 * dotProduct(example_embedding_field)
REST
Wenn Sie allen Suchanfragen dieselbe Einbettungsspezifikation zur Verfügung stellen möchten, aktualisieren Sie servingConfig
mit embeddingConfig
.
Patchen Sie die
servingConfig
-Entität mit den Feldern, die Sie aktualisieren möchten. Geben Sie die Felder an, die Sie mitupdateMask
aktualisieren.Im folgenden Beispiel werden für
embeddingConfig
Einbettungen im Feldexample_embedding_field
verwendet undrelevance_score
erhält ein Gewicht von 0, 5.curl -X PATCH \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ -d '{ "name": "projects/PROJECT_ID/locations/LOCATION/collections/default_collection/dataStores/DATA_STORE_ID/servingConfigs/default_search", "embeddingConfig": { "fieldPath": "example_embedding_field" }, "ranking_expression": "0.5 * relevance_score" }' \ 'https://discoveryengine.googleapis.com/v1alpha/projects/PROJECT_ID/locations/LOCATION/collections/default_collection/dataStores/DATA_STORE_ID/servingConfigs/default_search?updateMask=embeddingConfig,rankingExpression'
fieldPath
: Der Name des Felds, das Sie der Eigenschaft „Einbettungsschlüssel“ zugeordnet haben.ranking_expression
: Steuert die Rangfolge der Ergebnisse. Variablen werden entsprechend dem eingegebenen Ausdruck gewichtet. Der Ranking-Ausdruck ist eine einzelne Funktion oder mehrere Funktionen, die durch+
im Formatfunction, { " + ", function }
verbunden sind.
Unterstützte Funktionen:
DOUBLE * relevance_score
DOUBLE * dotProduct(EMBEDDING_FIELD_PATH)
Die folgenden Variablen werden akzeptiert:
relevance_score
: Eine vordefinierte Variable, die von Gemini Enterprise bereitgestellt wird.dotProduct()
: Eine vordefinierte Funktion, die von Gemini Enterprise bereitgestellt wird. Das Punktprodukt wird normalisiert. Sie müssen dieser Funktion denselben Feldnamen wie fürembeddingVector.fieldPath
angeben.
Beispiel:
0.3 * relevance_score
0.5 * relevance_score + 0.3 * dotProduct(example_embedding_field)
Wenn Sie Suchanfragen senden, wird
servingConfig.embeddingConfig
automatisch eingefügt.Wenn Sie eine Suchanfrage senden, die explizit eine andere
embeddingSpec
enthält, wirdservingConfig.embeddingConfig
überschrieben. Eine Anleitung dazu, wie Sie Einbettungsspezifikationen für einzelne Suchanfragen angeben, finden Sie hier.
Einbettung pro Suchanfrage angeben
Sie können eine Einbettungsspezifikation für eine einzelne Suchanfrage über die API bereitstellen. Eine Einbettungsspezifikation pro Anfrage überschreibt jede globale Einbettungsspezifikation.
Senden Sie eine Suchanfrage, die
embeddingSpec
enthält.Im folgenden Beispiel für
embeddingSpec
werden Einbettungen im Feldexample_embedding_field
verwendet, „Beispielanfrage“ als Eingabevektor angegeben und beim Berechnen des Rankings ein Gewicht von 0,5 fürrelevance_score
und 0,3 fürexample_embedding_field
festgelegt."embeddingSpec": { "embeddingVectors": [{ "fieldPath": "example_embedding_field", "vector": [ 0.96241474, -0.45999944, 0.108588696 ] }] }, "ranking_expression": "0.5 * relevance_score + 0.3 * dotProduct(example_embedding_field)"
fieldPath
: Der Name des Felds, das Sie der Eigenschaft „Einbettungsschlüssel“ zugeordnet haben.vector
: Der als Array bereitgestellte Eingabevektor.ranking_expression
: Steuert die Rangfolge der Ergebnisse. Variablen werden entsprechend dem eingegebenen Ausdruck gewichtet. Der Ranking-Ausdruck ist eine einzelne Funktion oder mehrere Funktionen, die durch+
im Formatfunction, { " + ", function }
verbunden sind.Unterstützte Funktionen:
DOUBLE * relevance_score
DOUBLE * dotProduct(EMBEDDING_FIELD_PATH)
Die folgenden Variablen werden akzeptiert:
relevance_score
: Eine vordefinierte Variable, die von Gemini Enterprise bereitgestellt wird, um die Relevanz eines Dokuments zu messen. Der Wert liegt zwischen 0 und 1, einschließlich der Grenzwerte.dotProduct()
: Eine vordefinierte Funktion, die von Gemini Enterprise bereitgestellt wird. Sie müssen dieser Funktion denselben Feldnamen wie fürembeddingVector.fieldPath
bereitstellen.
Beispiel:
0.3 * relevance_score
0.5 * relevance_score + 0.3 * dotProduct(example_embedding_field)
Ergebnisse in der Antwort auf die Suchanfrage erhalten. Jedes Suchergebnis enthält den Relevanzwert und die Werte für das Skalarprodukt. Beispiel:
"modelScores": { "dotProduct(example_embedding_field)": [0.02150772698223591], "relevance_score": [ 0.8828125 ] }
dotProduct()
: Das berechnete Skalarprodukt für das Suchergebnisdokument.relevance_score
: Der berechnete Relevanzwert für das Dokument mit dem Suchergebnis.
Nächste Schritte
- Daten für die Aufnahme vorbereiten
- Schema aktualisieren
- Suchergebnisse in der Vorschau ansehen
- Um die Auswirkungen benutzerdefinierter Einbettungen auf die Suchqualität einer benutzerdefinierten Suchanwendung zu verstehen, müssen Sie die Suchqualität bewerten. Weitere Informationen finden Sie unter Suchqualität bewerten.