En esta guía se proporciona información sobre los metadatos opcionales de las inserciones vectoriales. La búsqueda de vectores te permite definir metadatos para cada incrustación.
Los metadatos son información arbitraria que no se puede filtrar y que Vector Search puede almacenar para cada inserción. De esta forma, se pueden proporcionar inserciones con contexto útil, como:
Detalles del producto, como el nombre, el precio y la URL de una imagen.
Descripciones, fragmentos, fechas y autoría de las incrustaciones de texto.
Información de usuario para las inserciones de usuario.
Coordenadas de las inserciones de sitios.
Características y ventajas principales
Estas son algunas de las funciones y ventajas de usar metadatos:
Contexto con resultados: la información se puede proporcionar directamente en los resultados de búsqueda, lo que elimina la necesidad de realizar búsquedas independientes y reduce la latencia.
Estructura flexible: los metadatos se proporcionan como un objeto JSON, lo que permite que se definan como datos complejos y anidados.
No se puede filtrar: los metadatos de las incrustaciones de vectores se usan para almacenar y recuperar información que no se puede filtrar y que es distinta de
restricts
ynumeric_restricts
.Actualizaciones eficientes: el campo
update_mask
te permite especificar que las APIs solo actualicen los metadatos para evitar volver a enviar los vectores de inserción.Información desacoplada: la información que no se puede filtrar se puede separar de los atributos que sí se pueden filtrar, como
restricts
.Desarrollo optimizado: las respuestas de búsqueda incluyen metadatos asociados a una inserción de vector, lo que reduce la complejidad necesaria para funciones como mostrar resultados de búsqueda enriquecidos y realizar un posprocesamiento basado en el contexto.
Formato de datos
El campo embedding_metadata
opcional contiene un objeto JSON que asocia de forma flexible información enriquecida y no filtrable con las inserciones en la búsqueda de vectores. De esta forma, se pueden optimizar las aplicaciones, ya que se devuelve el contexto
con los resultados, y se pueden hacer actualizaciones eficientes solo de metadatos mediante update_mask
para la API upsertDatapoints
.
Estructura de un punto de datos de ejemplo:
{
"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
Ingerir datos con embedding_metadata
Al añadir puntos de datos, puedes incluir embedding_metadata
cuando se produzca una de las siguientes acciones:
- Subir un archivo (Cloud Storage):
- Usa los formatos JSON o AVRO.
El formato CSV no se admite en
embedding_metadata
.
- Usa los formatos JSON o AVRO.
El formato CSV no se admite en
- Con la API
upsertDatapoints
:- Transfiere objetos de punto de datos (incluido
embedding_metadata
) en la carga útil de la solicitud a la API.
- Transfiere objetos de punto de datos (incluido
Obtener embedding_metadata
durante las consultas
Cuando se realiza una búsqueda estándar de vecinos más cercanos mediante la API findNeighbors
, el campo embedding_metadata
de cada vecino se incluye automáticamente en la respuesta si returnFullDatapoint
se define como 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}'
Actualizando embedding_metadata
Actualiza los metadatos con la API upsertDatapoints
y un update_mask
con el valor embedding_metadata
. El campo update_mask
también puede incluir valores de máscara adicionales. Para ver los usos de una máscara de campo, consulta Actualizar metadatos de inserciones.
El campo update_mask
ayuda a asegurarse de que solo se actualice embedding_metadata
, lo que evita que se vuelvan a enviar los campos de restricción e inserción.
En el siguiente ejemplo se muestra cómo definir y actualizar metadatos para crear un IndexDatapoint
específico, especificar update_mask
y llamar a 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"}'