Se hai già creato i tuoi incorporamenti vettoriali personalizzati per i tuoi dati, puoi caricarli in Vertex AI Search e utilizzarli quando esegui query con Vertex AI Search.
Questa funzionalità è disponibile per i datastore con dati strutturati generici o dati non strutturati con metadati. Questa funzionalità non è disponibile per la ricerca di contenuti multimediali e sanitari.
Per impostazione predefinita, Vertex AI Search genera automaticamente embedding vettoriali senza alcuna configurazione necessaria. Se non hai dimestichezza con la creazione di embedding, Google consiglia di lasciare che sia Vertex AI Search a creare e utilizzare gli embedding per te. Tuttavia, se hai creato i tuoi embedding per i tuoi dati, potresti preferirli a quelli generati da Vertex AI Search, soprattutto se gli embedding personalizzati contengono un contesto aggiuntivo che può arricchire il recupero e il ranking della ricerca. Per esempio:
- Gli embedding sono stati addestrati su parole personalizzate, ad esempio termini interni la cui somiglianza semantica non verrebbe rilevata dall'addestramento su dati pubblici, ad esempio termini specifici dell'organizzazione che compaiono solo nei documenti privati.
- Hai creato incorporamenti per i profili utente e vuoi utilizzarli per creare un un ranking dei documenti personalizzato e semanticamente pertinente. Puoi utilizzare per ottenere un ranking basato sulla personalizzazione, il che può aumentare Incorporamenti dei documenti di Google per il ranking basato sulla pertinenza.
Per utilizzare gli incorporamenti personalizzati:
- Prima di iniziare: verifica che gli incorporamenti soddisfino tutti i requisiti
- Importa i dati con gli embedding: importa i documenti con i relativi embedding
- Aggiorna lo schema: aggiorna lo schema con la proprietà della chiave. i campi e le specifiche delle dimensioni
- Specifica l'embedding: specifica l'embedding globalmente o per richiesta di ricerca.
Prima di iniziare
Prima di iniziare, assicurati che gli embedding soddisfino i seguenti requisiti:
- Gli incorporamenti sono supportati per i dati strutturati e non strutturati con metadati
- Gli incorporamenti devono essere forniti come array unidimensionali
- La dimensione dell'embedding deve essere compresa tra 1 e 768 incluso
- Gli incorporamenti sono supportati per testo e immagini. I video non sono supportati
- È possibile taggare fino a due campi come campi della proprietà chiave di incorporamento. Potresti utilizzare due campi per casi come i test A/B per gli incorporamenti
- Al momento, le designazioni delle proprietà della chiave dei campi di incorporamento non possono essere rimosse dopo sono impostati
Importa i dati con le rappresentazioni distribuite
Puoi importare gli incorporamenti di un documento in uno o due campi inclusi come parte i dati o i metadati di quel documento durante l'importazione.
Per importare i dati con gli incorporamenti:
Prepara i dati per l'importazione in base al tipo di dati:
Dati strutturati: quando prepari i dati, includi gli embedding di ogni documento come array unidimensionali in uno o due campi del documento. Puoi fornire fino a due embedding (ad esempio, se esegui test A/B tra embedding). Ogni embedding deve essere fornito nel suo proprio campo nel documento, ad esempio:
"example_embedding_vector": [0.1, 0.2, 0.3 ...]
Segui le indicazioni per preparare i dati strutturati nel Prepara i dati per l'importazione della documentazione.
Dati non strutturati con metadati: quando prepari i dati, includi l'incorporamento di ciascun documento come array unidimensionale in un campo nei metadati del documento. Puoi fornire fino a due embedding (ad esempio, quando esegui test A/B tra embedding). Ogni incorporamento deve essere forniti nel relativo campo nei metadati del documento, ad esempio:
"example_embedding_vector": [0.1, 0.2, 0.3 ...]
Segui le indicazioni per preparare dati non strutturati con metadati per il metodo di importazione (Cloud Storage o BigQuery) Prepara i dati per l'importazione della documentazione.
Segui le istruzioni relative al tipo di dati in Crea un motore e importa i dati con Vertex AI Search per importare i documenti tramite gli incorporamenti.
Aggiorna quindi lo schema in modo da utilizzare i campi di incorporamento corretti.
Aggiorna lo schema
Aggiorna lo schema con mappature delle proprietà chiave e dimensioni per l'incorporamento utilizzando la console Google Cloud o l'API.
Console
Per aggiornare lo schema utilizzando la console Google Cloud, segui questi passaggi:
Nella console Google Cloud, vai alla pagina Agent Builder.
Nel menu di navigazione, fai clic su Datastore.
Nella colonna Nome, fai clic sul datastore con lo schema da aggiornare.
Fai clic sulla scheda Schema per visualizzare lo schema dei dati.
Fai clic sul pulsante Edit (Modifica).
Individua il campo di embedding nello schema e nella colonna Proprietà chiave, poi seleziona embedding_vector come proprietà chiave per quel campo.
Se disponi di un secondo campo di incorporamento, ripeti questo passaggio per quel campo.
Nella colonna Dimensione, inserisci il numero di dimensioni per il campo di incorporamento.
Se disponi di un secondo campo di incorporamento, ripeti questo passaggio per quel campo.
Fai clic su Salva per applicare le modifiche allo schema.
Dopo aver aggiornato lo schema, la reindicizzazione può richiedere fino a 24 ore, a seconda delle dimensioni del tuo datastore.
REST
Per aggiornare lo schema utilizzando l'API:
Seguire le istruzioni per REST in Aggiorna uno schema, specifica la proprietà della chiave mappatura e il numero di dimensioni per ogni campo di incorporamento:
"keyPropertyMapping": "embedding_vector"
"dimension": NUMBER_OF_DIMENSIONS
Ad esempio, di seguito è riportato uno schema JSON formattato con 768 dimensioni per il campo
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 una richiesta di aggiornamento dello schema, il codice JSON formattato riportato sopra verrebbe incluso come una stringa JSON:
"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\"}}}}"
Dopo aver aggiornato lo schema, la reindicizzazione può richiedere fino a 24 ore a seconda delle dimensioni del datastore.
Quindi, specifica il tuo incorporamento.
Specifica l'incorporamento
Una volta completata l'indicizzazione dall'aggiornamento dello schema, puoi inviare richieste di ricerca che includono una specifica di incorporamento.
Esistono due modi per specificare un incorporamento:
- Specifica un'incorporazione a livello globale: per specificare la stessa incorporazione per tutte le richieste di ricerca, aggiorna le impostazioni di pubblicazione in modo da includere una specifica di incorporamento utilizzando la console Google Cloud o l'API.
- Specifica un incorporamento per richiesta di ricerca: invia
embeddingSpec
in ogni richiesta di ricerca usando l'API. Questa impostazione sostituisce l'impostazione globale, se impostata.
Specificare un embedding a livello globale
Puoi specificare lo stesso embedding per tutte le richieste di ricerca utilizzando la console Google Cloud o l'API.
Console
Per fornire la stessa specifica di incorporamento a tutte le richieste di ricerca, aggiornare le impostazioni di pubblicazione con una specifica di incorporamento.
Nella console Google Cloud, vai alla pagina Agent Builder.
Fai clic su Visualizza per il datastore con lo schema da aggiornare.
Vai alla pagina Configurazioni e fai clic sulla scheda Pubblicazione.
In Percorso campo di incorporamento, inserisci il nome del campo. mappata alla proprietà della chiave di incorporamento.
In Espressione di ranking, inserisci una o più funzioni per controllare il ranking dei risultati. Le variabili vengono ponderate in base all'espressione . L'espressione di ranking è una singola funzione o più funzioni unite da
+
nel formatofunction, { " + ", function }
.Le funzioni supportate sono:
DOUBLE * relevance_score
DOUBLE * dotProduct(EMBEDDING_FIELD_PATH)
Sono accettate le seguenti variabili:
relevance_score
: una variabile predefinita fornita da Vertex AI Search per misurare la pertinenza di un documento. Il punteggio va da 0 a 1,0, limiti inclusi.dotProduct()
: una funzione predefinita fornita da Vertex AI Search. Devi fornire lo stesso nome di campo a questa funzione che hai utilizzato perembeddingVector.fieldPath
.
Ad esempio:
0.3 * relevance_score
0.5 * relevance_score + 0.3 * dotProduct(example_embedding_field)
REST
Per fornire la stessa specifica di incorporamento a tutte le richieste di ricerca,
aggiorna servingConfig
con il embeddingConfig
.
Applica la patch all'entità
servingConfig
con i campi che vuoi aggiornare. Specifica i campi che stai aggiornando conupdateMask
.Nell'esempio seguente,
embeddingConfig
utilizza gli embedding nel campoexample_embedding_field
e assegna un peso di 0,5 arelevance_score
.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
: il nome del campo che hai mappato alla proprietà della chiave di incorporamento.ranking_expression
: controlla il ranking dei risultati. Le variabili vengono ponderate in base all'espressione inserita. L'espressione di ranking è una singola funzione o più funzioni unite da+
nel formatofunction, { " + ", function }
.
Le funzioni supportate sono:
DOUBLE * relevance_score
DOUBLE * dotProduct(EMBEDDING_FIELD_PATH)
Sono accettate le seguenti variabili:
relevance_score
: una variabile predefinita fornita da Vertex AI Search.dotProduct()
: una funzione predefinita fornita da Vertex AI Search. Il prodotto scalare è normalizzato. Devi fornire a questa funzione lo stesso nome di campo utilizzato perembeddingVector.fieldPath
.
Ad esempio:
0.3 * relevance_score
0.5 * relevance_score + 0.3 * dotProduct(example_embedding_field)
Quando invii richieste di ricerca, il valore di
servingConfig.embeddingConfig
incluse automaticamente.Se invii una richiesta di ricerca che include esplicitamente un
embeddingSpec
diverso, questo sostituisceservingConfig.embeddingConfig
. Consulta le Istruzioni Per richiesta su come fornire le specifiche di incorporamento per singole richieste di ricerca.
Specificare un'incorporazione per richiesta di ricerca
Puoi fornire una specifica di incorporamento per una singola richiesta di ricerca utilizzando l'API. Una specifica di incorporamento per richiesta sostituisce qualsiasi incorporamento globale la specifica del container.
Invia una richiesta di ricerca che includa
embeddingSpec
.Il seguente esempio di
embeddingSpec
utilizza gli embedding nel campoexample_embedding_field
, specifica "Query di esempio" come vettore di input e assegna un peso di 0,5 arelevance_score
e 0,3 aexample_embedding_field
durante il calcolo del ranking."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
: il nome del campo che hai mappato all'incorporamento proprietà della chiave.vector
: il vettore di input fornito come array.ranking_expression
: controlla il ranking dei risultati. Le variabili vengono ponderate in base all'espressione inserita. L'espressione di ranking è una singola funzione o più funzioni unite da+
nel formatofunction, { " + ", function }
.Le funzioni supportate sono:
DOUBLE * relevance_score
DOUBLE * dotProduct(EMBEDDING_FIELD_PATH)
Sono accettate le seguenti variabili:
relevance_score
: una variabile predefinita fornita da Vertex AI Search per misurare la pertinenza di un documento. Il punteggio va da 0 a 1,0, limiti inclusi.dotProduct()
: una funzione predefinita fornita da Vertex AI Search. Devi specificare lo stesso nome di campo a questa funzione come hai fatto perembeddingVector.fieldPath
.
Ad esempio:
0.3 * relevance_score
0.5 * relevance_score + 0.3 * dotProduct(example_embedding_field)
Visualizza i risultati nella risposta di ricerca. Ogni risultato di ricerca include la sua pertinenza il punteggio e i valori dei prodotti. Ad esempio:
"modelScores": { "dotProduct(example_embedding_field)": [0.02150772698223591], "relevance_score": [ 0.8828125 ] }
dotProduct()
: il prodotto scalare calcolato per il documento del risultato di ricerca.relevance_score
: il punteggio di pertinenza calcolato per il documento del risultato di ricerca.
Passaggi successivi
- Prepara i dati per l'importazione.
- Aggiornare uno schema.
- Visualizzare l'anteprima dei risultati di ricerca.
- Per comprendere l'impatto degli incorporamenti personalizzati sulla qualità della ricerca di un'app di ricerca generica, valuta la qualità della ricerca. Per ulteriori informazioni, consulta Valutare la qualità della ricerca.