Ce guide fournit des informations sur les métadonnées facultatives pour les embeddings vectoriels. Vector Search vous permet de définir des métadonnées pour chaque embedding.
Les métadonnées sont des informations arbitraires non filtrables que la recherche vectorielle peut stocker pour chaque embedding. Cela peut fournir des embeddings avec un contexte utile, par exemple :
Informations sur le produit, comme son nom, son prix et l'URL de son image
Descriptions, extraits, dates et auteurs pour les embeddings de texte.
Informations utilisateur pour les embeddings utilisateur.
Coordonnées pour les embeddings de lieux.
Principaux avantages et fonctionnalités
Voici quelques avantages de l'utilisation des métadonnées :
Contexte avec les résultats : des informations peuvent être fournies directement dans vos résultats de recherche, ce qui élimine la nécessité d'effectuer des recherches distinctes et réduit la latence.
Structure flexible : les métadonnées sont fournies sous la forme d'un objet JSON, ce qui permet de les définir comme des données complexes et imbriquées.
Non filtrable : les métadonnées d'embedding vectoriel permettent de stocker et de récupérer des informations non filtrables qui sont distinctes de
restricts
etnumeric_restricts
.Mises à jour efficaces : le champ
update_mask
vous permet de spécifier que les API uniquement mettent à jour les métadonnées pour éviter de renvoyer les vecteurs d'intégration.Informations dissociées : les informations non filtrables peuvent être séparées des attributs filtrables tels que
restricts
.Développement simplifié : les réponses de recherche incluent des métadonnées associées à un embedding vectoriel, tout en réduisant la complexité nécessaire pour des fonctionnalités telles que l'affichage de résultats de recherche enrichis et l'exécution d'un post-traitement basé sur le contexte.
Format des données
Un champ embedding_metadata
facultatif contient un objet JSON qui associe de manière flexible des informations riches et non filtrables à des embeddings dans Vector Search. Cela peut simplifier les applications en renvoyant le contexte avec les résultats et permet des mises à jour efficaces des métadonnées uniquement à l'aide de update_mask
pour l'API upsertDatapoints
.
Exemple de structure de point de données :
{
"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
Ingérer des données avec embedding_metadata
Lorsque vous ajoutez des points de données, vous pouvez inclure embedding_metadata
lorsque l'une des actions suivantes se produit :
- Importer un fichier (Cloud Storage) :
- Utilisez les formats JSON ou AVRO.
Le format CSV n'est pas accepté pour
embedding_metadata
.
- Utilisez les formats JSON ou AVRO.
Le format CSV n'est pas accepté pour
- Utiliser l'API
upsertDatapoints
:- Transmettez des objets de points de données (y compris
embedding_metadata
) dans le corps de la requête API.
- Transmettez des objets de points de données (y compris
Récupérer embedding_metadata
lors des requêtes
Lorsque vous effectuez une recherche standard des voisins les plus proches à l'aide de l'API findNeighbors
, le champ embedding_metadata
de chaque voisin est automatiquement inclus dans la réponse si returnFullDatapoint
est défini sur 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}'
Mise à jour de embedding_metadata
Mettez à jour les métadonnées à l'aide de l'API upsertDatapoints
et d'un update_mask
en utilisant la valeur embedding_metadata
. Le champ update_mask
peut également inclure des valeurs de masque supplémentaires. Pour savoir comment utiliser un masque de champ, consultez Mettre à jour les métadonnées d'embedding.
Le champ update_mask
permet de s'assurer que seul embedding_metadata
est mis à jour, ce qui évite de renvoyer les champs de restriction et d'intégration.
L'exemple suivant montre comment définir et mettre à jour des métadonnées pour créer un IndexDatapoint
ciblé, en spécifiant update_mask
et en appelant 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"}'