Share via


Aplicativos inteligentes com o Banco de Dados SQL do Azure

Aplica-se a:Banco de Dados SQL do Azure

Este artigo fornece uma visão geral do uso de opções de inteligência artificial (IA), como o OpenAI e vetores, para criar aplicativos inteligentes com o Banco de Dados SQL do Azure.

Para obter amostras e exemplos, visite o repositório SQL de amostras de IA.

Assista a este vídeo na série de fundamentos do Banco de Dados SQL do Azure para obter uma breve visão geral da criação de um aplicativo pronto para IA:

Visão geral

Os grandes modelos de linguagem (LLMs) permitem que os desenvolvedores criem aplicativos alimentados por IA com uma experiência do usuário familiar.

O uso de LLMs em aplicativos traz maior valor e uma experiência do usuário aprimorada quando os modelos podem acessar os dados certos, no momento certo, do seu banco de dados do aplicativo. Esse processo é conhecido como RAG (Retrieval Augmented Generation), e o Banco de Dados SQL do Azure tem muitos recursos que são compatíveis com esse novo padrão, tornando-o um ótimo banco de dados para criar aplicativos inteligentes.

Os seguintes links fornecem código de exemplo de várias opções do Banco de Dados SQL do Azure para criar aplicativos inteligentes:

Opção de IA Descrição
OpenAI do Azure Gere incorporações para o RAG e integre a qualquer modelo compatível com o OpenAI do Azure.
Vetores Saiba como armazenar os vetores de consultas no Banco de Dados SQL do Azure.
Azure AI Search Use o Banco de Dados SQL do Azure junto com a Pesquisa de IA do Azure para treinar o LLM em seus dados.
Aplicativos inteligentes Saiba como criar uma solução completa usando um padrão comum que pode ser replicado em qualquer cenário.
Habilidades do Copilot no Banco de Dados SQL do Azure Saiba mais sobre o conjunto de experiências assistidas por IA projetadas para simplificar o design, a operação, a otimização e a integridade de aplicativos controlados pelo Banco de Dados SQL do Azure.

Conceitos principais

Esta seção inclui conceitos-chave que são essenciais para implementar o RAG com o Banco de Dados SQL do Azure e o OpenAI do Azure.

RAG (Geração Aumentada de Recuperação)

O RAG é uma técnica que aprimora a capacidade do LLM de produzir respostas relevantes e informativas, recuperando dados adicionais de fontes externas. Por exemplo, o RAG pode consultar artigos ou documentos que contenham conhecimento específico do domínio relacionado à pergunta ou solicitação do usuário. O LLM pode então usar esses dados recuperados como referência ao gerar sua resposta. Por exemplo, um padrão simples de RAG utilizando o Banco de Dados SQL do Azure poderia ser:

  1. Insira dados em uma tabela do Banco de Dados SQL do Azure.
  2. Vincule o Banco de Dados SQL do Azure à Pesquisa de IA do Azure.
  3. Crie um modelo GPT4 do Azure OpenAI e conecte-o à Pesquisa de IA do Azure.
  4. Converse e faça perguntas sobre seus dados usando o modelo treinado do OpenAI do Azure de seu aplicativo e do Banco de Dados SQL do Azure.

O padrão de RAG, com engenharia de prompts, serve ao propósito de melhorar a qualidade da resposta, oferecendo mais informações contextuais ao modelo. O RAG habilita o modelo para aplicar uma base de conhecimento mais ampla ao incorporar fontes externas relevantes no processo de geração, resultando em respostas mais abrangentes e informadas. Para obter mais informações sobre os fundamentos de LLMs, confira Fundamentos de LLMs - Hub da Microsoft Community.

Prompts e engenharia de prompts

Uma solicitação refere-se a um texto ou uma informação específica que serve como uma instrução para um LLM ou como dados contextuais nos quais o LLM pode se basear. Um prompt pode assumir várias formas, como uma pergunta, uma declaração ou até mesmo um trecho de código.

Solicitações que podem ser usadas para gerar uma resposta de um LLM:

  • Instruções: fornecem diretivas para o LLM
  • Conteúdo primário: fornece informações ao LLM para processamento
  • Exemplos: ajudam a condicionar o modelo a uma tarefa ou processo específico
  • Dicas: direcionam a saída do LLM na direção certa
  • Conteúdo de suporte: representa informações suplementares que o LLM pode utilizar para gerar saída

O processo de criar bons prompts para um cenário é chamado de engenharia de prompts. Para obter mais informações sobre prompts e melhores práticas de engenharia de prompts, confira Serviço OpenAI do Azure.

Tokens

Os tokens são pequenos pedaços de texto gerados pela divisão do texto de entrada em segmentos menores. Esses segmentos podem ser palavras ou grupos de caracteres, variando em comprimento de um único caractere a uma palavra inteira. Por exemplo, a palavra hamburger seria dividida em tokens como ham, bur e ger, enquanto uma palavra curta e comum como pear seria considerada um único token.

