Trabajo con colecciones de búsqueda vectorial - OpenSearch Servicio Amazon

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Trabajo con colecciones de búsqueda vectorial

El tipo de colección de búsqueda vectorial en OpenSearch Serverless proporciona 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 Serverless funciona con la función de búsqueda del vecino más cercano (k-NN) de la empresa OpenSearch, se obtiene la misma funcionalidad con la sencillez de un entorno sin servidor. El motor admite las operaciones de la API k-NN. OpenSearch Con estas operaciones, puede sacar provecho de la búsqueda de texto completo, el filtrado avanzado, las agregaciones, las consultas geoespaciales, las consultas anidadas para una recuperación más rápida de los datos y la mejora de los resultados de búsqueda.

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.

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 usar OpenSearch Serverless en general), debe tener los permisos AWS Identity and Access Management (de IAM) 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:

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "aoss:CreateCollection", "aoss:ListCollections", "aoss:BatchGetCollection", "aoss:DeleteCollection", "aoss:CreateAccessPolicy", "aoss:ListAccessPolicies", "aoss:UpdateAccessPolicy", "aoss:CreateSecurityPolicy", "iam:ListUsers", "iam:ListRoles" ], "Effect": "Allow", "Resource": "*" } ] }

Para obtener más información sobre los permisos de IAM OpenSearch sin servidor, consulte. Identity and Access Management para Amazon OpenSearch Serverless

Paso 2: crear una colección

Una colección es un grupo de OpenSearch índices que funcionan juntos para respaldar una carga de trabajo o un caso de uso específicos.

Para crear una colección OpenSearch sin servidor
  1. Abre la consola OpenSearch de Amazon Service en https://console.aws.amazon.com/aos/home.

  2. Seleccione Colecciones en el panel de navegación de la izquierda y elija Crear colección.

  3. Asigne un nombre a la carcasa de la colección.

  4. 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.

  5. En Tipo de implementación, elimine Habilitar redundancia (réplicas activas). Esto crea una colección en modo de desarrollo o prueba y reduce el número de unidades de OpenSearch cómputo (OCU) de la colección a dos. Si desea crear un entorno de producción en este tutorial, deje la casilla seleccionada.

  6. 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.

  7. Seleccione Siguiente.

  8. 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. Puedes crear y cargar datos en los índices de una colección OpenSearch sin servidor mediante la consola Dev Tools de OpenSearch Dashboards o una herramienta HTTP como Postman o awscurl. En este tutorial se utilizan herramientas de desarrollo.

Para indexar y buscar datos en la colección de películas
  1. Para crear un índice único para su nueva colección, envíe la siguiente solicitud a la consola de Dev Tools. De forma predeterminada, se crea un índice con un motor nmslib y 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" } } } }
  2. 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" }
  3. 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 OpenSearch sin servidor
  1. Vuelve a la consola OpenSearch de Amazon Service.

  2. Seleccione Colecciones en el panel de navegación izquierdo y elija la colección de propiedades.

  3. 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
  1. Para crear un índice único para tu colección, envía la siguiente solicitud a la consola de Dev Tools:

    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" } } } }
  2. Para indexar un solo documento housing-index-filtered, envía 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" }
  3. 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 tienes millones de vectores (o más) con un gran número de dimensiones y necesitas más de 200 OCU, ponte en contacto con AWS Support para aumentar el número máximo de unidades de OpenSearch cómputo (OCU) de tu cuenta.

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 colecciones AWS Management Console de búsquedas vectoriales.

  • El intervalo de actualización de los índices de las colecciones de búsqueda vectorial es de 60 segundos.

Siguientes pasos

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úsquedas vectoriales. Consulte este tutorial en GitHub.

  • Configurado LangChain para usarse OpenSearch como tienda 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 la LangChain documentación.