Con búsquedas grandes, es importante que actualices los índices para tener siempre la información más precisa. Puedes actualizar tus índices de Vector Search de diferentes maneras:
- Cómo reemplazar un índice completo
- Actualiza parcialmente un índice por lotes
- Actualiza 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 o una transmisión Index
existente, 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 en 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 Google Cloud ID del proyecto.
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 Google Cloud ID del proyecto.
- 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. Para obtener más información, consulta la documentación de referencia de la API de Python.
Cuando invoques el método que se muestra a continuación, 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 Vertex AI de la Google Cloud consola, ve a la sección Implementación y uso. Selecciona 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 lote Index
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
. Los demás embeddings 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 Google Cloud ID del proyecto.
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 Google Cloud ID del proyecto.
- 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. Para 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 Vertex AI de la Google Cloud consola, ve a la sección Implementación y uso. Selecciona 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é desactivada.
- 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
.
Actualiza 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, se admiten representaciones de incorporaciones dispersas y densas para un punto de datos. En una operación de upsert, si se omite una incorporación densa, se borra la representación densa, y si se omite una incorporación dispersa, se borra la representación dispersa.
En este ejemplo, se actualizan los embeddings densos y dispersos.
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.
- Embedding disperso:
- Ingresa las dimensiones del embedding disperso 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 del embedding disperso.
- Opcional: Para habilitar el filtrado por restricciones de tokens en este punto de datos, haz clic en Agregar restricción de token 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 punto de datos, 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 que se muestren muchos resultados similares, ingresa una cadena de etiqueta de aglomeració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 los embeddings
Existen muchos motivos por los que podrías necesitar actualizar las restricciones de transmisión o las restricciones numéricas. Por ejemplo, cuando trabajas con datos de gran volumen y rápido movimiento, tal vez quieras priorizar ciertos flujos de datos. Las actualizaciones directas de restricciones o restricciones numéricas te permiten 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 puntos de datos y las restricciones numéricas dentro de un índice de transmisión sin el costo de compactación de una actualización completa.
Para realizar estas actualizaciones solo de 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 puntos de 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 Vertex AI de la Google Cloud consola, ve a la sección Implementación y uso. Selecciona 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 de transmisión y por lotes. Ten en cuenta que una sola llamada a UpdateIndex
puede actualizar las incorporaciones del í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 Google Cloud ID del proyecto.
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 Google Cloud ID del proyecto.
- 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 solo permite actualizar display_name
y description
).
- En la sección Vertex AI de la Google Cloud consola, ve a la sección Implementación y uso. Selecciona 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 deseados.
- Haz clic en Actualizar
- Haz clic en Listo para cerrar el panel.
Compactación
Periódicamente, se vuelve a compilar tu í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 de transmisión: Vector Search 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, siempre se activa la compactación. 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 token, el ejemplo usa restricciones numéricas. En este caso, el punto de datos se asocia con un precio de 20, una longitud de 0.3 y un ancho de 0.5. En el momento de la búsqueda, puedes usar estas restricciones numéricas para filtrar los resultados y limitar los resultados de la búsqueda en los valores de precio, longitud y ancho. Por ejemplo, este punto de datos aparecería en una búsqueda que filtra 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.
El hacinamiento es una restricción en una lista de vecinos producida por una búsqueda de vecinos más cercanos que requiere que no más de un cierto valor de un grupo de resultados devuelva el mismo valor de crowding_attribute
. Por ejemplo, supongamos que volviste a comprar zapatos en línea. 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 para supervisar un índice.