Utilizza embedding personalizzati

Se hai già creato i tuoi incorporamenti vettoriali personalizzati per i tuoi dati, puoi caricarli su Vertex AI Search e utilizzarli quando esegui query con Vertex AI Search.

Questa funzionalità è disponibile per i datastore con dati strutturati personalizzati o dati non strutturati con metadati. Questa funzionalità non è disponibile per la ricerca di contenuti multimediali e servizi sanitari.

Per impostazione predefinita, Vertex AI Search genera automaticamente gli embedding vettoriali senza alcuna configurazione necessaria. Se non hai familiarità con la creazione di incorporamenti, Google consiglia di lasciare che Vertex AI Search crei e utilizzi gli incorporamenti per te. Tuttavia, se hai creato i tuoi incorporamenti per i tuoi dati, potresti preferire utilizzarli anziché quelli generati da Vertex AI Search, soprattutto se i tuoi incorporamenti personalizzati contengono un contesto aggiuntivo che può arricchire il recupero e il ranking della ricerca. Ad esempio:

  • I tuoi incorporamenti sono stati addestrati su parole personalizzate, come termini interni la cui somiglianza semantica non verrebbe acquisita dall'addestramento su dati pubblici, ad esempio termini specifici dell'organizzazione che compaiono solo in documenti privati.
  • Hai creato incorporamenti per i profili utente e vuoi utilizzarli per creare una classifica dei documenti personalizzata e semanticamente pertinente. Puoi utilizzare i tuoi incorporamenti per ottenere una classificazione basata sulla personalizzazione, che può aumentare gli incorporamenti di documenti di Google per la classificazione basata sulla pertinenza.

Per utilizzare i tuoi incorporamenti:

  1. Prima di iniziare: verifica che gli incorporamenti soddisfino tutti i requisiti
  2. Importa i dati con gli incorporamenti: importa i documenti con i relativi incorporamenti
  3. Aggiorna lo schema: aggiorna lo schema con i campi delle proprietà chiave e le specifiche delle dimensioni
  4. Specifica l'incorporamento: specifica l'incorporamento a livello globale o per richiesta di ricerca.

Prima di iniziare

Prima di iniziare, assicurati che gli incorporamenti 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 dimensionalità dell'incorporamento 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 delle 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 l'impostazione

Importare dati con incorporamenti

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 dati con incorporamenti:

  1. Prepara i dati per l'importazione a seconda del tipo di dati:

    • Dati strutturati: quando prepari i dati, includi gli incorporamenti di ogni documento come array unidimensionali in uno o due campi del documento. Puoi fornire fino a due incorporamenti (ad esempio, se test A/B tra incorporamenti). Ogni incorporamento deve essere fornito nel proprio campo nel documento, ad esempio: "example_embedding_vector": [0.1, 0.2, 0.3 ...]

      Segui le indicazioni per preparare i dati strutturati nella documentazione Preparare i dati per l'importazione.

    • Dati non strutturati con metadati: quando prepari i dati, includi l'incorporamento di ogni documento come array unidimensionale in un campo nei metadati del documento. Puoi fornire fino a due incorporamenti (ad esempio, quando esegui un test A/B tra incorporamenti). Ogni incorporamento 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.

  2. Segui le istruzioni per il tuo tipo di dati in Creare un datastore di ricerca per importare i documenti con gli incorporamenti.

Successivamente, aggiorna lo schema per utilizzare i campi di incorporamento corretti.

Aggiornare lo schema

Aggiorna lo schema con i mapping 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 :

  1. Nella Google Cloud console, vai alla pagina AI Applications.

    Applicazioni di AI

  2. Nel menu di navigazione, fai clic su Datastore.

  3. Nella colonna Nome, fai clic sul datastore con lo schema che vuoi aggiornare.

  4. Fai clic sulla scheda Schema per visualizzare lo schema dei tuoi dati.

  5. Fai clic sul pulsante Edit (Modifica).

  6. Trova il campo di incorporamento nello schema e nella colonna Proprietà chiave seleziona embedding_vector come proprietà chiave per quel campo.

    Se hai un secondo campo di incorporamento, ripeti questo passaggio per quel campo.

  7. 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.

  8. 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 datastore.

REST

Per aggiornare lo schema utilizzando l'API, segui questi passaggi:

  1. Segui le istruzioni REST in Aggiornare uno schema, specifica il mapping della proprietà chiave e il numero di dimensioni per ogni campo di incorporamento:

    • "keyPropertyMapping": "embedding_vector"
    • "dimension": NUMBER_OF_DIMENSIONS

    Ad esempio, ecco 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 schema di aggiornamento, il JSON formattato sopra verrà incluso come 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.

Poi, specifica l'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:

Specificare un embedding a livello globale

Puoi specificare lo stesso embedding in tutte le richieste di ricerca utilizzando la consoleGoogle 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.

  1. Nella Google Cloud console, vai alla pagina AI Applications.

    Applicazioni di AI

  2. Fai clic su Visualizza per il datastore con lo schema che vuoi aggiornare.

  3. Vai alla pagina Configurazioni e fai clic sulla scheda Pubblicazione.

  4. Per Percorso campo di embedding, inserisci il nome del campo che hai mappato alla proprietà della chiave di embedding.

  5. Per Espressione di ranking, inserisci una o più funzioni per controllare il ranking dei risultati. Le variabili vengono ponderate in base all'espressione che inserisci. L'espressione di ranking è una singola funzione o più funzioni unite da + nel formato function, { " + ", 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, limiti inclusi.
    • dotProduct(): una funzione predefinita fornita da Vertex AI Search. Devi fornire lo stesso nome campo a questa funzione come hai fatto per embeddingVector.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.

  1. Applica una patch all'entità servingConfig con i campi che vuoi aggiornare. Specifica i campi che stai aggiornando con updateMask.

    Nell'esempio seguente, embeddingConfig utilizza gli incorporamenti nel campo example_embedding_field e assegna un peso di 0,5 a relevance_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 che inserisci. L'espressione di ranking è una singola funzione o più funzioni unite da + nel formato function, { " + ", 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 campo che hai fornito per embeddingVector.fieldPath.

    Ad esempio:

    • 0.3 * relevance_score
    • 0.5 * relevance_score + 0.3 * dotProduct(example_embedding_field)
  2. Quando invii richieste di ricerca, servingConfig.embeddingConfig viene incluso automaticamente.

    Se invii una richiesta di ricerca che include esplicitamente un embeddingSpec diverso, questo sostituisce servingConfig.embeddingConfig. Consulta le istruzioni Per richiesta per scoprire come fornire le specifiche di incorporamento per le singole richieste di ricerca.

Specificare un embedding 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.

  1. Invia una richiesta di ricerca che includa embeddingSpec.

    Il seguente esempio di embeddingSpec utilizza gli incorporamenti nel campo example_embedding_field, specifica "Query di esempio" come vettore di input e assegna un peso di 0,5 a relevance_score e di 0,3 a example_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 che inserisci. L'espressione di ranking è una singola funzione o più funzioni unite da + nel formato function, { " + ", 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, limiti inclusi.
      • dotProduct(): una funzione predefinita fornita da Vertex AI Search. Devi fornire lo stesso nome campo a questa funzione come hai fatto per embeddingVector.fieldPath.

      Ad esempio:

      • 0.3 * relevance_score
      • 0.5 * relevance_score + 0.3 * dotProduct(example_embedding_field)
  2. Ricevi i risultati nella risposta di ricerca. Ogni risultato di ricerca include il relativo punteggio di pertinenza e i valori del prodotto scalare. 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 dei risultati di ricerca.

Passaggi successivi