No OpenAI do Azure, o texto de entrada fornecido à API é transformado em tokens (tokenizado). O número de tokens processados em cada solicitação de API depende de fatores como o comprimento dos parâmetros de entrada, saída e solicitação. A quantidade de tokens que está sendo processada também afeta o tempo de resposta e a taxa de transferência dos modelos. Existem limites para a quantidade de tokens que cada modelo pode receber em uma única solicitação/resposta do OpenAI do Azure. Para saber mais, confira Cotas e limites do Serviço OpenAI do Azure.

Vetores

Vetores são matrizes ordenadas de números (normalmente floats) que podem representar informações sobre alguns dados. Por exemplo, uma imagem pode ser representada como um vetor de valores de pixel, ou uma cadeia de caracteres de texto pode ser representada como um vetor de valores ASCII. O processo para transformar dados em um vetor é chamado vetorização.

Incorporações

As inserções são vetores que representam características importantes dos dados. As incorporações são frequentemente aprendidas pelo uso de um modelo de aprendizado profundo, e os modelos de aprendizado de máquina e IA as utilizam como recursos. As inserções também podem capturar a semelhança semântica entre conceitos semelhantes. Por exemplo, ao gerar uma inserção para as palavras person e human, esperaríamos que suas inserções (representação vetorial) fossem semelhantes em valor, pois as palavras também são semanticamente semelhantes.

O OpenAI do Azure apresenta modelos para criar incorporações de dados de texto. O serviço interrompe o texto em tokens e gera inserções utilizando modelos pré-treinados pela OpenAI. Para saber mais, confira Criar incorporações com o OpenAI do Azure.

A busca em vetores refere-se ao processo de encontrar todos os vetores em um conjunto de dados que sejam semanticamente semelhantes a um vetor de consulta específico. Portanto, um vetor de consulta para a palavra human pesquisa em todo o dicionário palavras semanticamente semelhantes, e deve encontrar a palavra person como uma correspondência próxima. Essa proximidade, ou distância, é medida utilizando uma métrica de similaridade, como a similaridade de cosseno. Quanto mais semelhantes forem os vetores, menor será a distância entre eles.

Considere um cenário em que você executa uma consulta em milhões de documentos para encontrar os documentos mais semelhantes em seus dados. Você pode criar incorporações para seus dados e documentos de consulta usando o OpenAI do Azure. Em seguida, pode realizar uma busca em vetores para encontrar os documentos mais semelhantes do seu conjunto de dados. No entanto, realizar uma busca em vetores em alguns exemplos é trivial. Realizar essa mesma pesquisa em milhares ou milhões de pontos de dados torna-se um desafio. Existem também compromissos entre a pesquisa exaustiva e os métodos de pesquisa de aproximação do vizinho mais próximo (ANN), incluindo latência, produtividade, precisão e custo, e tudo isso depende dos requisitos de seu aplicativo.

Como as incorporações do Banco de Dados SQL do Azure podem ser armazenadas e consultadas com eficiência usando o suporte do índice columnstore, permitindo a pesquisa precisa do vizinho mais próximo com um ótimo desempenho, você não precisa decidir entre precisão e velocidade: você pode ter ambas. O armazenamento de incorporações de vetores junto com os dados em uma solução integrada minimiza a necessidade de gerenciar a sincronização de dados e acelera o tempo de colocação no mercado para o desenvolvimento de aplicativos de IA.

OpenAI do Azure

A incorporação é o processo de representação do mundo real como dados. Texto, imagens ou sons podem ser convertidos em incorporações. Os modelos do OpenAI do Azure são capazes de transformar informações do mundo real em incorporações. Os modelos estão disponíveis como pontos de extremidade REST e, portanto, podem ser facilmente consumidos do Banco de Dados SQL do Azure usando o procedimento armazenado do 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'));

Usar uma chamada para um serviço REST para obter incorporações é apenas uma das opções de integração que você tem ao trabalhar com o Banco de dados SQL e o OpenAI. Você pode permitir que qualquer um dos modelos disponíveis acesse dados armazenados no Banco de Dados SQL do Azure para criar soluções em que seus usuários possam interagir com os dados, como o exemplo a seguir.

Captura de tela de um bot de IA respondendo à pergunta usando dados armazenados no Banco de Dados SQL do Azure.

Para obter exemplos adicionais sobre como usar o Banco de dados SQL e o OpenAI, confira os seguintes artigos:

Vetores

Embora o Banco de Dados SQL do Azure não tenha um tipo de vetor nativo, um vetor nada mais é do que uma tupla ordenada, e os bancos de dados relacionais são ótimos no gerenciamento de tuplas. Você pode pensar em uma tupla como o termo formal para uma linha em uma tabela.

O Banco de Dados SQL do Azure também é compatível com índices columnstore e a execução em modo de lote. Uma abordagem baseada em vetor é usada para processamento em modo de lote, o que significa que cada coluna em um lote tem seu próprio local de memória onde é armazenada como um vetor. Isso permite um processamento mais rápido e eficiente de dados em lotes.

