Con le query di ricerca di grandi dimensioni, l'aggiornamento degli indici è importante per avere sempre le informazioni più accurate. Puoi aggiornare gli indici della ricerca vettoriale in diversi modi:
- Sostituire un intero indice
- Aggiornare parzialmente un indice batch
- Aggiornare parzialmente un indice di streaming
- Aggiornare i metadati dell'indice
Sostituire un intero indice
Per sostituire i contenuti di un aggiornamento batch o di uno streaming Index
esistente,
utilizza il metodo IndexService.UpdateIndex
.
- Imposta
Index.metadata.contentsDeltaUri
sull'URI Cloud Storage che include i vettori che vuoi aggiornare. - Imposta
Index.metadata.isCompleteOverwrite
su true. Se impostato su true, l'intero indice viene sovrascritto completamente con il nuovo file di metadati che fornisci.
gcloud
- Aggiorna il file di metadati dell'indice per impostare
contentsDeltaUri
eisCompleteOverwrite=true
. - Utilizza il comando
gcloud ai indexes update
.
Prima di utilizzare i dati dei comandi riportati di seguito, apporta le seguenti sostituzioni:
- LOCAL_PATH_TO_METADATA_FILE: il percorso locale del file di metadati.
- INDEX_ID: l'ID dell'indice.
- LOCATION: la regione in cui utilizzi Vertex AI.
- PROJECT_ID: il tuo Google Cloud ID progetto.
Esegui questo comando:
Linux, macOS o Cloud Shell
gcloud ai indexes update INDEX_ID \ --metadata-file=LOCAL_PATH_TO_METADATA_FILE \ --region=LOCATION \ --project=PROJECT_ID
Windows (PowerShell)
gcloud ai indexes update INDEX_ID ` --metadata-file=LOCAL_PATH_TO_METADATA_FILE ` --region=LOCATION ` --project=PROJECT_ID
Windows (cmd.exe)
gcloud ai indexes update INDEX_ID ^ --metadata-file=LOCAL_PATH_TO_METADATA_FILE ^ --region=LOCATION ^ --project=PROJECT_ID
REST
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- INPUT_DIR: il percorso della directory Cloud Storage del contenuto dell'indice.
- INDEX_ID: l'ID dell'indice.
- LOCATION: la regione in cui utilizzi Vertex AI.
- PROJECT_ID: il tuo Google Cloud ID progetto.
- PROJECT_NUMBER: il numero di progetto generato automaticamente per il tuo progetto.
Metodo HTTP e URL:
PATCH https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/indexes/INDEX_ID
Corpo JSON della richiesta:
{ "metadata": { "contentsDeltaUri": "INPUT_DIR", "isCompleteOverwrite": true } }
Per inviare la richiesta, espandi una di queste opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION/indexes/INDEX_ID/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.aiplatform.v1.UpdateIndexOperationMetadata", "genericMetadata": { "createTime": "2022-01-12T23:56:14.480948Z", "updateTime": "2022-01-12T23:56:14.480948Z" } } }
Python
Per scoprire come installare o aggiornare l'SDK Vertex AI Python, consulta Installare l'SDK Vertex AI Python. Per saperne di più, consulta la documentazione di riferimento dell'API Python.
Quando richiami il metodo riportato di seguito, imposta is_complete_overwrite=True
per sostituire completamente i contenuti dell'indice.
Console
Segui queste istruzioni per aggiornare i contenuti di un indice batch.
- Nella sezione Vertex AI della console Google Cloud , vai alla sezione Deployment e utilizzo. Seleziona Vector Search.
- Seleziona l'indice che vuoi aggiornare. Viene visualizzata la pagina Informazioni indice.
- Seleziona Modifica indice. Si apre un riquadro di modifica dell'indice.
- Nel campo Cloud Storage, cerca e seleziona la cartella Cloud Storage in cui sono archiviati i dati vettoriali.
- Seleziona la casella Sovrascrittura completa per sovrascrivere tutti i dati esistenti.
- Fai clic su Aggiorna.
- Fai clic su Fine per chiudere il riquadro.
Aggiorna parzialmente un indice batch
Per aggiornare gli incorporamenti di un batch Index
esistente, utilizza il
metodo IndexService.UpdateIndex
.
- Imposta
Index.metadata.contentsDeltaUri
sull'URI Cloud Storage che include i vettori che vuoi aggiornare. - Imposta
Index.metadata.isCompleteOverwrite
su false.
Vengono aggiornati, inseriti o eliminati solo i vettori specificati in Index.metadata.contentsDeltaUri
. Gli altri incorporamenti esistenti nell'indice rimangono.
gcloud
- Aggiorna il file di metadati dell'indice per impostare
contentsDeltaUri
. - Utilizza il comando
gcloud ai indexes update
.
Prima di utilizzare i dati dei comandi riportati di seguito, apporta le seguenti sostituzioni:
- LOCAL_PATH_TO_METADATA_FILE: il percorso locale del file di metadati.
- INDEX_ID: l'ID dell'indice.
- LOCATION: la regione in cui utilizzi Vertex AI.
- PROJECT_ID: il tuo Google Cloud ID progetto.
Esegui questo comando:
Linux, macOS o Cloud Shell
gcloud ai indexes update INDEX_ID \ --metadata-file=LOCAL_PATH_TO_METADATA_FILE \ --region=LOCATION \ --project=PROJECT_ID
Windows (PowerShell)
gcloud ai indexes update INDEX_ID ` --metadata-file=LOCAL_PATH_TO_METADATA_FILE ` --region=LOCATION ` --project=PROJECT_ID
Windows (cmd.exe)
gcloud ai indexes update INDEX_ID ^ --metadata-file=LOCAL_PATH_TO_METADATA_FILE ^ --region=LOCATION ^ --project=PROJECT_ID
REST
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- INPUT_DIR: il percorso della directory Cloud Storage del contenuto dell'indice.
- INDEX_ID: l'ID dell'indice.
- LOCATION: la regione in cui utilizzi Vertex AI.
- PROJECT_ID: il tuo Google Cloud ID progetto.
- PROJECT_NUMBER: il numero di progetto generato automaticamente per il tuo progetto.
Metodo HTTP e URL:
PATCH https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/indexes/INDEX_ID
Corpo JSON della richiesta:
{ "metadata": { "contentsDeltaUri": "INPUT_DIR", "isCompleteOverwrite": false } }
Per inviare la richiesta, espandi una di queste opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION/indexes/INDEX_ID/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.aiplatform.v1.UpdateIndexOperationMetadata", "genericMetadata": { "createTime": "2022-01-12T23:56:14.480948Z", "updateTime": "2022-01-12T23:56:14.480948Z" } } }
Python
Per scoprire come installare o aggiornare l'SDK Vertex AI Python, consulta Installare l'SDK Vertex AI Python. Per saperne di più, consulta la documentazione di riferimento dell'API Python.
Quando richiami il metodo riportato di seguito, imposta is_complete_overwrite=False
.
Console
Segui queste istruzioni per aggiornare i contenuti di un indice batch.
- Nella sezione Vertex AI della console Google Cloud , vai alla sezione Deployment e utilizzo. Seleziona Vector Search.
- Seleziona l'indice che vuoi aggiornare. Viene visualizzata la pagina Informazioni indice.
- Seleziona Modifica indice. Si apre un riquadro di modifica dell'indice.
- Nel campo Cloud Storage, cerca e seleziona la cartella Cloud Storage in cui sono archiviati i dati vettoriali.
- Assicurati che la casella Sovrascrittura completa non sia selezionata.
- Fai clic su Aggiorna.
- Fai clic su Fine per chiudere il riquadro.
Se Index
ha implementazioni associate
(vedi il campo Index.deployed_indexes
), quando vengono apportate determinate modifiche a
Index
originale, DeployedIndex
viene aggiornato automaticamente
in modo asincrono in background per riflettere queste modifiche.
Per verificare se la modifica è stata propagata, confronta l'ora di fine dell'operazione di aggiornamento dell'indice
e DeployedIndex.index_sync_time
.
Aggiornare parzialmente un indice di streaming
Con gli aggiornamenti in modalità di flusso, puoi aggiornare ed eseguire query sull'indice in pochi secondi. Al momento, non puoi utilizzare gli aggiornamenti in streaming su un indice di aggiornamento batch esistente, devi creare un nuovo indice. Per saperne di più, consulta Creare un indice per l'aggiornamento in streaming.
Ti vengono addebitati 0,45 $per GB utilizzato per gli aggiornamenti in streaming. Per saperne di più sui prezzi, consulta la pagina dei prezzi di Vertex AI. Gli aggiornamenti dello streaming vengono applicati direttamente agli indici di cui è stato eseguito il deployment in memoria, che vengono poi riportati nei risultati delle query dopo un breve ritardo.
Upsert dei punti dati
Utilizza questi esempi per scoprire come eseguire l'upsert di un punto dati. Ricorda che upsert-datapoints
accetta solo JSON in formato array.
Python
Python
Curl
Il limite della quota di velocità effettiva si riferisce alla quantità di dati inclusi in un upsert. Se l'ID punto dati esiste nell'indice, l'incorporamento viene aggiornato, altrimenti viene aggiunto un nuovo incorporamento.
DATAPOINT_ID_1=
DATAPOINT_ID_2=
curl -H "Content-Type: application/json" -H "Authorization: Bearer `gcloud auth print-access-token`" https://${LOCATION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${LOCATION}/indexes/${INDEX_ID}:upsertDatapoints \
-d '{datapoints: [{datapoint_id: "'${DATAPOINT_ID_1}'", feature_vector: [...]},
{datapoint_id: "'${DATAPOINT_ID_2}'", feature_vector: [...]}]}'
Con la ricerca ibrida, sono supportate le rappresentazioni di incorporamento sparse e dense per un punto dati. In un'operazione di upsert, l'omissione di un incorporamento denso elimina la rappresentazione densa, mentre l'omissione di un incorporamento sparso elimina la rappresentazione sparsa.
Questo esempio aggiorna sia le rappresentazioni dense che quelle sparse.
curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer `gcloud auth print-access-token`" https://${LOCATION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${LOCATION}/indexes/${INDEX_ID}:upsertDatapoints -d '{datapoints: [{datapoint_id: "111", feature_vector: [0.111, 0.111], "sparse_embedding": {"values": [111.0,111.1,111.2], "dimensions": [10,20,30]}}]}'
Questo esempio aggiorna gli incorporamenti densi e rimuove quelli sparsi.
curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer `gcloud auth print-access-token`" https://${LOCATION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${LOCATION}/indexes/${INDEX_ID}:upsertDatapoints -d '{datapoints: [{datapoint_id: "111", feature_vector: [0.111, 0.111]}]}'
Questo esempio aggiorna gli incorporamenti sparsi e rimuove gli incorporamenti densi.
curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer `gcloud auth print-access-token`" https://${LOCATION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${LOCATION}/indexes/${INDEX_ID}:upsertDatapoints -d '{datapoints: [{datapoint_id: "111", "sparse_embedding": {"values": [111.0,111.1,111.2], "dimensions": [10,20,30]}}]}'
Console
Console
Segui queste istruzioni per aggiornare i contenuti a un indice di streaming.
- Nella console Google Cloud , vai alla pagina Vector Search.
- Seleziona l'indice che vuoi aggiornare. Viene visualizzata la pagina Informazioni indice.
- Fai clic su Modifica indice. Si apre un riquadro di modifica dell'indice.
- Nel riquadro, seleziona la scheda Inserisci/Aggiorna punto dati per aggiungere contenuti.
- Inserisci l'ID punto dati.
- Inserisci almeno un tipo di incorporamento:
- Incorporamento denso: inserisci un array di valori in virgola mobile separati da virgola. Il numero di valori deve corrispondere alle dimensioni dell'indice.
- Embedding sparso:
- Inserisci le dimensioni dell'embedding sparso come array di numeri interi separati da virgole. Il numero di valori non deve corrispondere alle dimensioni dell'indice.
- Inserisci i valori come array di valori in virgola mobile separati da virgole. Il numero di valori deve corrispondere al numero di dimensioni di embedding sparso.
- (Facoltativo) Per attivare il filtro in base alle limitazioni dei token in questo punto dati, fai clic su Aggiungi limitazione dei token e poi inserisci uno spazio dei nomi e stringhe separate da virgole come token.
- (Facoltativo) Per attivare il filtro in base alle limitazioni numeriche su questo punto dati, fai clic su Aggiungi limitazione numerica, inserisci uno spazio dei nomi, seleziona un tipo di numero e inserisci un valore.
- (Facoltativo) Per evitare molti risultati simili, inserisci una stringa di tag di affollamento.
- Fai clic su Upsert.
- Fai clic su Fine per chiudere il riquadro.
Il limite della quota di velocità effettiva si riferisce alla quantità di dati inclusi in un upsert. Se l'ID punto dati esiste nell'indice, l'incorporamento viene aggiornato, altrimenti viene aggiunto un nuovo incorporamento.
Aggiornare i metadati di incorporamento
Esistono molti motivi per cui potresti dover aggiornare le limitazioni dello streaming o le limitazioni numeriche. Ad esempio, quando si ha a che fare con dati ad alto volume e in rapido movimento, potresti voler dare la priorità a determinati stream di dati. L'aggiornamento diretto delle restrizioni o delle restrizioni numeriche ti consente di perfezionare la messa a fuoco in tempo reale, garantendo che i dati più importanti vengano elaborati o evidenziati immediatamente.
Puoi aggiornare direttamente i limiti dei punti dati e i limiti numerici all'interno di un indice di streaming senza il costo di compattazione dell'aggiornamento completo.
Per eseguire questi aggiornamenti solo dei metadati, devi aggiungere il campo update_mask
alla richiesta. Il valore di update_mask
deve essere impostato su all_restricts
.
I valori di limitazione e limitazione numerica impostati nei punti dati devono essere
i nuovi valori da applicare nell'aggiornamento.
L'esempio seguente mostra come aggiungere restrizioni a due punti dati esistenti.
DATAPOINT_ID_1=
DATAPOINT_ID_2=
curl -H "Content-Type: application/json" -H "Authorization: Bearer `gcloud auth print-access-token`" https://${LOCATION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${LOCATION}/indexes/${INDEX_ID}:upsertDatapoints \
-d '{datapoints:
[{datapoint_id: "'${DATAPOINT_ID_1}'", feature_vector: [...], restricts:[{namespace: "color", allow_list: ["red"]}]},
{datapoint_id: "'${DATAPOINT_ID_2}'", feature_vector: [...], restricts:[{namespace: "color", allow_list: ["red"]}]}
], update_mask: "all_restricts"}'
Rimuovi punti dati
Potresti dover rimuovere i punti dati dall'indice di streaming. Puoi eseguire questa operazione utilizzando curl o dalla console Google Cloud .
Un caso d'uso chiave per l'eliminazione di un punto dati da un indice è mantenere la parità tra l'indice e la sua origine nel mondo reale. Prendi in considerazione un libraio che utilizza un embedding vettoriale per rappresentare il proprio inventario di libri a scopo di ricerca e raccomandazione. Quando un libro è esaurito o rimosso dalle scorte, l'eliminazione del punto dati corrispondente dall'indice garantisce che i risultati di ricerca e i consigli rimangano accurati e aggiornati.
Curl
curl -H "Content-Type: application/json" -H "Authorization: Bearer `gcloud auth print-access-token`" https://{LOCATION}-aiplatform.googleapis.com/v1/projects/{PROJECT_ID}/locations/{REGION}/indexes/{INDEX_ID}:removeDatapoints -d '{datapoint_ids: ["'{DATAPOINT_ID_1}'", "'{DATAPOINT_ID_2}'"]}'
Console
Console
Segui queste istruzioni per eliminare un punto dati dall'indice di streaming.
- Nella sezione Vertex AI della console Google Cloud , vai alla sezione Deployment e utilizzo. Seleziona Vector Search.
- Seleziona l'indice di streaming che vuoi aggiornare. Viene visualizzata la pagina Informazioni indice.
- Seleziona Modifica indice. Si apre un riquadro di modifica dell'indice.
- Nel riquadro, seleziona la scheda Rimuovi punti dati.
- Aggiungi fino a 20 punti dati fornendo un elenco delimitato da virgole di ID punti dati
- Fai clic su Rimuovi.
- Fai clic su Fine per chiudere il riquadro.
Python
Python
Aggiorna i metadati dell'indice
IndexService.UpdateIndex
può essere utilizzato anche per aggiornare i campi dei metadati
display_name
, description
e labels
per gli indici batch e di streaming. Tieni presente
che una singola chiamata a UpdateIndex
può aggiornare gli incorporamenti dell'indice o questi
campi di metadati, ma non entrambi contemporaneamente.
gcloud
Prima di utilizzare i dati dei comandi riportati di seguito, apporta le seguenti sostituzioni:
- LOCAL_PATH_TO_METADATA_FILE: il percorso locale del file di metadati.
- INDEX_ID: l'ID dell'indice.
- LOCATION: la regione in cui utilizzi Vertex AI.
- PROJECT_ID: il tuo Google Cloud ID progetto.
Esegui questo comando:
Linux, macOS o Cloud Shell
gcloud ai indexes update INDEX_ID \ --metadata-file=LOCAL_PATH_TO_METADATA_FILE \ --region=LOCATION \ --project=PROJECT_ID
Windows (PowerShell)
gcloud ai indexes update INDEX_ID ` --metadata-file=LOCAL_PATH_TO_METADATA_FILE ` --region=LOCATION ` --project=PROJECT_ID
Windows (cmd.exe)
gcloud ai indexes update INDEX_ID ^ --metadata-file=LOCAL_PATH_TO_METADATA_FILE ^ --region=LOCATION ^ --project=PROJECT_ID
REST
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- INPUT_DIR: il percorso della directory Cloud Storage del contenuto dell'indice.
- INDEX_ID: l'ID dell'indice.
- LOCATION: la regione in cui utilizzi Vertex AI.
- PROJECT_ID: il tuo Google Cloud ID progetto.
- PROJECT_NUMBER: il numero di progetto generato automaticamente per il tuo progetto.
Metodo HTTP e URL:
PATCH https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/indexes/INDEX_ID
Corpo JSON della richiesta:
{ "metadata": { "description": "Updated description", "display_name": "Updated display name" } }
Per inviare la richiesta, espandi una di queste opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION/indexes/INDEX_ID/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.aiplatform.v1.UpdateIndexOperationMetadata", "genericMetadata": { "createTime": "2022-01-12T23:56:14.480948Z", "updateTime": "2022-01-12T23:56:14.480948Z" } } }
Python
Console
Segui queste istruzioni per aggiornare i metadati dell'indice (la console è limitata
all'aggiornamento di display_name
e description
).
- Nella sezione Vertex AI della console Google Cloud , vai alla sezione Deployment e utilizzo. Seleziona Vector Search.
- Seleziona l'indice che vuoi aggiornare. Viene visualizzata la pagina Informazioni indice.
- Seleziona Modifica indice. Si apre un riquadro di modifica dell'indice.
- Aggiorna i campi dei metadati che ti interessano.
- Fai clic su Aggiorna.
- Fai clic su Fine per chiudere il riquadro.
Compattazione
Periodicamente, l'indice viene ricreato per tenere conto di tutti i nuovi aggiornamenti dall'ultima ricreazione. Questa ricompilazione, o "compattazione", migliora le prestazioni e l'affidabilità delle query. Le compressioni si verificano sia per gli aggiornamenti in streaming sia per gli aggiornamenti batch.
Aggiornamento dello streaming: Vector Search utilizza metriche basate sull'euristica per determinare quando attivare la compattazione. Se i dati non compressi più vecchi hanno cinque giorni, la compressione viene sempre attivata. Ti viene addebitato il costo della ricostruzione dell'indice alla stessa tariffa di un aggiornamento batch, oltre ai costi dell'aggiornamento in streaming.
Aggiornamento batch: si verifica quando la dimensione del set di dati incrementale è superiore al 20% della dimensione del set di dati di base.
Ricrea ed esegui query sull'indice
Puoi inviare richieste di corrispondenza o batch come di consueto con la CLI grpc, la libreria client o l'SDK Vertex AI per Python. Quando ricompili la query, puoi aspettarti di vedere gli aggiornamenti entro pochi secondi. Per scoprire come eseguire query su un indice, consulta Eseguire query sugli indici per ottenere i vicini più prossimi.
Campi facoltativi
Quando crei un indice, ci sono alcuni campi facoltativi che puoi utilizzare per perfezionare le query.
Upsert con restrizioni
L'upsert dell'indice e l'aggiunta di una limitazione sono un modo per taggare i punti di dati in modo che siano già identificati per essere filtrati al momento della query. Ti consigliamo di aggiungere tag di limitazione per limitare i risultati presentati nei tuoi dati prima dell'invio di una query. Ad esempio, un cliente vuole eseguire una query su un indice, ma vuole assicurarsi che i risultati mostrino solo gli articoli che corrispondono a "rosso" in una ricerca di calzature. Nell'esempio seguente, l'indice viene aggiornato e filtra tutte le scarpe rosse, ma nega quelle blu. In questo modo, i filtri di ricerca selezionano le opzioni più specifiche da un indice ampio e variegato prima dell'esecuzione.
Oltre alle limitazioni dei token, l'esempio utilizza limitazioni numeriche. In questo caso, il punto dati è associato a un prezzo di 20, una lunghezza di 0,3 e una larghezza di 0,5. Al momento della query, puoi utilizzare queste restrizioni numeriche per filtrare i risultati e limitare i risultati della query in base ai valori di prezzo, lunghezza e larghezza. Ad esempio, questo punto dati viene visualizzato in una query che filtra per prezzo > 25, lunghezza < 1 e larghezza < 1.
Per scoprire di più sul filtraggio, consulta Vector Search per l'indicizzazione.
Python
# Upsert datapoints
_TEST_DATAPOINT_1 = aiplatform_v1.types.index.IndexDatapoint(
datapoint_id="3",
feature_vector=[0.00526886899, -0.0198396724],
restricts=[
aiplatform_v1.types.index.IndexDatapoint.Restriction(namespace="Color", allow_list=["red"])
],
numeric_restricts=[
aiplatform_v1.types.index.IndexDatapoint.NumericRestriction(
namespace="cost",
value_int=1,
)
],
)
_TEST_DATAPOINT_2 = aiplatform_v1.types.index.IndexDatapoint(
datapoint_id="4",
feature_vector=[0.00526886899, -0.0198396724],
numeric_restricts=[
aiplatform_v1.types.index.IndexDatapoint.NumericRestriction(
namespace="cost",
value_double=0.1,
)
],
crowding_tag=aiplatform_v1.types.index.IndexDatapoint.CrowdingTag(crowding_attribute="crowding"),
)
_TEST_DATAPOINT_3 = aiplatform_v1.types.index.IndexDatapoint(
datapoint_id="5",
feature_vector=[0.00526886899, -0.0198396724],
numeric_restricts=[
aiplatform_v1.types.index.IndexDatapoint.NumericRestriction(
namespace="cost",
value_float=1.1,
)
],
)
_TEST_DATAPOINTS = [_TEST_DATAPOINT_1, _TEST_DATAPOINT_2, _TEST_DATAPOINT_3]
my_streaming_index = my_streaming_index.upsert_datapoints(datapoints=_TEST_DATAPOINTS)
# Dynamic metadata update
_TEST_DATAPOINT_4 = aiplatform_v1.types.index.IndexDatapoint(
datapoint_id="-2",
numeric_restricts=[
aiplatform_v1.types.index.IndexDatapoint.NumericRestriction(
namespace="cost",
value_float=1.1,
)
],
)
my_streaming_index = my_streaming_index.upsert_datapoints(datapoints=[_TEST_DATAPOINT4], update_mask=["all_restricts"])
curl
curl -H "Content-Type: application/json" -H "Authorization: Bearer `gcloud auth print-access-token`" https://${ENDPOINT}/v1/projects/${PROJECT_ID}/locations/us-central1/indexes/${INDEX_ID}:upsertDatapoints \
-d '{
datapoints: [
{
datapoint_id: "'${DATAPOINT_ID_1}'",
feature_vector: [...],
restricts: { namespace: "color", allow_list: ["red"], deny_list: ["blue"]},
numeric_restricts: [{namespace: "price", value_int: 20}, {namespace: "length", value_float: 0.3}, {namespace: "width", value_double: 0.5}]
}
]}'
Upsert con raggruppamento
Il tag di crowding limita i risultati simili migliorando la diversità dei risultati.
L'affollamento è un vincolo di un elenco di vicini prodotto da una ricerca del vicino più prossimo
che richiede che non più di un certo valore di un gruppo di risultati restituisca
lo stesso valore di crowding_attribute
. Ad esempio, supponiamo che tu sia tornato online
per acquistare scarpe. Vuoi visualizzare un'ampia varietà di colori nei risultati, ma magari
vuoi che siano in un unico stile, come le scarpe da calcio. Puoi richiedere che vengano restituite non più di 3 paia di scarpe dello stesso colore impostando per_crowding_attribute_num_neighbors
= 3 nella query, supponendo di aver impostato crowding_attribute sul colore delle scarpe durante l'inserimento del punto dati.
Questo campo rappresenta il numero massimo consentito di corrispondenze con lo stesso tag di affollamento.
curl -H "Content-Type: application/json" -H "Authorization: Bearer `gcloud auth print-access-token`" https://${ENDPOINT}/v1/projects/${PROJECT_ID}/locations/us-central1/indexes/${INDEX_ID}:upsertDatapoints \
-d '{
datapoints: [
{
datapoint_id: "'${DATAPOINT_ID_1}'",
feature_vector: [...],
restricts: { namespace: "type", allow_list: ["cleats"]}
crowding_tag: { crowding_attribute: "red-shoe"},
}
]}'
Passaggi successivi
- Scopri di più sui parametri di configurazione dell'indice.
- Scopri come monitorare un indice.