Compartilhar via


Aplicativos inteligentes

Aplica-se a: Banco de Dados SQL do Azure Banco de Dados SQL no Fabric

Este artigo fornece uma visão geral do uso de opções de inteligência artificial (IA), como o OpenAI e vetores, para compilar aplicativos inteligentes com o Banco de Dados SQL do Azure e o Banco de Dados SQL do Fabric, que compartilha muitos desses recursos 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 Geração Aumentada de Recuperação (RAG), e tanto o Banco de Dados SQL do Azure quanto o Banco de Dados SQL do Fabric têm muitos recursos que dão suporte a esse novo padrão, o que os torna um banco de dados excelente para compilar aplicativos inteligentes.

Os links a seguir fornecem uma amostra de código de várias opções para compilar 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 e consultar vetores do banco de dados.
Azure AI Search Use seu banco de dados junto com a Pesquisa de IA do Azure para treinar o LLM com 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.
Habilidades do Copilot no Banco de Dados SQL do Fabric 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 dos aplicativos orientados pelo Banco de Dados SQL do Fabric.

Conceitos importantes para implementar o RAG com o OpenAI do Azure

Esta seção inclui os conceitos importantes que são críticos para implementar o RAG com o OpenAI do Azure no Banco de Dados SQL do Azure ou no Banco de Dados SQL do Fabric.

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. Inserir dados em uma tabela.
  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. 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.

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.

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

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

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 exemplos que mostram como o LangChain pode ser usado para criar um Chatbot com base em seus dados, consulte:

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).

Habilidades do Microsoft Copilot no Banco de Dados SQL do Fabric (versão prévia)

O Copilot para banco de dados SQL no Microsoft Fabric (versão prévia) inclui assistência de IA integrada com os seguintes recursos:

  • Preenchimento de código: comece a escrever T-SQL no editor de consultas SQL e o Copilot vai gerar automaticamente uma sugestão de código para ajudar a preencher sua consulta. A tecla Tab aceita a sugestão de código, ou continue digitando para ignorar a sugestão.

  • Ações rápidas: na faixa de opções do editor de consultas SQL, as opções Corrigir e Explicar são ações rápidas. Realce uma consulta SQL de sua escolha e selecione um dos botões de ação rápida para executar a ação selecionada em sua consulta.

    • Consertar: o Copilot pode corrigir erros em seu código como mensagens de erro surgem. Os cenários de erro podem incluir código T-SQL incorreto/sem suporte, ortografias incorretas e muito mais. O Copilot também fornecerá comentários que explicam as alterações e sugerem práticas recomendadas de SQL.

    • Explicar: o Copilot pode fornecer explicações da sua consulta SQL e do esquema de banco de dados em linguagem natural, no formato de comentários.

  • Painel de chat: use o painel de chat para fazer perguntas ao Copilot por meio de linguagem natural. O Copilot responde com uma consulta SQL gerada ou linguagem natural dependendo da pergunta.

    • Linguagem Natural para SQL: gere código T-SQL a partir de solicitações de texto sem formatação e obtenha sugestões de perguntas a serem feitas para acelerar seu fluxo de trabalho.

    • Q&A baseado em documento: faça perguntas ao Copilot sobre os recursos gerais do banco de dados SQL e ele responderá em linguagem natural. O Copilot também ajuda a encontrar a documentação relacionada à sua solicitação.

O Copilot para banco de dados SQL utiliza nomes de tabelas e exibições, nomes de coluna, chave primária e metadados de chave estrangeira para gerar código T-SQL. O Copilot para Banco de Dados SQL não usa dados em tabelas para gerar sugestões de T-SQL.