Questa guida fornisce informazioni sui metadati facoltativi per gli embedding vettoriali. Vector Search ti consente di definire i metadati per ogni embedding.
I metadati sono informazioni arbitrarie non filtrabili che Vector Search può memorizzare per ogni incorporamento. In questo modo è possibile fornire embedding con un contesto utile, ad esempio:
Dettagli del prodotto, come nome, prezzo e URL di un'immagine.
Descrizioni, snippet, date e paternità per gli incorporamenti di testo.
Informazioni utente per gli incorporamenti utente.
Coordinate per gli incorporamenti di luoghi.
Funzionalità e vantaggi principali
Le funzionalità e i vantaggi dell'utilizzo dei metadati includono:
Contesto con i risultati: le informazioni possono essere fornite direttamente nei risultati di ricerca, il che elimina la necessità di ricerche separate e riduce la latenza.
Struttura flessibile: i metadati vengono forniti come oggetto JSON, il che consente di definirli come dati complessi e nidificati.
Non filtrabile: i metadati di vector embedding vengono utilizzati per archiviare e recuperare informazioni non filtrabili distinte da
restricts
enumeric_restricts
.Aggiornamenti efficienti: il campo
update_mask
ti consente di specificare che le API aggiornano solo i metadati per evitare di inviare nuovamente i vettori di incorporamento.Informazioni disaccoppiate: le informazioni non filtrabili possono essere separate dagli attributi filtrabili come
restricts
.Sviluppo semplificato: le risposte di ricerca includono i metadati associati a un incorporamento vettoriale, riducendo la complessità necessaria per funzionalità come la visualizzazione di risultati di ricerca avanzati e l'esecuzione di post-elaborazione basata sul contesto.
Formato dei dati
Un campo embedding_metadata
facoltativo contiene un oggetto JSON che
associa in modo flessibile informazioni avanzate e non filtrabili agli incorporamenti nella
ricerca vettoriale. In questo modo è possibile semplificare le applicazioni restituendo il contesto
con i risultati e consentire aggiornamenti efficienti solo dei metadati utilizzando update_mask
per l'API upsertDatapoints
.
Esempio di struttura del punto dati:
{
"id": "movie_001",
"embedding": [0.1, 0.2, ..., 0.3],
"sparse_embedding": {
"values": [-0.4, 0.2, -1.3],
"dimensions": [10, 20, 30]
},
"numeric_restricts": [{'namespace': 'year', 'value_int': 2022}],
"restricts": [{'namespace': 'genre', 'allow': ['action', 'comedy']}],
# --- New embedding_metadata field ---
"embedding_metadata": {
"title": "Ballet Train",
"runtime": {
"hours": 2,
"minutes": 6
},
"review_info": {
"review": "This movie is fun and...",
"rotten_potatoes_rating": 76
}
}
# ------------------------------------
},
# ... other data points
Importazione di dati con embedding_metadata
Quando aggiungi punti dati, puoi includere embedding_metadata
quando si verifica una delle
seguenti azioni:
- Caricamento di un file (Cloud Storage):
- Utilizza i formati JSON o AVRO.
Il formato CSV non è supportato per
embedding_metadata
.
- Utilizza i formati JSON o AVRO.
Il formato CSV non è supportato per
- Utilizzo dell'API
upsertDatapoints
:- Trasmetti gli oggetti punto dati (incluso
embedding_metadata
) nel payload della richiesta API.
- Trasmetti gli oggetti punto dati (incluso
Recupero di embedding_metadata
durante le query
Quando esegui una ricerca standard del vicino più vicino utilizzando l'API
findNeighbors
, il campo embedding_metadata
per ogni vicino viene
incluso automaticamente nella risposta se returnFullDatapoint
è impostato su True
.
curl
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://${PUBLIC_ENDPOINT_DOMAIN}/v1/projects/${PROJECT_ID}/locations/${LOCATION}/indexEndpoints/${INDEX_ENDPOINT_ID}:findNeighbors" \
-d '{deployedIndexId:"${DEPLOYED_INDEX_ID}", "queries":[{datapoint:{"featureVector":"<FEATURE_VECTOR>"}}], returnFullDatapoint:true}'
Aggiornamento di embedding_metadata
in corso…
Aggiorna i metadati utilizzando l'API upsertDatapoints
e un update_mask
utilizzando il valore embedding_metadata
. Il campo update_mask
potrebbe anche
includere valori di maschera aggiuntivi. Per gli utilizzi di una maschera di campo, vedi
Aggiornare i metadati di incorporamento.
Il campo update_mask
contribuisce a garantire che venga aggiornato solo embedding_metadata
,
evitando il reinvio dei campi di limitazione e incorporamento.
L'esempio seguente mostra come definire e aggiornare i metadati per creare un
IndexDatapoint
mirato, specificando update_mask
e chiamando
upsertDatapoints
.
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/${LOCATION}/indexes/${INDEX_ID}:upsertDatapoints \
-d '{
datapoints:[
{
datapoint_id: "'${DATAPOINT_ID_1}'",
feature_vector: [...],
embedding_metadata:{"title": "updated title", "rating": 4.5, "tags": ["updated", "reviewed"]
}, update_mask: "embedding_metadata"}'