Base de datos vectorial

SE APLICA A: NoSQL núcleo virtual de MongoDB PostgreSQL

Las bases de datos vectoriales se usan en muchos dominios y situaciones de la inteligencia artificial analítica y generativa, como el procesamiento del lenguaje natural, el reconocimiento de imágenes y vídeo, el sistema de recomendaciones, la búsqueda, etc.

Una tendencia notable en el software en 2023 fue la integración de mejoras de inteligencia artificial, a menudo logradas mediante la incorporación de bases de datos vectoriales autónomas especializadas en las pilas tecnológicas existentes. En este artículo se explica lo que son las bases de datos vectoriales y se presenta una arquitectura alternativa que puede ser conveniente tener en cuenta: el uso de una base de datos vectorial integrada en la base de datos NoSQL o relacional que ya utiliza, sobre todo al trabajar con datos multimodales. Este enfoque no solo le permite reducir el coste, sino también lograr una mayor coherencia, escalabilidad y rendimiento de los datos.

Sugerencia

La coherencia, la escalabilidad y el rendimiento de los datos son fundamentales para las aplicaciones que consumen muchos datos, por lo que OpenAI eligió compilar el servicio ChatGPT sobre Azure Cosmos DB. También puede aprovechar su base de datos vectorial integrada, así como sus tiempos de respuesta de menos de 10 milisegundos, la escalabilidad automática e instantánea y la velocidad garantizada a cualquier escala. Consulte ejemplos de implementación y pruébelos de forma gratuita.

¿Qué es una base de datos de vectores?

Una base de datos vectorial es una base de datos diseñada para almacenar y administrar inserciones de vectores, que son representaciones matemáticas de datos en un espacio dimensional. En este espacio, cada dimensión corresponde a una característica de los datos y es posible que se usen decenas de miles de dimensiones para representar datos sofisticados. La posición de un vector en este espacio representa sus características. Se pueden vectorizar palabras, frases o documentos completos e imágenes, audio y otros tipos de datos. Estas incrustaciones vectoriales se usan en la búsqueda de similitudes, la búsqueda multimodal, en los motores de recomendaciones, en los modelos de lenguajes grandes (LLM), etc.

En una base de datos vectorial, las incrustaciones se indexan y consultan a través de algoritmos de vector de búsqueda en función de su distancia vectorial o similitud. Se necesita un mecanismo sólido para identificar los datos más relevantes. Entre algunos algoritmos de vector de búsqueda conocidos se incluyen los mundos pequeños navegables jerárquicos (HNSW), archivo invertido (IVF), DiskANN, etc.

Base de datos vectorial integrada frente a base de datos vectorial pura

Hay dos tipos comunes de implementaciones de base de datos vectoriales: base de datos vectorial pura y base de datos vectorial integrada en una base de datos NoSQL o relacional.

Una base de datos vectorial pura está diseñada para almacenar y administrar eficazmente inserciones de vectores, junto con una pequeña cantidad de metadatos; es independiente del origen de datos del que se derivan las inserciones.

Una base de datos vectorial integrada en una base de datos NoSQL o relacional altamente eficaz proporciona funcionalidades adicionales. La base de datos vectorial integrada en una base de datos NoSQL o relacional puede almacenar, indexar e insertar consultas junto con los datos originales correspondientes. Este enfoque elimina el coste adicional de replicar datos en una base de datos de vectores pura independiente. Además, mantener juntos las incrustaciones de vectores y los datos originales facilita mejor las operaciones de datos multi modal y permite una mayor coherencia, escala y rendimiento de los datos.

Casos de uso de las base de datos vectoriales

Las bases de datos vectoriales se usan en numerosos dominios y situaciones en inteligencia artificial analítica y generativa, como el procesamiento de lenguaje natural, el reconocimiento de vídeo e imágenes, el sistema de recomendaciones, la búsqueda, etc. Por ejemplo, puede usar una base de datos vectorial para:

  • identificar imágenes, documentos y canciones similares en función de su contenido, temas, opiniones y estilos
  • identificar productos similares en función de sus características, funcionalidades y grupos de usuarios
  • recomendar contenido, productos o servicios en función de las preferencias de las personas
  • recomendar contenido, productos o servicios en función de las similitudes de los grupos de usuarios
  • identificar las opciones potenciales más adecuadas a partir de un gran grupo de opciones para cumplir requisitos complejos
  • identificar anomalías de datos o actividades fraudulentas que no sean similares a los patrones predominantes o normales
  • implementar la memoria persistente para agentes de IA

