Con búsqueda grandes, es importante que actualices los índices para tener siempre la información más precisa. Puedes actualizar los índices de Búsqueda de vectores de diferentes maneras:
- Cómo reemplazar un índice completo
- Cómo actualizar parcialmente un índice por lotes
- Cómo actualizar parcialmente un índice de transmisión
- Actualiza los metadatos del índice
Reemplaza un índice completo
Para reemplazar el contenido de una actualización por lotes existente o una transmisión de Index
, usa el método IndexService.UpdateIndex
.
- Configura
Index.metadata.contentsDeltaUri
como el URI de Cloud Storage que incluye los vectores que deseas actualizar. - Establecer
Index.metadata.isCompleteOverwrite
como verdadero. Cuando se establece como verdadero, todo el índice se reemplaza por completo con el nuevo archivo de metadatos que proporciones.
gcloud
- Actualiza tu archivo de metadatos de índice para establecer
contentsDeltaUri
yisCompleteOverwrite=true
. - Usa el comando
gcloud ai indexes update
.
Antes de usar cualquiera de los datos de comando a continuación, haz los siguientes reemplazos:
- LOCAL_PATH_TO_METADATA_FILE: La ruta de acceso local al archivo de metadatos.
- INDEX_ID: Es el ID del índice.
- LOCATION: la región en la que usas Vertex AI.
- PROJECT_ID: El ID del proyecto de Google Cloud.
Ejecuta el siguiente 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
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- INPUT_DIR: Es la ruta de acceso del directorio de Cloud Storage del contenido del índice.
- INDEX_ID: Es el ID del índice.
- LOCATION: la región en la que usas Vertex AI.
- PROJECT_ID: El ID del proyecto de Google Cloud.
- PROJECT_NUMBER: el número de proyecto de tu proyecto generado de forma automática.
HTTP method and URL:
PATCH https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/indexes/INDEX_ID
Cuerpo JSON de la solicitud:
{ "metadata": { "contentsDeltaUri": "INPUT_DIR", "isCompleteOverwrite": true } }
Para enviar tu solicitud, expande una de estas opciones:
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
{ "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
Si deseas obtener información para instalar o actualizar el SDK de Vertex AI para Python, consulta Instala el SDK de Vertex AI para Python. Si deseas obtener más información, consulta la documentación de referencia de la API de Python.
Cuando invoques el siguiente método, establece is_complete_overwrite=True
para reemplazar por completo el contenido del índice.
Console
Usa estas instrucciones para actualizar el contenido de un índice por lotes.
- En la sección de Vertex AI de la consola de Google Cloud, ve a la sección Implementación y uso. Elige Vector Search
- Selecciona el índice que deseas actualizar. Se abrirá la página Index info.
- Selecciona Edit Index. Se abrirá un panel de edición de índice.
- En el campo Cloud Storage, busca y elige la carpeta de Cloud Storage en la que se almacenan tus datos vectoriales.
- Marca la casilla de reemplazo completo para reemplazar todos los datos existentes.
- Haz clic en Actualizar
- Haz clic en Listo para cerrar el panel.
Actualiza parcialmente un índice por lotes
Para actualizar las incorporaciones de un Index
por lotes existente, usa el método IndexService.UpdateIndex
.
- Configura
Index.metadata.contentsDeltaUri
como el URI de Cloud Storage que incluye los vectores que deseas actualizar. - Establece
Index.metadata.isCompleteOverwrite
como falso.
Solo se actualizan, insertan o borran los vectores especificados en Index.metadata.contentsDeltaUri
. Las demás incorporaciones existentes en el índice permanecen.
gcloud
- Actualiza tu archivo de metadatos de índice para establecer
contentsDeltaUri
. - Usa el comando
gcloud ai indexes update
.
Antes de usar cualquiera de los datos de comando a continuación, haz los siguientes reemplazos:
- LOCAL_PATH_TO_METADATA_FILE: La ruta de acceso local al archivo de metadatos.
- INDEX_ID: Es el ID del índice.
- LOCATION: la región en la que usas Vertex AI.
- PROJECT_ID: El ID del proyecto de Google Cloud.
Ejecuta el siguiente 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
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- INPUT_DIR: Es la ruta de acceso del directorio de Cloud Storage del contenido del índice.
- INDEX_ID: Es el ID del índice.
- LOCATION: la región en la que usas Vertex AI.
- PROJECT_ID: El ID del proyecto de Google Cloud.
- PROJECT_NUMBER: el número de proyecto de tu proyecto generado de forma automática.
HTTP method and URL:
PATCH https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/indexes/INDEX_ID
Cuerpo JSON de la solicitud:
{ "metadata": { "contentsDeltaUri": "INPUT_DIR", "isCompleteOverwrite": false } }
Para enviar tu solicitud, expande una de estas opciones:
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
{ "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
Si deseas obtener información para instalar o actualizar el SDK de Vertex AI para Python, consulta Instala el SDK de Vertex AI para Python. Si deseas obtener más información, consulta la documentación de referencia de la API de Python.
Cuando invoques el siguiente método, establece is_complete_overwrite=False
.
Console
Usa estas instrucciones para actualizar el contenido de un índice por lotes.
- En la sección de Vertex AI de la consola de Google Cloud, ve a la sección Implementación y uso. Elige Vector Search
- Selecciona el índice que deseas actualizar. Se abrirá la página Index info.
- Selecciona Edit Index. Se abrirá un panel de edición de índice.
- En el campo Cloud Storage, busca y elige la carpeta de Cloud Storage en la que se almacenan tus datos vectoriales.
- Asegúrate de que la casilla de reemplazo completo esté despejada.
- Haz clic en Actualizar
- Haz clic en Listo para cerrar el panel.
Si el Index
tiene implementaciones asociadas (consulta el campo Index.deployed_indexes
), cuando se realicen ciertos cambios en el Index
original, DeployedIndex
se actualizará automáticamente de forma asíncrona en segundo plano para reflejar estos cambios.
Para verificar si se propagó el cambio, compara la hora de finalización de la operación de actualización del índice y el valor DeployedIndex.index_sync_time
.
Cómo actualizar parcialmente un índice de transmisión
Con las actualizaciones de transmisión, puedes actualizar y consultar tu índice en unos segundos. En este momento, no puedes usar actualizaciones de transmisión en un índice de actualización por lotes existente, debes crear un índice nuevo. Si quieres obtener más información, consulta Crea un índice para la actualización de transmisión.
Se te cobra $0.45 por GB que se use para las actualizaciones de transmisión. Para obtener más información sobre los precios, consulta la página de precios de Vertex AI. Las actualizaciones de transmisión se aplican directamente a los índices implementados en la memoria para que se reflejen en los resultados de la consulta después de una breve demora.
Inserción y actualización de datos
Usa estas muestras para ver cómo actualizar un dato. Recuerda que upsert-datapoints
solo acepta JSON en formato de array.
Python
Python
Curl
El límite de cuota de capacidad de procesamiento se relaciona con la cantidad de datos que se incluyen en una inserción o actualización. Si existe el ID de dato en el índice, la incorporación se actualiza, de lo contrario, se agrega una nueva.
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 búsqueda híbrida, que está en versión preliminar pública, se admiten representaciones de incorporación dispersas y densas para un punto de datos. En una operación de inserción y actualización, omitir una incorporación densa borra la representación densa, y omitir una incorporación dispersa borra la representación dispersa.
En este ejemplo, se actualizan las incorporaciones densas y las dispersas.
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]}}]}'
En este ejemplo, se actualizan las incorporaciones densas y se quitan las incorporaciones dispersas.
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]}]}'
En este ejemplo, se actualizan las incorporaciones dispersas y se quitan las incorporaciones densas.
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
Usa estas instrucciones para actualizar el contenido a un índice de transmisión.
- En la consola de Google Cloud, ve a la página Vector Search.
- Selecciona el índice que deseas actualizar. Se abrirá la página Index info.
- Haz clic en Edit Index. Se abrirá un panel de edición de índice.
- En el panel, selecciona la pestaña Upsert data point para agregar contenido.
- Ingresa el ID del dato.
- Ingresa al menos un tipo de incorporación:
- Incorporación densa: Ingresa un array de valores de punto flotante separados por comas. La cantidad de valores debe coincidir con las dimensiones del índice.
- Incorporación dispersa (versión preliminar pública):
- Ingresa las dimensiones de la incorporación dispersa como un array de números enteros separados por comas. La cantidad de valores no tiene que coincidir con las dimensiones del índice.
- Ingresa los valores como un array de valores de punto flotante separados por comas. La cantidad de valores debe coincidir con la cantidad de dimensiones de embedding disperso.
- Opcional: Para habilitar el filtrado por restricciones de tokens en este dato, haz clic en Agregar restricción de tokens y, luego, ingresa un espacio de nombres y cadenas separadas por comas como tokens.
- Opcional: Para habilitar el filtrado por restricciones numéricas en este dato, haz clic en Agregar restricción numérica, ingresa un espacio de nombres, selecciona un tipo de número y, luego, ingresa un valor.
- Opcional: Para evitar muchos resultados similares, ingresa una cadena de etiqueta de agrupación.
- Haz clic en Upsert.
- Haz clic en Listo para cerrar el panel.
El límite de cuota de capacidad de procesamiento se relaciona con la cantidad de datos que se incluyen en una inserción o actualización. Si existe el ID de dato en el índice, la incorporación se actualiza, de lo contrario, se agrega una nueva.
Actualiza los metadatos de incorporación
Existen muchos motivos por los que podrías necesitar actualizar las restricciones de transmisión o numéricas. Por ejemplo, cuando se trata de datos de alto volumen y de rápida actualización, es posible que desees priorizar ciertos flujos de datos. La actualización directa de restricciones o restricciones numéricas te permite definir mejor el enfoque en tiempo real, lo que garantiza que los datos más importantes se procesen o destaquen de inmediato.
Puedes actualizar directamente las restricciones de datos y las restricciones numéricas dentro de un índice de transmisión sin el costo de compactación de la actualización completa.
Para realizar estas actualizaciones de solo metadatos, debes agregar el campo update_mask
a la solicitud. El valor de update_mask
debe establecerse en all_restricts
.
Los valores de restricción y restricción numérica establecidos en los datos deben ser los valores nuevos que deseas aplicar en la actualización.
En el siguiente ejemplo, se muestra cómo agregar restricciones a dos datos existentes.
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"}'
Quitar datos
Es posible que debas quitar los datos de tu índice de transmisión. Puedes hacerlo a través de curl o desde la consola de Google Cloud.
Un caso de uso clave para borrar un dato de un índice es mantener la paridad entre el índice y su fuente real. Imagina un vendedor de libros que usa una incorporación de vector para representar su inventario de libros con fines de búsqueda y recomendación. Cuando un libro está agotado o se quita de las existencias, borrar los datos correspondientes del índice garantiza que los resultados de la búsqueda y las recomendaciones permanezcan precisos y actualizados.
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
Usa estas instrucciones para borrar un dato del índice de transmisión.
- En la sección de Vertex AI de la consola de Google Cloud, ve a la sección Implementación y uso. Elige Vector Search
- Selecciona el índice de transmisión que deseas actualizar. Se abrirá la página Index info.
- Selecciona Edit Index. Se abrirá un panel de edición de índice.
- En el panel, selecciona la pestaña Remove data points.
- Para agregar hasta 20 datos, proporciona una lista delimitada por comas de los IDs de datos.
- Haz clic en Quitar.
- Haz clic en Listo para cerrar el panel.
Python
Python
Actualiza los metadatos del índice
IndexService.UpdateIndex
también se puede usar para actualizar los campos de metadatos display_name
, description
y labels
para los índices por lotes y de transmisión. Ten en cuenta que una sola llamada a UpdateIndex
puede actualizar las incorporaciones de índice o estos campos de metadatos, pero no ambos a la vez.
gcloud
Antes de usar cualquiera de los datos de comando a continuación, haz los siguientes reemplazos:
- LOCAL_PATH_TO_METADATA_FILE: La ruta de acceso local al archivo de metadatos.
- INDEX_ID: Es el ID del índice.
- LOCATION: la región en la que usas Vertex AI.
- PROJECT_ID: El ID del proyecto de Google Cloud.
Ejecuta el siguiente 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
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- INPUT_DIR: Es la ruta de acceso del directorio de Cloud Storage del contenido del índice.
- INDEX_ID: Es el ID del índice.
- LOCATION: la región en la que usas Vertex AI.
- PROJECT_ID: El ID del proyecto de Google Cloud.
- PROJECT_NUMBER: el número de proyecto de tu proyecto generado de forma automática.
HTTP method and URL:
PATCH https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/indexes/INDEX_ID
Cuerpo JSON de la solicitud:
{ "metadata": { "description": "Updated description", "display_name": "Updated display name" } }
Para enviar tu solicitud, expande una de estas opciones:
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
{ "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
Usa estas instrucciones para actualizar los metadatos del índice (la consola se limita a actualizar display_name
y description
).
- En la sección de Vertex AI de la consola de Google Cloud, ve a la sección Implementación y uso. Elige Vector Search
- Selecciona el índice que deseas actualizar. Se abrirá la página Index info.
- Selecciona Edit Index. Se abrirá un panel de edición de índice.
- Actualiza los campos de metadatos que desees.
- Haz clic en Actualizar
- Haz clic en Listo para cerrar el panel.
Compactación
Periódicamente, se vuelve a compilar el índice para tener en cuenta todas las actualizaciones nuevas desde la última compilación. Esta recompilación, o “compactación”, mejora el rendimiento y la confiabilidad de las consultas. Las compactaciones se producen tanto para las actualizaciones de transmisión como para las actualizaciones por lotes.
Actualización continua: La Búsqueda vectorial usa métricas basadas en heurísticas para determinar cuándo activar la compactación. Si los datos sin compactar más antiguos tienen cinco días de antigüedad, la compactación siempre se activa. Se te factura por el costo de volver a compilar el índice con la misma tarifa de una actualización por lotes, además de los costos de actualización de transmisión.
Actualización por lotes: ocurre cuando el tamaño del conjunto de datos incremental es superior al 20% del tamaño del conjunto de datos base.
Vuelve a compilar y consultar tu índice
Puedes enviar solicitudes de coincidencias o coincidencias por lotes, como de costumbre, con grpc cli, la biblioteca cliente o el SDK de Vertex AI para Python. Cuando vuelvas a compilar la consulta, verás las actualizaciones en unos segundos. Si deseas aprender a consultar un índice, visita Consulta índices para obtener los vecinos más cercanos.
Campos opcionales
Cuando creas un índice, existen algunos campos opcionales que puedes usar para ajustar tus consultas.
Inserción y actualización con restricciones
La inserción de un índice y una restricción es una forma de etiquetar los datos para que se identifiquen para filtrarlos en el momento de la consulta. Es posible que quieras agregar etiquetas de restricción para limitar los resultados que se presentan en los datos antes de enviar una consulta. Por ejemplo, un cliente quiere ejecutar una consulta en un índice, pero quiere asegurarse de que los resultados solo muestren elementos que coincidan con “red” en una búsqueda de calzado. En el siguiente ejemplo, el índice se actualiza o inserta y filtra todo el calzado rojo, pero rechaza el azul. Esto garantiza que los filtros de búsqueda tengan las mejores opciones específicas de un índice grande y variado antes de la ejecución.
Además de las restricciones de tokens, el ejemplo usa restricciones numéricas. En este caso, el dato está asociado con un precio de 20, una longitud de 0.3 y un ancho de 0.5. En el momento de la consulta, puedes usar estas restricciones numéricas para filtrar los resultados y limitar los resultados de la consulta en los valores de precio, longitud y ancho. Por ejemplo, este dato aparecería en una consulta que filtre por precio > 25, longitud < 1 y ancho < 1.
Si quieres obtener más información sobre el filtrado, consulta Vector Search para la indexación.
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}]
}
]}'
Inserción y actualización con acumulación
La etiqueta de multiplicidad limita los resultados similares mediante la mejora de la diversidad de resultados.
La aglomeración es una restricción en una lista de vecinos que produce una búsqueda de vecino más cercano que requiere que no más de un valor, de un grupo de resultados, muestre el mismo valor de crowding_attribute
. A modo de ejemplo, supongamos que volviste a estar en línea para comprar zapatos. Quieres ver una amplia variedad de colores en los resultados, pero tal vez
quieras que tengan un solo estilo, como calzado de fútbol. Puedes pedir que no se muestren más de 3 pares de calzado con
el mismo color si configuras per_crowding_attribute_num_neighbors
= 3
en la consulta, si suponemos que crowding_attribute tiene el color del calzado
cuando se insertan los datos.
Este campo representa la cantidad máxima permitida de coincidencias con la misma etiqueta de agrupamiento.
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"},
}
]}'
¿Qué sigue?
- Obtén información sobre los parámetros de configuración de índices.
- Obtén más información sobre cómo supervisar un índice.