Utilizza embedding personalizzati

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:

  1. Prima di iniziare: verifica che gli elementi incorporati soddisfino tutti i requisiti
  2. Importa i dati con gli embedding: importa i documenti con i relativi embedding
  3. Aggiorna lo schema: aggiorna lo schema con i campi della proprietà principale e le specifiche delle dimensioni
  4. 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:

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

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

  1. Nella console Google Cloud, vai alla pagina Agent Builder.

    Agent Builder

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

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

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

  5. Fai clic sul pulsante Edit (Modifica).

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

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

REST

Per aggiornare lo schema utilizzando l'API:

  1. 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 campoexample_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:

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.

  1. Nella console Google Cloud, vai alla pagina Agent Builder.

    Agent Builder

  2. Fai clic su Visualizza per l'datastore con lo schema da aggiornare.

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

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

  5. 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 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,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 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. Esegui il patch dell'entità servingConfig con i campi che vuoi aggiornare. Specifica i campi che stai aggiornando con updateMask.

    Nell'esempio seguente, embeddingConfig utilizza gli embedding 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 inserita. 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 di campo utilizzato 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 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.

  1. Invia una richiesta di ricerca che includa embeddingSpec.

    Il seguente esempio di embeddingSpec utilizza gli embedding nel campo example_embedding_field, specifica "Query di esempio" come vettore di input e assegna un peso di 0,5 a relevance_score e 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 inserita. 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,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 per embeddingVector.fieldPath.

      Ad esempio:

      • 0.3 * relevance_score
      • 0.5 * relevance_score + 0.3 * dotProduct(example_embedding_field)
  2. 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