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.
Copilot para 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

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:

  1. Inserción de los datos en una tabla de Azure SQL Database.
  2. Vincular Azure SQL Database a Azure AI Search.
  3. Cree un modelo GPT4 de Azure OpenAI y conéctelo a Azure AI Search.
  4. 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.

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.

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.

Dado que las incrustaciones de Azure SQL Database se pueden almacenar y consultar de forma eficaz mediante para admitir índices de almacén de columnas, lo que permite una búsqueda de vecinos exactamente más cercana con un rendimiento excelente, no es necesario decidir entre precisión y velocidad: puede tener ambas opciones. 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.

Captura de pantalla de un bot de IA que responde a la pregunta mediante los datos almacenados en Azure SQL Database.

Para obtener ejemplos adicionales sobre el uso de SQL Database y OpenAI, consulte los siguientes artículos:

Vectores

Aunque Azure SQL Database no tiene un tipo de vector 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

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.

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:

Diagrama de diferentes características de IA para compilar aplicaciones inteligentes con Azure SQL Database.

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:

Integración de LangChain

LangChain es un marco conocido para desarrollar aplicaciones con tecnología de modelos de lenguaje.

Para ver un ejemplo que muestra cómo se puede usar LangChain para crear un bot de chat en sus propios datos, consulte Creación de su propio copiloto de base de datos para Azure SQL con Azure OpenAI GPT-4.

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.

Copilot para Azure SQL Database (versión preliminar)

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:

Copilot en la base de datos de Azure SQL se encuentra 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, consulte Preguntas frecuentes sobre Copilot en Microsoft Azure SQL (versión preliminar).