Sugerencia

Además de para estos casos de uso típicos de las bases de datos vectoriales, nuestra base de datos vectorial integrada es también una solución ideal para el almacenamiento en caché de LLM de nivel de producción gracias a su baja latencia y su alta escalabilidad y disponibilidad.

Es especialmente popular usar bases de datos vectoriales para habilitar la generación aumentada de recuperación (RAG) que aprovecha los LLM y los datos personalizados o la información específica de un dominio. Este enfoque le permite:

  • Generación de respuestas contextualmente relevantes y precisas a las solicitudes del usuario a partir de modelos de inteligencia artificial
  • Superar los límites de tokens de los LLM
  • Reducción de los costos del ajuste frecuente de los datos actualizados

Este proceso implica extraer información pertinente de un origen de datos personalizado e integrarla en la solicitud del modelo a través de la ingeniería de solicitudes. Antes de enviar una solicitud a los LLM, la entrada de usuario, consulta o solicitud también se transforma en una incrustación y se emplean técnicas de vector de búsqueda para localizar las incrustaciones más similares dentro de la base de datos. Esta técnica permite identificar los registros de datos más relevantes de la base de datos. A continuación, estos registros recuperados se proporcionan como entrada para la solicitud de los LLM mediante la ingeniería de solicitudes.

Inserciones

Una inserción es un formato especial de representación de datos que los modelos y algoritmos de Machine Learning pueden usar fácilmente. La incrustación es una representación densa en información del significado semántico de un texto. Cada incrustración es un vector de números de punto flotante, de modo que la distancia entre dos incrustraciones en el espacio vectorial está correlacionada con la similitud semántica entre dos entradas en el formato original. Por ejemplo, si hay dos textos similares, sus representaciones vectoriales también deberían ser similares. Una extensión de base de datos vectorial que le permite almacenar las inserciones con los datos originales garantiza la coherencia, la escala y el rendimiento de los datos. [Volver]

La búsqueda vectorial es un método que ayuda a encontrar elementos similares en función de sus características de datos en lugar de coincidencias exactas en un campo de propiedad. Esta técnica es útil en aplicaciones como la búsqueda de texto similar, la búsqueda de imágenes relacionadas, la realización de recomendaciones o incluso la detección de anomalías. Funciona tomando las representaciones vectoriales (listas de números) de los datos que ha creado mediante un modelo de Machine Learning con una API de inserciones, como inserciones de Azure OpenAI o Hugging Face en Azure. A continuación, mide la distancia entre los vectores de datos y el vector de consulta. Los vectores de datos más cercanos al vector de consulta son los más similares semánticamente. El uso de una característica de vector de búsqueda nativo ofrece una manera eficaz de almacenar, indexar y buscar datos vectoriales de alta dimensión directamente junto con otros datos de la aplicación. Este enfoque elimina la necesidad de migrar los datos a bases de datos vectoriales alternativas a Costlier y proporciona una integración sin problemas de las aplicaciones controladas por IA. [Volver]

Solicitudes e ingeniería de solicitudes

Una solicitud es un texto o información específicos que puede servir como una instrucción a un LLM o como datos contextuales sobre los que puede basarse el LLM. Una solicitud puede adoptar varias formas, como una pregunta, una instrucción o incluso un fragmento de código. Las solicitud pueden tener estos fines:

  • Instrucciones: proporcionan directivas al LLM
  • Contenido principal: proporciona información al LLM para su procesamiento
  • Ejemplos: condicionan el modelo para una tarea o proceso determinados
  • Direcciones: dirigen la salida del LLM a la dirección correcta
  • Contenido auxiliar: representa la información complementaria que puede usar el LLM para generar la salida

El proceso de crear solicitudes efectivas se denomina ingeniería de solicitudes. Para más información sobre las solicitudes y los procedimientos recomendados para la ingeniería de avisos, consulte Azure OpenAI Service técnicas de ingeniería de avisos. [Volver]

Tokens

