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. Ad 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 embedding per i profili utente e vuoi utilizzarli per creare un ranking dei documenti personalizzato e semanticamente pertinente. Puoi utilizzare i tuoi embedding per ottenere un ranking basato sulla personalizzazione, che può aumentare gli embedding dei documenti di Google per il ranking basato sulla pertinenza.
Per utilizzare i tuoi incorporamenti:
- Prima di iniziare: verifica che gli elementi incorporati soddisfino tutti i requisiti
- Importa i dati con gli embedding: importa i documenti con i relativi embedding
- Aggiorna lo schema: aggiorna lo schema con i campi della proprietà principale 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 embedding sono supportati per i dati strutturati e non strutturati con metadati
- Gli embedding devono essere forniti come array unidimensionali
- La dimensione dell'embedding deve essere compresa tra 1 e 768 inclusi
- 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 i tuoi incorporamenti
- Al momento, le designazioni delle proprietà chiave dei campi di incorporamento non possono essere rimosse dopo essere state impostate
Importa i dati con le rappresentazioni distribuite
Puoi importare gli incorporamenti di un documento in uno o due campi inclusi nei dati o nei metadati del documento durante l'importazione.
Per importare i dati con le rappresentazioni distribuite:
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 la preparazione dei dati strutturati nella documentazione Preparare i dati per l'importazione.
Dati non strutturati con metadati: quando prepari i dati, includi l'embedding di ogni 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 embedding deve essere fornito nel proprio campo nei metadati del documento, ad esempio:
"example_embedding_vector": [0.1, 0.2, 0.3 ...]
Segui le indicazioni per preparare i dati non strutturati con i metadati per il tuo metodo di importazione (Cloud Storage o BigQuery) nella documentazione Preparare i dati per l'importazione.
Segui le istruzioni per il tuo tipo di dati in Creare un motore e importare i dati con Vertex AI Search per importare i documenti con gli incorporamenti.
Aggiorna quindi lo schema in modo da utilizzare i campi di incorporamento corretti.
Aggiorna lo schema
Aggiorna lo schema con le mappature delle proprietà chiave e le dimensioni per i campi di 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 hai 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 hai 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:
Seguendo le istruzioni REST riportate in Aggiornare uno schema, specifica la mappatura della proprietà chiave 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 JSON formattato sopra verrà 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 tuo datastore.
Quindi, specifica l'embedding.
Specifica l'embedding
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'incorporazione:
- 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'evidenziazione per richiesta di ricerca: invia
embeddingSpec
in ogni richiesta di ricerca utilizzando 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, aggiorna le impostazioni di pubblicazione con una specifica di incorporamento.
Nella console Google Cloud, vai alla pagina Agent Builder.
Fai clic su Visualizza per l'datastore con lo schema da aggiornare.
Vai alla pagina Configurazioni e fai clic sulla scheda Pubblicazione.
In Percorso campo di embedding, inserisci il nome del campo che hai mappato alla proprietà della chiave di embedding.
In Espressione di ranking, inserisci una o più funzioni per controllare 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, inclusi i limiti.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 embeddingConfig
.
Esegui il patch dell'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,
servingConfig.embeddingConfig
viene incluso automaticamente.Se invii una richiesta di ricerca che include esplicitamente un
embeddingSpec
diverso, questo sostituisceservingConfig.embeddingConfig
. Consulta le istruzioni su come fornire specifiche di incorporamento per singole richieste di ricerca nell'articolo Per richiesta.
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 specifica di incorporamento globale.
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 alla proprietà della chiave di incorporamento.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, inclusi i limiti.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)
Visualizza i risultati nella risposta di ricerca. Ogni risultato di ricerca include il relativo voto di pertinenza e i valori del prodotto indotto. 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.
- Aggiorna 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.