Trabajo con colecciones de búsqueda vectorial
El tipo de colección de búsqueda vectorial de OpenSearch sin servidor ofrece una capacidad de búsqueda por similitud que es escalable y de alto rendimiento. Le facilita la creación de experiencias de búsqueda aumentada de machine learning (ML) modernas y aplicaciones de inteligencia artificial (IA) generativa sin tener que gestionar la infraestructura de base de datos vectorial subyacente.
Los casos de uso de las colecciones de búsquedas vectoriales incluyen búsquedas de imágenes, búsquedas de documentos, recuperación de música, recomendaciones de productos, búsquedas de vídeos, búsquedas basadas en la ubicación, detección de fraudes y detección de anomalías.
Como el motor vectorial de OpenSearch sin servidor utiliza la característica de búsqueda del vecino más cercano (k-NN)
El motor vectorial proporciona métricas de distancia, como la distancia euclidiana, la similitud de coseno y la similitud de productos de puntos, y puede acomodar 16 000 dimensiones. Puede almacenar campos con varios tipos de datos para los metadatos, como números, valores booleanos, fechas, palabras clave y geopuntos. También puede almacenar campos con texto para obtener información descriptiva y añadir más contexto a los vectores almacenados. La ubicación de los tipos de datos reduce la complejidad, aumenta la capacidad de mantenimiento y evita la duplicación de datos, los problemas de compatibilidad de versiones y los problemas de licencia.
nota
Tenga en cuenta la siguiente información:
-
Amazon OpenSearch sin servidor admite la cuantificación escalar de 16 bits de Faiss, que se puede utilizar para realizar conversiones entre vectores flotantes de 32 bits y vectores de 16 bits. Para obtener más información, consulte Cuantificación escalar de 16 bits de Faiss
. También puede utilizar vectores binarios para reducir los costos de memoria. Para obtener más información, consulte Vectores binarios . -
Amazon OpenSearch sin servidor admite la búsqueda vectorial basada en disco. La búsqueda vectorial basada en disco reduce considerablemente los costos operativos de las cargas de trabajo de vector en entornos con poca memoria. Para obtener más información, consulte Búsqueda vectorial basada en disco
.
Introducción a las colecciones de búsqueda vectorial
En este tutorial, debe completar los siguientes pasos para almacenar, buscar y recuperar incrustaciones vectoriales en tiempo real:
Paso 1: configurar permisos
Para completar este tutorial (y para utilizar OpenSearch sin servidor en general), debe tener los permisos (de IAM) AWS Identity and Access Management correctos. En este tutorial, crea una colección, carga y busca datos y, a continuación, elimina la colección.
Su usuario o rol debe tener adjunta una política basada en la identidad con los siguientes permisos mínimos:
Para obtener más información sobre los permisos de IAM de OpenSearch sin servidor, consulte Identity and Access Management en Amazon OpenSearch sin servidor
Paso 2: crear una colección
Una colección es un grupo de índices de OpenSearch que funcionan juntos para soportar una carga de trabajo o un caso de uso específicos.
Para crear una colección de OpenSearch sin servidor
-
Abra la consola de Amazon OpenSearch Service en https://console.aws.amazon.com/aos/home
. -
Seleccione Colecciones en el panel de navegación de la izquierda y elija Crear colección.
-
Asigne un nombre a la carcasa de la colección.
-
Para el tipo de colección, seleccione Búsqueda vectorial. Para obtener más información, consulte Elección de un tipo de colección.
-
En Tipo de implementación, elimine Habilitar redundancia (réplicas activas). Esto crea una colección en modo de desarrollo o prueba y reduce la cantidad de unidades de computación de OpenSearch (OCU) de la colección a dos. Si desea crear un entorno de producción en este tutorial, deje la casilla seleccionada.
-
En Seguridad, seleccione Crear fácilmente para optimizar la configuración de seguridad. De forma predeterminada, todos los datos del motor vectorial se cifran en tránsito y en reposo. El motor vectorial admite permisos de IAM detallados para que pueda definir quién puede crear, actualizar y eliminar cifrados, redes, colecciones e índices.
-
Seleccione Siguiente.
-
Revise la configuración de la colección y seleccione Enviar. Espere unos minutos hasta que el estado de la colección cambie a
Active.
Paso 3: cargar y buscar datos
Un índice es una colección de documentos con un esquema de datos común que permite almacenar, buscar y recuperar las incrustaciones vectoriales y otros campos. Puede crear y cargar datos en los índices de una colección de OpenSearch sin servidor mediante la consola de Herramientas para desarrolladores
Para indexar y buscar datos en la colección de películas
-
Para crear un índice único para su nueva colección, envíe la siguiente solicitud en la consola de Herramientas para desarrolladores
. De forma predeterminada, se crea un índice con un motor nmsliby una distancia euclidiana.PUT housing-index { "settings": { "index.knn": true }, "mappings": { "properties": { "housing-vector": { "type": "knn_vector", "dimension": 3 }, "title": { "type": "text" }, "price": { "type": "long" }, "location": { "type": "geo_point" } } } } -
Para indexar un solo documento en housing-index, envíe la siguiente solicitud:
POST housing-index/_doc { "housing-vector": [ 10, 20, 30 ], "title": "2 bedroom in downtown Seattle", "price": "2800", "location": "47.71, 122.00" } -
Para buscar propiedades similares a las del índice, envíe la siguiente consulta:
GET housing-index/_search { "size": 5, "query": { "knn": { "housing-vector": { "vector": [ 10, 20, 30 ], "k": 5 } } } }
Paso 4: eliminar la colección
Dado que la colección de housing es para hacer pruebas, debe eliminarla cuando termine de experimentar.
Para eliminar una colección de OpenSearch sin servidor
-
Vuelva a la consola de Amazon OpenSearch Service.
-
Seleccione Colecciones en el panel de navegación izquierdo y elija la colección de propiedades.
-
Para confirmar la eliminación, seleccione Eliminar.
Búsqueda filtrada
Puede usar filtros para mejorar los resultados de búsqueda semántica. Para crear un índice y realizar una búsqueda filtrada en sus documentos, sustituya los datos de carga y búsqueda en el tutorial anterior por las siguientes instrucciones. Los demás pasos siguen siendo los mismos. Para obtener más información acerca de los filtros, consulte búsqueda k-NN con filtros
Para indexar y buscar datos en la colección de películas
-
Para crear un índice único para su colección, envíe la siguiente solicitud en la consola de Herramientas para desarrolladores
: PUT housing-index-filtered { "settings": { "index.knn": true }, "mappings": { "properties": { "housing-vector": { "type": "knn_vector", "dimension": 3, "method": { "engine": "faiss", "name": "hnsw" } }, "title": { "type": "text" }, "price": { "type": "long" }, "location": { "type": "geo_point" } } } } -
Para indexar un solo documento en housing-index-filtered, envíe la siguiente solicitud:
POST housing-index-filtered/_doc { "housing-vector": [ 10, 20, 30 ], "title": "2 bedroom in downtown Seattle", "price": "2800", "location": "47.71, 122.00" } -
Para buscar los datos de un apartamento en Seattle por un precio determinado y dentro de una distancia determinada de un punto geográfico, envíe la siguiente solicitud:
GET housing-index-filtered/_search { "size": 5, "query": { "knn": { "housing-vector": { "vector": [ 0.1, 0.2, 0.3 ], "k": 5, "filter": { "bool": { "must": [ { "query_string": { "query": "Find me 2 bedroom apartment in Seattle under $3000 ", "fields": [ "title" ] } }, { "range": { "price": { "lte": 3000 } } }, { "geo_distance": { "distance": "100miles", "location": { "lat": 48, "lon": 121 } } } ] } } } } } }
Cargas de trabajo a escala de mil millones
Las colecciones de búsquedas vectoriales admiten cargas de trabajo con miles de millones de vectores. No necesita reindexar para escalar porque el escalado automático lo hace por usted. Si tiene millones de vectores (o más) con un gran número de dimensiones y necesita más de 200 OCU, póngase en contacto con AWS Support
Limitaciones
Las colecciones de búsqueda vectorial presentan las siguientes limitaciones:
-
Las colecciones de búsqueda vectorial no son compatibles con el motor ANN Apache Lucene.
-
Las colecciones de búsqueda vectorial solo admiten el algoritmo HNSW con Faiss y no admiten FIV ni IVFQ.
-
Las colecciones de búsqueda vectorial no admiten las operaciones de la API de calentamiento, estadística y entrenamiento de modelos.
-
Las colecciones de búsqueda vectorial no admiten scripts en línea ni almacenados.
-
La información sobre el recuento de índices no está disponible en las Consola de administración de AWS de búsquedas vectoriales.
-
El intervalo de actualización de los índices de las colecciones de búsqueda vectorial es de 60 segundos.
Pasos a seguir a continuación
Ahora que sabe cómo crear una colección de búsquedas vectoriales e indexar datos, puede que desee probar algunos de los siguientes ejercicios:
-
Utilice el cliente OpenSearch Python para trabajar con colecciones de búsqueda vectorial. Consulte este tutorial en GitHub
. -
Utilice el cliente OpenSearch Java para trabajar con colecciones de búsqueda vectorial. Consulte este tutorial en GitHub
. -
Configure LangChain para usar OpenSearch como almacén de vectores. LangChain es un marco de código abierto para desarrollar aplicaciones basadas en modelos de lenguaje. Para obtener más información, consulte Documentación de LangChain
.