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-chave essenciais para implementar o RAG com o Banco de Dados SQL do Azure e o OpenAI do Azure
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:
- Insira dados em uma tabela do Banco de Dados SQL do Azure.
- Vincule o Banco de Dados SQL do Azure à Pesquisa de IA do Azure.
- Crie um modelo GPT4 do Azure OpenAI e conecte-o à Pesquisa de IA do Azure.
- 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. Para obter mais informações, consulte Vetores.
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.
Pesquisa de vetor
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.
Os vetores no Banco de Dados SQL do Azure podem ser armazenados e consultados com eficiência, conforme descrito nas próximas seções, permitindo a pesquisa exata de vizinhos mais próxima com ótimo desempenho. Você não precisa decidir entre precisão e velocidade: você pode ter ambos. 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.
Para obter exemplos adicionais sobre como usar o Banco de dados SQL e o OpenAI, confira os seguintes artigos:
- Gerar imagens com o Serviço OpenAI do Azure (DALL-E) e o Banco de Dados SQL do Azure
- Usar pontos de extremidade REST do OpenAI com o Banco de Dados SQL do Azure
Vetores
Tipo de dados vetoriais
Em novembro de 2024, o novo tipo de dados de vetor foi introduzido no Banco de Dados SQL do Azure.
O tipo de vetor dedicado permite o armazenamento eficiente e otimizado de dados de vetor e vem com um conjunto de funções para ajudar os desenvolvedores a simplificar a implementação de pesquisa de vetor e similaridade. O cálculo da distância entre dois vetores pode ser feito em uma linha de código usando a nova função VECTOR_DISTANCE
. Para obter mais informações sobre o tipo de dados de vetor e as funções relacionadas, consulte Visão geral dos vetores no Mecanismo de Banco de Dados SQL.
Por exemplo:
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)
Vetores em versões mais antigas do SQL Server
Embora versões mais antigas do mecanismo do SQL Server, até e incluindo o SQL Server 2022, não tenham um tipo de vetor nativo, um vetor não é 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
Azure AI Search
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.
- OpenAI do Azure em seus dados
- Geração Aumentada de Recuperação (RAG) na Pesquisa de IA do Azure
- Busca em vetores com o Banco de Dados SQL do Azure e a Pesquisa de IA do Azure
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:
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:
- Como eu criei um recomendador de sessão em 1 hora usando OpenAI.
- Usando a geração aumentada de recuperação para criar um assistente de sessão de conferência
Integração do LangChain
O LangChain é uma estrutura bem conhecida para o desenvolvimento de aplicativos alimentados por modelos de linguagem. Para obter exemplos que mostram como o LangChain pode ser usado para criar um Chatbot com base em seus dados, consulte:
- Crie um chatbot em seus dados em uma hora com SQL do Azure, Langchain e Chainlit: crie um chatbot usando o padrão RAG com base em seus dados usando Langchain para orquestrar chamadas LLM e Chainlit para a interface do usuário.
- Criando seu Copilot de Banco de Dados para SQL do Azure com o Azure OpenAI GPT-4: crie uma experiência semelhante a um copilot para consultar seus bancos de dados usando linguagem natural.
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.
- O chatbot final?: crie um chatbot com base em seus dados usando padrões NL2SQL e RAG para a experiência final do usuário.
- Amostra de incorporações do OpenAI: um exemplo que mostra como usar o kernel semântico e a memória do kernel para trabalhar com incorporações em um aplicativo .NET usando o SQL Server como banco de dados de vetor.
- Semantic Kernel e Kernel Memory - SQL Connector - Fornece uma conexão com um banco de dados SQL para o Semantic Kernel para as memórias.
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).
Conteúdo relacionado
- Criar e implantar um recurso do Serviço OpenAI do Azure
- Modelos de incorporações
- Amostras e exemplos de IA do SQL
- Perguntas frequentes sobre habilidades do Microsoft Copilot no Banco de Dados SQL do Microsoft Azure (Preview)
- Perguntas frequentes sobre IA responsável para o Microsoft Copilot para Azure (versão prévia)