(Vista previa) Capacidades de búsqueda avanzada con un motor de Amazon S3 Vectors
importante
La integración de Amazon S3 Vectors con OpenSearch Service se encuentra en versión preliminar y está sujeta a cambios.
Amazon OpenSearch Service ofrece la posibilidad de utilizar Amazon S3 como motor vectorial para índices vectoriales. Esta característica le permite descargar datos vectoriales a Amazon S3 y, al mismo tiempo, mantener las capacidades de búsqueda vectorial en menos de un segundo a un bajo costo.
Con esta característica, OpenSearch almacena las incrustaciones vectoriales en un índice de Amazon S3 Vectors y, al mismo tiempo, mantiene otros campos del documento en el almacenamiento del clúster de OpenSearch. Este método ofrece las siguientes ventajas:
-
Durabilidad: Los datos escritos en S3 Vectors se almacenan en S3, que se ha diseñado para ofrecer una durabilidad de datos del 99,999999999 % (11 nueves).
-
Escalabilidad: transfiera grandes conjuntos de datos vectoriales a S3 sin consumir almacenamiento en clústeres.
-
Rentabilidad: optimice los costos de almacenamiento para cargas de trabajo con gran cantidad de vectores.
OpenSearch tiene los siguientes requisitos para usar índices vectoriales S3:
-
Un dominio de OpenSearch con versión 2.19 o posterior
-
Instancias optimizadas para OpenSearch
-
Última versión del parche para su versión de OpenSearch
Activación de S3 Vectors
Al crear un dominio nuevo o actualizar un dominio existente, puede elegir la opción Habilitar S3 Vectors como motor en la sección Características avanzadas. Esta configuración le permite a OpenSearch crear un bucket vectorial de S3 al utilizar S3 Vectors como motor. Al activar esta opción, OpenSearch configura S3 Vectors para su dominio de la siguiente manera:
-
Al crear dos nuevas concesiones en la clave AWS KMS configurada con su dominio:
-
Una concesión para las tareas de indexación en segundo plano de S3 Vectors con privilegios de descifrado
-
Una subvención para que OpenSearch cree buckets de vectores de S3 con permisos
GenerateDataKey
-
-
Configurar la clave KMS utilizada por su dominio de OpenSearch como CMK para cifrar el resto de los datos del índice vectorial.
Creación de índices con el motor vectorial de S3
Después de configurar un dominio, puede crear uno o más índices k-NN con campos, con el uso de s3vector como motor vectorial de backend en las asignaciones de índices. Puede configurar diferentes campos vectoriales con diferentes tipos de motores en función de su caso de uso.
importante
Solo puede utilizar el motor s3vector para asignar una definición de campo durante la creación del índice. No puede agregar ni actualizar la asignación con el motor s3vector después de crear el índice.
Estos son algunos ejemplos que crean índices de motores vectoriales de S3.
Ejemplo: creación de un índice k-NN con el motor vectorial de S3
PUT my-first-s3vector-index { "settings": { "index": { "knn": true } }, "mappings": { "properties": { "my_vector_1": { "type": "knn_vector", "dimension": 2, "space_type": "l2", "method": { "engine": "s3vector" } }, "price": { "type": "float" } } } }
Ejemplo: creación de un índice k-NN con motores vectoriales de S3 y FAISS
Este ejemplo destaca el hecho de que se pueden utilizar varios motores vectoriales dentro del mismo índice.
PUT my-vector-index { "settings": { "index": { "knn": true } }, "mappings": { "properties": { "my_vector_1": { "type": "knn_vector", "dimension": 2, "space_type": "l2", "method": { "engine": "s3vector" } }, "price": { "type": "float" }, "my_vector_2": { "type": "knn_vector", "dimension": 2, "space_type": "cosine", "method": { "name": "hnsw", "engine": "faiss", "parameters": { "ef_construction": 128, "m": 24 } } } } } }
Ejemplo no compatible: agregar el motor vectorial de S3 tras la creación del índice
El siguiente enfoque no es compatible y fallará.
PUT my-first-s3vector-index { "settings": { "index": { "knn": true } } } PUT my-first-s3vector-index/_mapping { "properties": { "my_vector_1": { "type": "knn_vector", "dimension": 2, "space_type": "l2", "method": { "engine": "s3vector" } }, "price": { "type": "float" } } }
Limitaciones de funcionalidad
Tenga en cuenta las siguientes limitaciones antes de utilizar el motor s3vector en un índice:
| Característica | Comportamiento |
|---|---|
Índice de división, contracción y clonación |
Estas API fallan cuando se utilizan con un índice configurado con el motor |
Instantáneas |
Los índices que utilizan el motor
notaSi bien las instantáneas no son compatibles con la recuperación en un momento dado, el motor |
Nivel UltraWarm |
Los índices configurados con el motor |
Replicación entre clústeres |
Los índices configurados con el motor |
Protección contra eliminaciones accidentales |
Como las instantáneas no son compatibles con los índices que utilizan el motor |
Búsqueda radial |
Las consultas con búsqueda radial no se admiten en los campos que utilizan el motor |
Indexación de documentos
Tras crear un índice con el motor vectorial de S3, puede ingerir documentos mediante la API estándar _bulk. OpenSearch transfiere automáticamente los datos vectoriales de los campos knn_vector que utilizan el motor s3vector al índice vectorial de S3 en tiempo real. OpenSearch conservará los datos que pertenezcan a otros campos knn_vector o a campos que utilicen diferentes motores en su propia capa de almacenamiento.
Para todas las solicitudes masivas que se acepten, OpenSearch garantiza que todos los datos (vectoriales y no vectoriales) sean duraderos. Si una solicitud recibe un acuse de recibo negativo, no se garantiza la durabilidad de los documentos incluidos en esa solicitud masiva. Debería volver a intentar dichas solicitudes.
Ejemplo de indexación masiva
POST _bulk { "index": { "_index": "my-first-s3vector-index", "_id": "1" } } { "my_vector_1": [1.5, 2.5], "price": 12.2 } { "index": { "_index": "my-first-s3vector-index", "_id": "2" } } { "my_vector_1": [2.5, 3.5], "price": 7.1 } { "index": { "_index": "my-first-s3vector-index", "_id": "3" } } { "my_vector_1": [3.5, 4.5], "price": 12.9 } { "index": { "_index": "my-first-s3vector-index", "_id": "4" } } { "my_vector_1": [5.5, 6.5], "price": 1.2 } { "index": { "_index": "my-first-s3vector-index", "_id": "5" } } { "my_vector_1": [4.5, 5.5], "price": 3.7 }
Buscar documentos
Puede buscar en su índice mediante la API _search estándar para ejecutar consultas de texto, k-NN o híbridas. En el caso de las consultas en campos knn_vector configurados con el motor s3vector, OpenSearch transfiere automáticamente la consulta al índice vectorial de S3 correspondiente.
nota
Con el motor s3vector, la semántica de actualización solo se aplica a los campos que no utilizan el motor s3vector. Sin embargo, los datos vectoriales descargados en s3vector estarán visibles inmediatamente después de que un documento se indexe correctamente.
Consulta de búsqueda de ejemplo
GET my-first-s3vector-index/_search { "size": 2, "query": { "knn": { "my_vector_1": { "vector": [2.5, 3.5], "k": 2 } } } }
Parámetros de asignación compatibles
Con el motor s3vector, el campo knn_vector admite los siguientes parámetros en las asignaciones.
| Parámetro | Obligatorio | Descripción | Valores admitidos |
|---|---|---|---|
type |
Sí | El tipo de campo presente en el documento. | knn_vector |
dimension |
Sí | La dimensión de cada vector que se ingerirá en el índice. | >0, <=4096 |
space_type |
No | El espacio vectorial utilizado para calcular la distancia entre los vectores. | l2, cosinesimil |
method.engine |
Sí | El motor k-NN aproximado que se utilizará para la indexación y la búsqueda. | s3vector |
method.name |
No | El método del vecino más cercano | "" |
importante
El motor knn_vector no admite los tipos de campos anidados de s3vector
Facturación y medición
Hasta que se anuncie la medición, esta característica no se facturará.
Deshabilitación del motor s3vector
Antes de deshabilitar el motor s3vector, elimine todos los índices que lo utilizan actualmente. Si no lo hace, cualquier intento de deshabilitar el motor fallará.
Tenga en cuenta también que al habilitar o deshabilitar el motor s3vector se desencadena una implementación azul/verde en su dominio.
Para deshabilitar el motor s3vector, edite la configuración de su dominio y configure S3VectorsEngine.Enabled:
false.