Filtrado de metadatos - Amazon Simple Storage Service

Filtrado de metadatos

nota

Amazon S3 Vectors se encuentra en versión preliminar para Amazon Simple Storage Service y está sujeto a cambios.

El filtrado de metadatos le permite filtrar los resultados de la consulta en función de atributos específicos asociados a los vectores. Puede utilizar filtros de metadatos con operaciones de consulta para buscar vectores que coincidan tanto con criterios de similitud como con condiciones de metadatos específicas.

S3 Vectors admite dos tipos de metadatos: filtrables y no filtrables. La diferencia clave es que los metadatos filtrables se pueden utilizar en filtros de consulta, pero tienen limitaciones de tamaño más estrictas, mientras que los metadatos no filtrables no se pueden utilizar en filtros, pero pueden almacenar mayores cantidades de datos dentro de los límites de tamaño. Para obtener más información sobre los límites de metadatos, incluidos los límites de tamaño por vector y el número máximo de claves de metadatos por vector, consulte Restricciones y limitaciones.

Metadatos filtrables

Los metadatos filtrables le permiten filtrar los resultados de consulta en función de valores de metadatos específicos. De forma predeterminada, todos los campos de metadatos son filtrables en una consulta de similitud, a menos que se especifique explícitamente que no son filtrables durante la creación del índice vectorial. S3 Vectors admite metadatos de tipo cadena, número, booleano y lista con un límite de tamaño por vector. El tipo de metadatos es ideal para los atributos que desea filtrar, como categorías, marcas temporales o valores de estado.

Si el tamaño de los metadatos supera los límites admitidos, la operación de la API PutVectors devolverá un error 400 Bad Request. Para obtener más información sobre el límite de tamaño de metadatos filtrables por vector, consulte Restricciones y limitaciones.

Las siguientes operaciones se pueden utilizar con metadatos filtrables.

Operador Tipos de entrada válidos Descripción
$eq Cadena, número, booleano

Comparación de coincidencia exacta para valores únicos.

Al realizar la comparación con un valor de metadatos de matriz, devuelve true si el valor de entrada coincide con cualquier elemento de la matriz. Por ejemplo, {"category": {"$eq": "documentary"}} haría coincidir un vector con los metadatos "category": ["documentary", "romance"].

$ne Cadena, número, booleano Comparación No igual
$gt Número Comparación Mayor que
$gte Número Comparación Mayor o igual que
$lt Número Comparación Menor que
$lte Número Comparación Menor o igual que
$in Matriz no vacía de primitivas Coincidencia con cualquier valor de la matriz
$nin Matriz no vacía de primitivas Ninguna coincidencia con los valores de la matriz
$exists Booleano Comprobación de la existencia del campo
$and Matriz no vacía de filtros AND lógico de varias condiciones
$or Matriz no vacía de filtros OR lógico de varias condiciones

Ejemplos de metadatos filtrables válidos

Igualdad simple
{"genre": "documentary"}

Este filtro coincide con vectores donde la clave de metadatos de género es igual a “documentary”. Cuando no se especifica un operador, S3 Vectors utiliza automáticamente el operador $eq.

Igualdad explícita
// Example: Exact match {"genre": {"$eq": "documentary"}}
// Example: Not equal to {"genre": {"$ne": "drama"}}
Comparación numérica
{"year": {"$gt": 2019}}
{"year": {"$gte": 2020}}
{"year": {"$lt": 2020}}
{"year": {"$lte": 2020}}
Operaciones de matriz
{"genre": {"$in": ["comedy", "documentary"]}}
{"genre": {"$nin": ["comedy", "documentary"]}}
Verificación de existencia
{"genre": {"$exists": true}}

El filtro $exists coincide con vectores que tienen una clave de metadatos “genre”, independientemente del valor almacenado para esa clave de metadatos.

Operaciones lógicas
{"$and": [{"genre": {"$eq": "drama"}}, {"year": {"$gte": 2020}}]}
{"$or": [{"genre": {"$eq": "drama"}}, {"year": {"$gte": 2020}}]}
Intervalo de precios (condiciones múltiples en el mismo campo)
{"price": {"$gte": 10, "$lte": 50}}

Para obtener más información sobre cómo consultar vectores con filtrado de metadatos, consulte Filtrado de metadatos.

Metadatos no filtrables

Los metadatos no filtrables no se pueden utilizar en filtros de consulta, pero pueden almacenar más cantidades de datos contextuales que los metadatos filtrables. Son ideales para almacenar grandes fragmentos de texto, descripciones detalladas u otra información contextual que no es necesario que se pueda buscar, pero que puede devolverse con los resultados de la consulta. Por ejemplo, puede almacenar el texto completo de un documento, descripciones de imágenes o especificaciones detalladas de productos como metadatos no filtrables.

Las claves de metadatos no filtrables deben configurarse explícitamente durante la creación del índice vectorial. Una vez que una clave de metadatos se designa como no filtrable durante la creación del índice, no se puede cambiar a filtrable más adelante. Puede configurar varias claves de metadatos como no filtrables por índice vectorial, con un límite de 63 caracteres para cada nombre de clave de metadatos. Para obtener más información sobre el número máximo de claves de metadatos no filtrables permitidas por índice vectorial, consulte Restricciones y limitaciones.

Aunque no se puede filtrar por metadatos no filtrables, se pueden recuperar junto con los resultados de la consulta mediante el parámetro return-metadata. Puede utilizar metadatos no filtrables para algunos casos de uso, como se indica a continuación.

  • Utilícelos para proporcionar contexto a la aplicación sin analizar orígenes de datos independientes.

  • Almacene fragmentos de texto más grandes que superen los límites de tamaño de los metadatos filtrables.

  • Inclúyalos en las exportaciones vectoriales mediante la operación de la API ListVectors.

Para obtener más información sobre cómo configurar metadatos no filtrables, consulte Creación de un índice vectorial en un bucket vectorial.