Los tokens son pequeños fragmentos de texto que se generan al dividir el texto de entrada en segmentos más pequeños. Estos segmentos pueden ser palabras o grupos de caracteres, que varían en longitud de un solo carácter a una palabra completa. Por ejemplo, la palabra hamburguesa se dividiría en tokens como ham, bur, gue y sa, mientras que una palabra corta y común como pera se consideraría un único token. Los LLM como ChatGPT, GPT-3.5 o GPT-4 dividen palabras en tokens para su procesamiento. [Volver]

Generación aumentada de recuperación

La generación aumentada por recuperación (RAG) es una arquitectura que aumenta las capacidades de los LLM como ChatGPT, GPT-3.5 o GPT-4 agregando un sistema de recuperación de información como el vector de búsqueda que proporciona datos de base de datos, como los almacenados en una base de datos vectorial. Este enfoque permite a la LLM generar respuestas contextualmente relevantes y precisas basadas en los datos personalizados procedentes de documentos vectorizados, imágenes, audio, vídeo, etc.

Un patrón RAG simple con Azure Cosmos DB for NoSQL podría ser:

  1. Insertar datos en una base de datos y una colección de Azure Cosmos DB for NoSQL
  2. Creación de inserciones desde una propiedad de datos mediante inserciones de Azure OpenAI
  3. Vincular Azure Cosmos DB for NoSQL a Azure Cognitive Search (para la indexación o búsqueda de vectores)
  4. Creación de un índice de vector sobre las propiedades de inserción
  5. Creación de una función para realizar la búsqueda de similitud de vectores en función de un mensaje de usuario
  6. Llevar a cabo la respuesta a preguntas sobre los datos mediante un modelo de finalizaciones de Azure OpenAI

El patrón RAG con ingeniería de solicitudes ofrece información más contextual al modelo para mejorar la calidad de respuestas. RAG permite al modelo aplicar una knowledge base más amplia al incorporar orígenes externos relevantes en el proceso de generación, lo que da lugar a respuestas más completas e informadas. Para obtener más información sobre las máquinas virtuales de "puesta en tierra", consulte ADM de puesta a tierra. [Volver]

Estas son varias formas de implementar RAG en los datos mediante nuestras funcionalidades de base de datos vectorial integrada:

Cómo implementar funcionalidades de base de datos vectorial integrada

Puede implementar funcionalidades de base de datos vectorial integrada para las siguientes API de Azure Cosmos DB:

API para MongoDB

Use la base de datos vectorial integrada de forma nativa en Azure Cosmos DB for MongoDB (arquitectura de núcleo virtual), que ofrece una forma eficaz de almacenar, indexar y buscar datos vectoriales de alta dimensionalidad directamente junto con otros datos de aplicación. Este enfoque elimina la necesidad de migrar los datos a bases de datos vectoriales alternativas a Costlier y proporciona una integración sin problemas de las aplicaciones controladas por IA.

Ejemplos de código

API para PostgreSQL

Use la característica nativa de base de datos vectorial integrada en Azure Cosmos DB for PostgreSQL, que ofrece una forma eficaz de almacenar, indexar y buscar datos vectoriales de altas dimensiones directamente junto con otros datos de aplicación. Este enfoque elimina la necesidad de migrar los datos a bases de datos vectoriales alternativas a Costlier y proporciona una integración sin problemas de las aplicaciones controladas por IA.

Ejemplos de código

NoSQL API

Nota:

Para nuestra API NoSQL, la integración nativa de un algoritmo de indexación vectorial de última generación se anunciará en Build, en mayo de 2024. Esté atento.

La base de datos vectorial integrada de forma nativa en la API NoSQL está en desarrollo. Mientras tanto, puede implementar patrones RAG con Azure Cosmos DB for NoSQL y Azure AI Search. Este enfoque permite una integración eficaz de los datos que residen en la API de NoSQL en las aplicaciones orientadas a inteligencia artificial.

Ejemplos de código

Paso siguiente

Evaluación gratuita de 30 días sin suscripción de Azure

Evaluación gratuita de 90 días y hasta 6000 USD en créditos de rendimiento con la ventaja de Azure AI

Más soluciones de bases de datos vectoriales

Diagrama de los servicios de indexación de vectores.