Base de datos vectorial
Sugerencia
Visite nuestra nueva Galería de ejemplos para obtener los ejemplos más recientes de la base de datos de vectores y la aplicación de patrón RAG
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. Una base de datos de alto rendimiento con flexibilidad de esquema y base de datos vectorial integrada es especialmente óptima para los agentes de IA.
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.
Conceptos relacionados con la base de datos vectorial
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]
Búsqueda de vectores
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:
- Inscribirse en la versión preliminar del índice vectorial NoSQL de Azure Cosmos DB
- Configure una base de datos y un contenedor con una directiva de vector de contenedor y un índice vectorial.
- Insertar datos en una base de datos y un contenedor de Azure Cosmos DB for NoSQL
- Creación de inserciones desde una propiedad de datos mediante inserciones de Azure OpenAI
- Vincular Azure Cosmos DB for NoSQL.
- Creación de un índice de vector sobre las propiedades de inserción
- Creación de una función para realizar la búsqueda de similitud de vectores en función de un mensaje de usuario
- 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:
NoSQL API
Azure Cosmos DB for NoSQL es la primera base de datos vectorial NoSQL sin servidor del mundo. Almacene los vectores y los datos juntos en Azure Cosmos DB for NoSQL con funcionalidades de base de datos vectoriales integradas, donde puede crear un índice vectorial basado en DiskANN, un conjunto de algoritmos de indexación vectorial de alto rendimiento desarrollado por Microsoft Research.
DiskANN le permite realizar consultas de alta precisión y baja latencia a cualquier escala, a la vez que aprovecha todas las ventajas de Azure Cosmos DB for NoSQL, como el Acuerdo de Nivel de Servicio del 99,999 % (con alta disponibilidad habilitada), la replicación geográfica, la transición sin problemas de rendimiento sin servidor a rendimiento aprovisionado (RU), todo en un almacén de datos.
Vínculos y ejemplos
- ¿Qué es la base de datos detrás de ChatGPT? - Microsoft Mechanics
- Indexación vectorial en Azure Cosmos DB for NoSQL
- Consultas NoSQL de función del sistema VectorDistance
- Cómo configurar funcionalidades de base de datos vectorial en Azure Cosmos DB for NoSQL
- Python: tutorial de cuaderno
- C#: compilación de su propio acelerador de solución completa de Copilot con AKS y kernel semántico
- C#: compilación de su propia aplicación de ejemplo de Copilot y laboratorio práctico
- Python: bot de chat de películas
Azure Cosmos DB for 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
- Compilar su propio Copilot para Azure Cosmos DB for MongoDB en C# con kernel semántico
- Tutorial de .NET: bot de chat de recetas
- Patrón RAG de C#: integración de servicios OpenAI con Cosmos
- Patrón RAG de Python: bot de chat de productos de Azure
- Tutorial del cuaderno de Python: integración de bases de datos vectoriales a través de LangChain
- Tutorial del cuaderno de Python: integración del almacenamiento en caché de LLM a través de LangChain
- Python: Integración LlamaIndex
- Python: Integración de memoria de kernel semántica
- Cuaderno de Python: bot de chat de película
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.
Código de ejemplo
Paso siguiente
Evaluación gratuita de 30 días sin suscripción de Azure