Elección de un servicio de Azure para el vector de búsqueda
El vector de búsqueda es un método para buscar información almacenada en una base de datos en la forma de vectores. Los vectores son grupos de números que representan funciones o características de medios, como texto o imágenes. Los vectores son un avance significativo respecto a los métodos de búsqueda tradicionales basados en palabras clave. Ofrecen resultados más rápidos y precisos al comprender las relaciones semánticas de la información.
Azure ofrece varias maneras de almacenar y buscar datos vectorizados. Este artículo ayuda a los arquitectos y desarrolladores que necesitan comprender y elegir el servicio de Azure adecuado para el vector de búsqueda de su aplicación.
En este artículo se comparan los siguientes servicios en función de sus funcionalidades de vector de búsqueda:
- Azure AI Search
- Azure Cosmos DB para NoSQL
- Azure Cosmos DB for MongoDB (vCore)
- Azure Cosmos DB para PostgreSQL
- Azure Database para PostgreSQL
- Azure SQL Database
Los arquitectos y desarrolladores deben comparar los servicios disponibles desde la perspectiva de los requisitos del sistema en Elegir un servicio candidato y en la Matriz de funcionalidades.
Elección de un servicio candidato
Esta sección le ayuda a seleccionar los servicios más adecuados a sus necesidades. Para restringir las opciones, empiece por considerar los requisitos del sistema.
Requisitos principales
A la hora de decidir si utilizar una solución de base de datos tradicional o el servicio Búsqueda de Azure AI, tenga en cuenta sus requisitos y si puede realizar búsquedas vectoriales en vivo o en tiempo real en sus datos. Una base de datos relacional tradicional o NoSQL es la que mejor se adapta a su escenario si cambia con frecuencia los valores de los campos vectorizados y los cambios deben poder consultarse en tiempo real o casi real. Del mismo modo, el uso de la base de datos existente podría ser la mejor solución para satisfacer los objetivos de rendimiento. Por otro lado, si su carga de trabajo no requiere capacidad de vector de búsqueda en tiempo real o casi real, y acepta gestionar un índice de vectores, Búsqueda de AI puede ser una opción convincente.
Si opta por una solución de base de datos tradicional, el tipo concreto de servicio de base de datos que decida utilizar dependerá sobre todo de las aptitudes de su equipo y de las bases de datos que utilice actualmente. Si ya usa un tipo específico de base de datos, como MongoDB, por ejemplo, usar ese mismo tipo de base de datos podría ser la solución más sencilla para su escenario. Como se muestra en la sección Matriz de funcionalidades, cada servicio de base de datos tiene algunas funcionalidades y limitaciones únicas para el vector de búsqueda. Revise esa información para asegurarse de que el tipo de base de datos preferido admite la funcionalidad que necesita.
Si la preocupación por los costes es un factor determinante, mantener el diseño existente es probablemente lo más adecuado para su escenario, ya que introducir nuevos servicios u otras instancias de un servicio de base de datos puede añadir nuevos costes netos y complejidad. Utilizar sus bases de datos actuales para el vector de búsqueda probablemente repercuta menos en sus costes que un servicio dedicado.
Si decide usar una base de datos tradicional en lugar de Búsqueda de AI, algunas características de búsqueda avanzada no están disponibles de forma predeterminada. Por ejemplo, si desea realizar la reclasificación o la búsqueda híbrida, habilite esa funcionalidad a través de Transact-SQL (T-SQL) u otra codificación.
Matriz de funcionalidades
En las tablas de esta sección se resumen las diferencias clave en cuanto a funcionalidades.
Características básicas
La compatibilidad nativa con tipos de datos vectoriales, índices del vecino más cercano, límites de dimensiones vectoriales, varios campos vectoriales y varios índices vectoriales a veces es diferente entre los servicios. Los requisitos de carga de trabajo pueden requerir algunas de estas características específicas. Comprenda las características básicas de vector de cada servicio de Azure, como se muestra en la tabla siguiente.
Funcionalidad | Azure Cosmos DB para PostgreSQL | Azure Cosmos DB para NoSQL | Azure Cosmos DB for MongoDB (vCore) | Azure Database for PostgreSQL (Flex) | Azure AI Search | Azure SQL Database |
---|---|---|---|---|---|---|
Vector de búsqueda integrado | Sí 1 | Sí | Sí 2 | Sí 1 | Sí 3 | Sí 4 |
Tipo de datos vectoriales | Sí | Sí | Sí | Sí | Sí | No |
Límites de dimensión 6 | 16 000 7 o 2000 | 5058 o 4096 | 2000 | 16 000 7 o 2000 | 3072 | 1998 (versión preliminar)5 |
Varios campos vectoriales | Sí | Sí | No | Sí | Sí | Sí |
Varios índices vectoriales | Sí | Sí | No | Sí | Sí | Sí |
- "pgvector" admite el vector de búsqueda, que es la extensión de PostgreSQL.
- Uso del vector de búsqueda en incrustaciones en el núcleo virtual de Azure Cosmos DB for MongoDB
- Vectores de Búsqueda de Azure AI
- El vector de búsqueda nativo está disponible con la versión preliminar para usuarios pioneros de Azure SQL Database.
- Los vectores se pueden almacenar en una columna o variable VARBINARY(8000)..
- Inserción de modelos desde OpenAI, 1536 para text-embedding-ada-002 y text-embedding-3-small, y 3072 para text-embedding-3-large. Para modelos de inserción multimodales de Visión de Azure AI, 1024 para imagen y texto.
- Los vectores pueden tener hasta 16 000 dimensiones. Pero el índice que utiliza "IVFFlat" y "HNSW" admite vectores de hasta 2.000 dimensiones.
- Los vectores indexados con el tipo de índice plano pueden tener como máximo 505 dimensiones. Los vectores indexados con el tipo de índice quantizedFlat o DiskANN pueden tener como máximo 4.096 dimensiones.
Métodos de búsqueda
Las cargas de trabajo suelen necesitar combinar el vector de búsqueda con búsqueda de texto completo o incluso una búsqueda híbrida (búsqueda de texto completo o búsqueda semántica más vector de búsqueda). La combinación de búsqueda híbrida y reclasificación logra una alta precisión para las cargas de trabajo. Puede implementar manualmente la búsqueda híbrida y la reclasificación con su propio código, o puede considerar cómo el almacén de vectores admite este requisito de carga de trabajo.
Método de búsqueda | Azure Cosmos DB para PostgreSQL | Azure Cosmos DB para NoSQL | Azure Cosmos DB for MongoDB (vCore) | Azure Database for PostgreSQL (Flex) | Azure AI Search | Azure SQL Database |
---|---|---|---|---|---|---|
Búsqueda de texto completo | Sí 1 | No | Sí 2 | Sí 1 | Sí 3 | Sí 4 |
Búsqueda híbrida | Sí 5 | No | No | Sí 5 | Sí 6 | Sí 7 |
Reclasificación integrada | No | N.º | N.º | No | Sí 8 | No |
- Full Text Search de PostgreSQL
- Búsqueda y consulta con índices de texto en el núcleo virtual de Azure Cosmos DB for MongoDB
- Introducción a la búsqueda de texto completo
- Datos vectoriales en SQL Server
- No se proporciona como una característica de primera clase, pero se proporcionan códigos de ejemplo.
- La búsqueda híbrida (combinación de búsqueda de texto completo, vector de búsqueda y clasificación semántica) se proporciona como una característica de primera clase.
- Ejemplo de búsqueda híbrida para Azure SQL Database y SQL Server.
- La reclasificación denominada Clasificación semántica es una característica de primera clase para reclasificar el resultado de la búsqueda de texto completo o el vector de búsqueda.
Algoritmos de indexación de datos vectoriales
La indexación de datos vectoriales es la capacidad de almacenar y recuperar vectores de forma eficaz. Esta funcionalidad es importante porque la indexación influye en la velocidad y la precisión de las búsquedas de similitud y las consultas vecinas más cercanas en los orígenes de datos.
Normalmente, los índices se basan en un algoritmo de K vecinos más próximos (EKNN) o ANN. Ek-NN realiza una búsqueda exhaustiva en todos los puntos de datos uno por uno y devuelve los K vecinos más cercanos precisos. Ek-NN funciona en milisegundos con una pequeña cantidad de datos, pero puede provocar latencia para grandes cantidades de datos.
DiskANN, HNSW e IVFFlat son índices de algoritmos ANN. La selección de la estrategia de indexación adecuada implica una cuidadosa consideración de diversos factores, como la naturaleza del conjunto de datos, los requisitos específicos de las consultas y los recursos disponibles. DiskANN puede adaptarse a los cambios en el conjunto de datos y ahorrar recursos informáticos. HNSW destaca en sistemas que requieren respuestas de consulta rápidas y pueden adaptarse a los cambios en el conjunto de datos. IVFFlat es eficaz en entornos en los que los recursos de hardware son limitados o los volúmenes de consulta no son altos.
Comprenda qué tipos de indexación de datos vectoriales se proporcionan en la tabla siguiente.
Enfoque de indexación | Azure Cosmos DB para PostgreSQL | Azure Cosmos DB para NoSQL | Azure Cosmos DB for MongoDB (vCore) | Azure Database for PostgreSQL (Flex) | Azure AI Search | Azure SQL Database |
---|---|---|---|---|---|---|
DiskANN | No | Sí | No | N.º | N.º | No |
K vecinos más próximos (EKNN) exhaustivo (EKNN) | Sí | Sí | Sí | Sí | Sí | Sí |
Mundos pequeños navegables jerárquicos (HNSW) | Sí | No | Sí (versión preliminar)1 | Sí | Sí | No |
IVFflat | Sí | No | Sí | Sí | No | No |
Otros | - | flat, quantizedFlat2 | Limitación del campo vectorial 3 Limitación del índice vectorial 4 |
- | - | Hay bibliotecas externas disponibles5 |
- Azure Cosmos DB for MongoDB - Información general sobre el vector de búsqueda
- Directivas de indexación de vectores
- Solo hay un campo vectorial disponible por contenedor.
- Solo hay un índice vectorial disponible por contenedor.
- El índice se puede crear con la ayuda de bibliotecas externas, como Scikit Learn o FAISS
Funcionalidades de cálculo de similitud y distancia
Hay métodos de cálculo de similitud de coseno, producto escalar y distancia euclidiana para el vector de búsqueda. Estos métodos se usan para calcular la similitud entre dos vectores o la distancia entre dos vectores.
El análisis de datos preliminar se beneficia de las métricas y las distancias euclidianas, lo que permite la extracción de información diferente sobre la estructura de datos, mientras que la clasificación de texto generalmente funciona mejor en distancias euclidianas. La recuperación de los textos más similares a un texto determinado normalmente funciona mejor con similitud coseno.
Las incrustraciones de Azure OpenAI Service se basan en la similitud de coseno para calcular la similitud entre documentos y una consulta.
Cálculo de comparación de vectores integrado | Azure Cosmos DB para PostgreSQL | Azure Cosmos DB para NoSQL | Azure Cosmos DB for MongoDB (vCore) | Azure Database for PostgreSQL (Flex) | Azure AI Search | Azure SQL Database |
---|---|---|---|---|---|---|
Similitud coseno | Sí | Sí1 | Sí | Sí | Sí | Sí 2 |
Distancia euclidiana (distancia L2) | Sí | Sí1 | Sí | Sí | Sí | Sí 2 |
Producto escalar | Sí | Sí1 | Sí | Sí | Sí | Sí 2 |
- Cálculo de distancia vectorial para Azure Cosmos DB for NoSQL.
- Ejemplos de cálculo de distancia para Azure SQL Database y SQL Server.
Integración con Azure OpenAI y otros componentes
Al implementar el vector de búsqueda, también puede considerar la posibilidad de vincular con otros componentes de Microsoft. Por ejemplo, Azure OpenAI Service le ayuda a crear vectores para los datos y las consultas de entrada para la búsqueda de similitud de vectores.
Funcionalidad | Azure Cosmos DB para PostgreSQL | Azure Cosmos DB para NoSQL | Azure Cosmos DB for MongoDB (vCore) | Azure Database for PostgreSQL (Flex) | Azure AI Search | Azure SQL Database |
---|---|---|---|---|---|---|
Azure OpenAI Service - Agregar sus propios datos | No | No | Sí 1 | No | Sí 2 | No |
Inserción de vectores con Azure OpenAI | No | N.º | No | Sí 3 | Sí 4 | Sí 5 |
Integración con el flujo de avisos | No | N.º | N.º | No | Sí 6 | No |
Integración con kernel semántico | Sí 7 | Sí8 | Sí9 | Sí 7 | Sí 10 | Sí 11 |
- Azure Cosmos DB para MongoDB (núcleo virtual) se admite como origen de datos para Azure OpenAI en los datos.
- Búsqueda de Azure AI se admite como origen de datos para Azure OpenAI en los datos.
- La extensión de Azure AI (versión preliminar) está disponible.
- Búsqueda de Azure AI proporciona una aptitud para vectorizar el texto fragmentado.
- Puede crear un procedimiento almacenado para la implementación del modelo de inserción.
- Se admite como base de datos vectorial en la herramienta Búsqueda de base de datos vectoriales.
- Se admite como conector de memoria y un conector de base de datos vectorial (C#).
- Se admite como conector de memoria y un conector de base de datos vectorial (C#, Python).
- Compatible como conector de base de datos vectorial (C#, Python).
- Se admite como conector de memoria y un conector de base de datos vectorial (C#, Python).
- Se admite como conector de memoria.
Colaboradores
Microsoft mantiene este artículo. Originalmente lo escribieron los siguientes colaboradores.
Creadores de entidad de seguridad:
- Keita Onabuta | Ingeniero sénior de clientes
- Gary Lee | Ingeniero sénior de clientes
Otros colaboradores:
- Kruti Mehta | Ingeniera de clientes
Para ver los perfiles no públicos de LinkedIn, inicie sesión en LinkedIn.
Paso siguiente
Implementación de la minería de conocimiento con Búsqueda de Azure AI. En esta ruta de aprendizaje se explora cómo usar Búsqueda de Azure AI.
Recursos relacionados
- Descripción de los modelos de almacén de datos
- Opciones tecnológicas para soluciones de Azure
- Anuncio de la compatibilidad con EAP para vectores en Azure SQL Database
- Compatibilidad con vectores nativos en Azure SQL y SQL Server
- Base de datos vectorial en Azure Cosmos DB
- Introducción a las funcionalidades de base de datos vectorial en Azure Cosmos DB for NoSQL
- Vector de búsqueda en Azure Cosmos DB for NoSQL
- Ejemplos de base de datos vectoriales de Azure