Aplicaciones inteligentes con Azure SQL Database
Se aplica a: Azure SQL Database
En este artículo se proporciona información general sobre el uso de opciones de inteligencia artificial (IA), como OpenAI y vectores, para compilar aplicaciones inteligentes con Azure SQL Database.
Para obtener muestras y ejemplos, visite el repositorio de muestras de IA para SQL.
Ve este vídeo de la serie Aspectos básicos de Azure SQL Database para obtener una breve introducción a la creación de una aplicación lista para la IA:
Información general
Los grandes modelos de lenguaje (LLM) permiten a los desarrolladores crear aplicaciones con tecnología de IA con una experiencia de usuario familiar.
El uso de LLM en aplicaciones aporta un mayor valor y una experiencia de usuario mejorada cuando los modelos pueden acceder a los datos adecuados, en el momento adecuado, desde la base de datos de la aplicación. Este proceso se conoce como Generación aumentada de recuperación (RAG) y Azure SQL Database tiene muchas características que admiten este nuevo patrón, lo que lo convierte en una excelente base de datos para crear aplicaciones inteligentes.
Los siguientes vínculos proporcionan código de ejemplo de varias opciones de Azure SQL Database para compilar aplicaciones inteligentes:
Opción de IA | Descripción |
---|---|
Azure OpenAI | Genere incrustaciones para RAG e intégrelas con cualquier modelo compatible con Azure OpenAI. |
Vectores | Aprenda a almacenar y consultar vectores en Azure SQL Database. |
Azure AI Search | Use Azure SQL Database junto con Azure AI Search para entrenar LLM con sus datos. |
Aplicaciones inteligentes | Aprenda a crear una solución de un extremo a otro mediante un patrón común que se pueda replicar en cualquier escenario. |
Capacidades de Copilot en Azure SQL Database | Obtenga información sobre el conjunto de experiencias asistidas por IA diseñadas para simplificar el diseño, el funcionamiento, la optimización y el estado de las aplicaciones controladas por Azure SQL Database. |
Conceptos clave para implementar RAG con Azure SQL Database y Azure OpenAI.
En esta sección se incluyen conceptos clave que son fundamentales para implementar RAG con Azure SQL Database y Azure OpenAI.
Generación aumentada de recuperación (RAG)
RAG es una técnica que mejora la capacidad del LLM para generar respuestas relevantes e informativas mediante la recuperación de datos adicionales de orígenes externos. Por ejemplo, RAG puede consultar artículos o documentos que contengan conocimientos específicos del dominio relacionados con la pregunta o solicitud del usuario. A continuación, el LLM puede usar estos datos recuperados como referencia al generar su respuesta. Por ejemplo, un patrón RAG simple con Azure SQL Database podría ser:
- Inserción de los datos en una tabla de Azure SQL Database.
- Vincular Azure SQL Database a Azure AI Search.
- Cree un modelo GPT4 de Azure OpenAI y conéctelo a Azure AI Search.
- Chatee y formule preguntas sobre sus datos mediante el modelo Azure OpenAI entrenado desde su aplicación y desde Azure SQL Database.
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 base de conomiento 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 cómo aportar contexto a los LLM, consulte Aportar contexto a los LLM: Centro de comunidad de Microsoft.
Solicitudes e ingeniería de solicitudes
Una solicitud es un texto o información específicos que sirve 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.
La lista a continuación incluye consultas de muestra que se pueden usar para generar una respuesta de un LLM:
- Instrucciones: proporcionan indicaciones 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 obtener más información sobre las solicitudes y los procedimientos recomendados para la elaboración de solicitudes, consulte Azure OpenAI Service.
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 hamburger
se dividiría en tokens como ham
, bur
y ger
mientras que una palabra corta y común como pear
se consideraría un único token.
En Azure OpenAI, el texto de entrada proporcionado a la API se convierte en tokens (está tokenizado). El número de tokens que se procesan en cada solicitud API depende de factores como la longitud de los parámetros de entrada, salida y solicitud. La cantidad de tokens que se procesan también afecta al tiempo de respuesta y al rendimiento de los modelos. Hay límites para la cantidad de tokens que cada modelo puede tomar en una única solicitud o respuesta de Azure OpenAI. Para obtener más información, consulte Cuotas y límites de Azure OpenAI Service.
Vectores
Los vectores son matrices ordenadas de números (normalmente floats) que pueden representar información sobre algunos datos. Por ejemplo, una imagen se puede representar como un vector de valores de píxeles o una cadena de texto se puede representar como un vector o valores ASCII. El proceso para convertir los datos en un vector se denomina vectorización. Para obtener más información, vea Vectores.
Incrustraciones
Las incrustaciones son vectores que representan características importantes de los datos. Las incrustaciones a menudo se aprenden mediante un modelo de aprendizaje profundo, y los modelos de aprendizaje automático e inteligencia artificial las usan como características. Las incrustaciones también pueden capturar la similitud semántica entre conceptos similares. Por ejemplo, al generar una incrustación para las palabras person
y human
, podemos esperar que sus incrustaciones (representaciones vectoriales) tengan valores similares, ya que las palabras son semánticamente similares.
Azure OpenAI ofrece modelos para crear incrustaciones a partir de datos de texto. El servicio divide el texto en tokens y genera incrustaciones mediante modelos entrenados previamente por OpenAI. Para obtener más información, consulte Creación de incrustaciones con Azure OpenAI.
Búsqueda de vectores
La búsqueda de vectores es el proceso de encontrar todos los vectores de un conjunto de datos que son semánticamente similares a un vector de consulta específico. Por lo tanto, un vector de consulta para la palabra human
busca en todo el diccionario palabras semánticamente similares, y debería encontrar la palabra person
como coincidencia cercana. Esta proximidad, o distancia, se mide mediante una métrica de similitud, como la similitud del coseno. Cuanto más similares sean los vectores, menor será la distancia entre ellos.
Considere un escenario en el que ejecuta una consulta en millones de documentos y encuentra los documentos más similares en los datos. Primero, puede crear incrustaciones para los datos y los documentos de consulta mediante Azure OpenAI. Luego, puede realizar una búsqueda de vectores para encontrar los documentos más similares del conjunto de datos. Realizar una búsqueda de vectores en una cantidad pequeña de documentos no requiere un gran esfuerzo. Sin embargo, realizar esta misma búsqueda en miles o millones de puntos de datos es más complicado. Al elegir entre la búsqueda exhaustiva y los métodos de búsqueda del vecino más próximo (ANN) existen ventajas y desventajas, como la latencia, el rendimiento, la precisión y el coste. La elección entre uno u otro depende de los requisitos de la aplicación.
Los vectores de Azure SQL Database se pueden almacenar y consultar de forma eficaz, como se describe en las secciones siguientes, lo que permite una búsqueda de vecino más próximo exacta con un rendimiento excelente. No tiene que decidir entre precisión y velocidad: puede tener ambos. El almacenamiento de incrustaciones de vectores junto con los datos de una solución integrada minimiza la necesidad de administrar la sincronización de datos y acelera el tiempo de comercialización en el desarrollo de aplicaciones de IA.
Azure OpenAI
La inserción es el proceso de representar el mundo real como datos. El texto, las imágenes o los sonidos se pueden convertir en incrustaciones. Los modelos de Azure OpenAI pueden transformar la información real en incrustaciones. Los modelos están disponibles como puntos de conexión REST y, por tanto, se pueden consumir fácilmente desde Azure SQL Database mediante el procedimiento almacenado del sistema sp_invoke_external_rest_endpoint
:
DECLARE @retval INT, @response NVARCHAR(MAX);
DECLARE @payload NVARCHAR(MAX);
SET @payload = JSON_OBJECT('input': @text);
EXEC @retval = sp_invoke_external_rest_endpoint @url = 'https://<openai-url>/openai/deployments/<model-name>/embeddings?api-version=2023-03-15-preview',
@method = 'POST',
@credential = [https://<openai-url>/openai/deployments/<model-name>],
@payload = @payload,
@response = @response OUTPUT;
SELECT CAST([key] AS INT) AS [vector_value_id],
CAST([value] AS FLOAT) AS [vector_value]
FROM OPENJSON(JSON_QUERY(@response, '$.result.data[0].embedding'));
El uso de una llamada a un servicio REST para obtener incrustaciones es solo una de las opciones de integración que tiene al trabajar con SQL Database y OpenAI. Puede permitir que cualquiera de los modelos disponibles acceda a los datos almacenados en Azure SQL Database para crear soluciones en las que los usuarios puedan interactuar con los datos, como el ejemplo siguiente.
Para obtener ejemplos adicionales sobre el uso de SQL Database y OpenAI, consulte los siguientes artículos:
- Generación de imágenes con Azure OpenAI Service (DALL-E) y Azure SQL Database
- Uso de puntos de conexión REST de OpenAI con Azure SQL Database
Vectores
Tipo de datos vectoriales
En noviembre de 2024, el nuevo tipo de datos vectorial se introdujo en Azure SQL Database.
El tipo de vector dedicado permite un almacenamiento eficaz y optimizado de datos vectoriales y viene con un conjunto de funciones para ayudar a los desarrolladores a simplificar la implementación de búsqueda de vectores y similitudes. El cálculo de la distancia entre dos vectores se puede realizar en una línea de código mediante la nueva función VECTOR_DISTANCE
. Para obtener más información sobre el tipo de datos vectorial y las funciones relacionadas, vea Información general de los vectores en el motor de base de datos de SQL.
Por ejemplo:
CREATE TABLE [dbo].[wikipedia_articles_embeddings_titles_vector]
(
[article_id] [int] NOT NULL,
[embedding] [vector](1536) NOT NULL,
)
GO
SELECT TOP(10)
*
FROM
[dbo].[wikipedia_articles_embeddings_titles_vector]
ORDER BY
VECTOR_DISTANCE('cosine', @my_reference_vector, embedding)
Vectores en versiones anteriores de SQL Server
Aunque las versiones anteriores del motor de SQL Server, hasta SQL Server 2022 incluido, no tienen un tipo vectorial nativo, un vector no es más que una tupla ordenada, y las bases de datos relacionales son excelentes para administrar tuplas. Puede considerar una tupla como el término formal de una fila de una tabla.
Azure SQL Database también admite índices de almacén de columnas y ejecución en modo por lotes. Se usa un enfoque basado en vectores para el procesamiento en modo por lotes, lo que significa que cada columna de un lote tiene su propia ubicación de memoria donde se almacena como vector. Esto permite un procesamiento más rápido y eficaz de los datos en lotes.
A continuación se muestra un ejemplo de cómo se puede almacenar un vector en SQL Database:
CREATE TABLE [dbo].[wikipedia_articles_embeddings_titles_vector]
(
[article_id] [int] NOT NULL,
[vector_value_id] [int] NOT NULL,
[vector_value] [float] NOT NULL
)
GO
CREATE CLUSTERED COLUMNSTORE INDEX ixc
ON dbo.wikipedia_articles_embeddings_titles_vector
ORDER (article_id);
GO
Para ver un ejemplo que usa un subconjunto común de artículos de Wikipedia con incrustaciones ya generadas mediante OpenAI, consulte Búsqueda de similitud de vectores con Azure SQL Database y OpenAI.
Otra opción para aprovechar Vector Search en Azure SQL Database es la integración con Azure AI mediante las funcionalidades de vectorización integradas: Búsqueda de vectores con Azure SQL Database y Azure AI Search
Azure AI Search
Implementar patrones RAG con Azure SQL Database y Azure AI Search. Puede ejecutar modelos de chat compatibles en los datos almacenados en Azure SQL Database, sin tener que entrenar o ajustar modelos, gracias a la integración de Azure AI Search con Azure OpenAI y Azure SQL Database. La ejecución de modelos en los datos le permite chatear sobre ellos y analizar los datos con mayor precisión y velocidad.
- Azure OpenAI en los datos
- Generación aumentada de recuperación (RAG) en Azure AI Search
- Búsqueda de vectores con Azure SQL Database y Azure AI Search
Aplicaciones inteligentes
Azure SQL Database se puede usar para crear aplicaciones inteligentes que incluyan características de inteligencia artificial, como recomendadores y generación aumentada de recuperación (RAG) como se muestra en el siguiente diagrama:
Para obtener un ejemplo de un extremo a otro para crear una aplicación habilitada para IA mediante sesiones abstractas como un conjunto de datos de ejemplo, consulte:
- Cómo he creado un recomendador de sesión en 1 hora mediante OpenAI.
- Uso de la generación aumentada de recuperación para crear un asistente de conferencia
Integración de LangChain
LangChain es un marco conocido para desarrollar aplicaciones con tecnología de modelos de lenguaje. Para ver ejemplos que muestran cómo se puede usar LangChain para crear un bot de chat en sus propios datos, consulte:
- Crear un bot de chat en sus propios datos en 1 hora con Azure SQL, Langchain y Chainlit: cree un bot de chat con el patrón RAG en sus propios datos mediante Langchain para orquestar llamadas LLM y Chainlit para la interfaz de usuario.
- Crear su propio Copilot de base de datos para Azure SQL con Azure OpenAI GPT-4: crear una experiencia similar a un copiloto para consultar las bases de datos mediante lenguaje natural.
Integración del kernel semántico
El kernel semántico es un SDK de código abierto que permite compilar fácilmente agentes que pueden llamar al código existente. Como SDK altamente extensible, puede usar el kernel semántico con modelos de OpenAI, Azure OpenAI, Hugging Face, etc. Al combinar el código de C#, Python y Java existente con estos modelos, puede crear agentes que respondan a preguntas y automaticen procesos.
- ¿El bot de chat definitivo?: cree un bot de chat en sus propios datos con patrones NL2SQL y RAG para la experiencia del usuario final.
- Ejemplo de incrustaciones de OpenAI: ejemplo que muestra cómo usar el kernel semántico y la memoria del kernel para trabajar con incrustaciones en una aplicación .NET mediante SQL Server como base de datos vectorial.
- Kernel semántico y memoria de kernel: Conector SQL: proporciona una conexión a una base de datos SQL para el kernel semántico para los recuerdos.
Capacidades de Microsoft Copilot en Azure SQL Database
Capacidades de Microsoft Copilot en Azure SQL Database (versión preliminar) es un conjunto de experiencias asistidas por IA diseñadas para simplificar el diseño, el funcionamiento, la optimización y el estado de las aplicaciones controladas por Azure SQL Database. Copilot puede mejorar la productividad ofreciendo la conversión de lenguaje natural a SQL y autoayuda para la administración de bases de datos.
Copilot proporciona respuestas pertinentes a las preguntas del usuario, lo que simplifica la administración de bases de datos al aprovechar el contexto de la base de datos, la documentación, las vistas de administración dinámica, el Almacén de consultas y otros orígenes de conocimiento. Por ejemplo:
- Los administradores de bases de datos pueden administrar de forma independiente las bases de datos y resolver problemas u obtener más información sobre el rendimiento y las funcionalidades de la base de datos.
- Los desarrolladores pueden formular preguntas sobre los datos como lo haría en texto o conversación para generar una consulta T-SQL. Los desarrolladores también pueden aprender a escribir consultas más rápido mediante explicaciones detalladas de la consulta generada.
Nota:
Las capacidades de Microsoft Copilot en Azure SQL Database se encuentran actualmente en versión preliminar para un número limitado de usuarios pioneros. Para registrarse en este programa, visita Solicitar acceso a Copilot en la base de datos de Azure SQL: Versión preliminar.
La versión preliminar de Copilot para la base de datos de Azure SQL incluye dos experiencias de Azure Portal:
Ubicación del portal | Experiencias |
---|---|
Editor de consultas de Azure Portal | Lenguaje natural a SQL: Esta experiencia en el editor de consultas de Azure Portal para Azure SQL Database traduce consultas de lenguaje natural a SQL, lo que hace que las interacciones con la base de datos sean más intuitivas. Para ver un tutorial y ejemplos de las funcionalidades de lenguaje natural a SQL, consulte De lenguaje natural a SQL en el editor de consultas de Azure Portal (versión preliminar). |
Microsoft Copilot para Azure | Integración de Azure Copilot: Esta experiencia agrega capacidades de Azure SQL a Microsoft Copilot para Azure, ofreciendo a los clientes asistencia autoguiada, lo que les permite administrar sus bases de datos y resolver problemas de forma independiente. |
Para obtener más información, consulta Preguntas frecuentes sobre las capacidades de Microsoft Copilot en Azure SQL Database (versión preliminar).
Contenido relacionado
- Creación e implementación de un recurso de Azure OpenAI Service
- Modelos de incrustación
- Muestras y ejemplos de IA para SQL
- Preguntas más frecuentes sobre Microsoft Copilot en Azure SQL Database (versión preliminar)
- Preguntas más frecuentes sobre inteligencia artificial responsable para Microsoft Copilot para Azure (versión preliminar)