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

  1. Prima di iniziare: verifica che gli incorporamenti 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 la proprietà della chiave. i campi 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 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:

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

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

  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 disponi di 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 disponi di 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. 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 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 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:

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.

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

    Agent Builder

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

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

  4. In Percorso campo di incorporamento, inserisci il nome del campo. mappata alla proprietà della chiave di incorporamento.

  5. 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 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, limiti inclusi.
    • 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 il embeddingConfig.

  1. Applica la patch all'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, il valore di servingConfig.embeddingConfig incluse automaticamente.

    Se invii una richiesta di ricerca che include esplicitamente un embeddingSpec diverso, questo sostituisce servingConfig.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.

  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 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 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, limiti inclusi.
      • dotProduct(): una funzione predefinita fornita da Vertex AI Search. Devi specificare lo stesso nome di 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. 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