O exemplo a seguir mostra como um vetor pode ser armazenado no Banco de dados SQL:

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 obter um exemplo que usa um subconjunto comum de artigos da Wikipédia com incorporações já geradas usando o OpenAI, confira Pesquisa de similaridade de vetores com o Banco de Dados SQL do Azure e o OpenAI.

Outra opção para aproveitar a Busca em vetores no banco de dados SQL do Azure é a integração com a IA do Azure usando as capacidades de vetorização integrada: busca em vetores com o Banco de Dados SQL do Azure e a Pesquisa de IA do Azure

Implemente padrões de RAG com o Banco de Dados SQL do Azure e A Pesquisa de IA do Azure. Graças à integração da Pesquisa de IA do Azure com o Azure OpenAI e o Banco de Dados SQL do Azure, você pode executar modelos de chat compatíveis em dados armazenados no Banco de Dados SQL do Azure sem precisar treinar ou ajustar modelos. Executar modelos em seus dados permite analisar e conversar sobre seus dados com mais precisão e velocidade.

Aplicativos inteligentes

É possível usar o Banco de Dados SQL do Azure para criar aplicativos inteligentes que incluem recursos de IA, como recomendadores, e a Geração Aumentada de Recuperação (RAG) conforme apresentado no diagrama a seguir:

Diagrama de diferentes recursos de IA para criar aplicativos inteligentes com o Banco de Dados SQL do Azure.

Para obter um exemplo completo para criar um aplicativo habilitado para IA usando um resumo das sessões como um conjunto de dados de amostra, consulte:

Integração do LangChain

O LangChain é uma estrutura bem conhecida para o desenvolvimento de aplicativos alimentados por modelos de linguagem.

Para obter um exemplo que mostra como o LangChain pode ser usado para criar um Chatbot em seus próprios dados, confira Criar seu próprio Copilot de banco de dados para SQL do Azure com o GPT-4 do OpenAI do Azure.

Integração do Kernel Semântico

O Kernel Semântico é um SDK de código aberto que permite criar facilmente agentes que podem chamar seu código existente. Como um SDK altamente extensível, você pode usar o Kernel Semântico com modelos do OpenAI, Azure OpenAI, Hugging Face e muito mais! Combinando seu código C#, Python e Java existente com esses modelos, você pode criar agentes que respondem a perguntas e automatizam processos.

Habilidades do Microsoft Copilot no Banco de Dados SQL do Azure

As Habilidades do Microsoft Copilot no Banco de Dados SQL do Azure (Preview) são um conjunto de experiências assistidas por IA criadas para simplificar o design, a operação, a otimização e a integridade de aplicativos baseados no Banco de Dados SQL do Azure. O Copilot pode melhorar a produtividade oferecendo linguagem natural para a conversão de SQL e autoajuda para a administração do banco de dados.

O Copilot fornece respostas relevantes às perguntas dos usuários, simplificando o gerenciamento do banco de dados utilizando o contexto do banco de dados, a documentação, as exibições de gerenciamento dinâmico, o Repositório de Consultas e outras fontes de conhecimento. Por exemplo:

  • Os administradores de banco de dados podem gerenciar os bancos de dados de forma independente e resolver problemas ou saber mais sobre o desempenho e os recursos do banco de dados.
  • Os desenvolvedores podem fazer perguntas sobre seus dados como fariam em texto ou conversa para gerar uma consulta T-SQL. Os desenvolvedores também podem aprender a gravar consultas mais rapidamente com as explicações detalhadas da consulta gerada.

Observação

As habilidades do Microsoft Copilot no Banco de Dados SQL do Azure estão no momento em versão Preview para um número limitado de usuários pioneiros. Para se inscrever nesse programa, acesse Solicitar acesso ao Copilot no Banco de Dados SQL do Azure: Versão Preliminar.

A versão preliminar do Copilot para Banco de Dados SQL do Azure inclui duas experiências do portal do Azure:

Local do portal Experiências
Editor de consultas do portal do Azure Linguagem natural para SQL: essa experiência no editor de consultas do portal do Azure para o Banco de Dados SQL do Azure converte consultas de linguagem natural em SQL, tornando as interações de banco de dados mais intuitivas. Para obter um tutorial e exemplos de linguagem natural para recursos SQL, confira Linguagem natural para SQL no Editor de consultas do portal do Azure (versão prévia).
Microsoft Copilot para Azure Integração do Azure Copilot: essa experiência adiciona habilidades do SQL do Azure aos clientes do Microsoft Copilot para Azure, com assistência autoguiada, capacitando-os a gerenciar seus bancos de dados e resolver problemas de forma independente.

Para obter mais informações, consulte as Perguntas frequentes sobre habilidades do Microsoft Copilot no Banco de Dados SQL do Azure (Preview).