Partilhar 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 OpenAI e vetores, para criar aplicativos inteligentes com o Banco de Dados SQL do Azure.

Descrição geral

Os modelos de linguagem grande (LLMs) permitem que os desenvolvedores criem aplicativos baseados em IA com uma experiência de usuário familiar.

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

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

Opção AI Description
Azure OpenAI Gere incorporações para RAG e integre com qualquer modelo suportado pelo Azure OpenAI.
Vetores Saiba como armazenar e consultar vetores 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.
Aplicações inteligentes Saiba como criar uma solução completa usando um padrão comum que pode ser replicado em qualquer cenário.

Conceitos-chave

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

Geração aumentada de recuperação (RAG)

RAG é uma técnica que aumenta 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 prompt do usuário. O LLM pode então usar esses dados recuperados como referência ao gerar sua resposta. Por exemplo, um padrão RAG simples usando o Banco de Dados SQL do Azure pode 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 do Azure OpenAI GPT4 e conecte-o ao Azure AI Search.
  4. Converse por chat e faça perguntas sobre seus dados usando o modelo treinado do Azure OpenAI do seu aplicativo e do Banco de Dados SQL do Azure.

O padrão RAG, com engenharia rápida, serve o propósito de melhorar a qualidade da resposta, oferecendo mais informações contextuais ao modelo. A RAG permite que o modelo aplique uma base de conhecimentos mais ampla, incorporando fontes externas relevantes no processo de geração, resultando em respostas mais abrangentes e informadas. Para obter mais informações sobre o aterramento de LLMs, consulte Aterramento de LLMs - Microsoft Community Hub.

Prompts e engenharia de prompt

Um prompt refere-se a texto ou informações específicas que servem 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 instrução ou até mesmo um trecho de código.

A seguir está uma lista de prompts que podem ser usados para gerar uma resposta de um LLM:

  • Instruções: fornecer diretrizes para o LLM
  • Conteúdo primário: fornece informações ao LLM para processamento
  • Exemplos: ajudar a condicionar o modelo a uma tarefa ou processo específico
  • Cues: direcione a saída do LLM na direção certa
  • Conteúdo de suporte: representa informações suplementares que o LLM pode usar para gerar resultados

O processo de criação de bons prompts para um cenário é chamado de engenharia de prompt. Para obter mais informações sobre prompts e práticas recomendadas para engenharia de prompts, consulte 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 para uma palavra inteira. Por exemplo, a palavra seria dividida em tokens como , bure enquanto uma palavra hamburger curta e ger comum como hampear seria considerada um único token.

No Azure OpenAI, 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ão sendo processados também afeta o tempo de resposta e a taxa de transferência dos modelos. Há limites para o número de tokens que cada modelo pode receber em uma única solicitação/resposta do Azure OpenAI. Para saber mais, consulte Cotas e limites do Serviço OpenAI do Azure.

Vetores

Vetores são matrizes ordenadas de números (normalmente flutuadores) 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 ou valores ASCII. O processo para transformar dados em um vetor é chamado de vetorização.

Incorporações

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

O Azure OpenAI apresenta modelos para criar incorporações a partir de dados de texto. O serviço divide o texto em tokens e gera incorporações usando modelos pré-treinados pela OpenAI. Para saber mais, consulte Criando incorporações com o Azure OpenAI.

A pesquisa vetorial refere-se ao processo de encontrar todos os vetores em um conjunto de dados que são semanticamente semelhantes a um vetor de consulta específico. Portanto, um vetor de consulta para a palavra pesquisa palavras semanticamente semelhantes em todo o dicionário e deve encontrar a palavra humanperson como uma correspondência próxima. Essa proximidade, ou distância, é medida usando uma métrica de semelhança, como a semelhança de cosseno. Quanto mais próximos os vetores estiverem em semelhança, menor é a distância entre eles.

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

Como as incorporações do Banco de Dados SQL do Azure podem ser armazenadas e consultadas de forma eficiente usando o suporte ao índice columnstore, permitindo a pesquisa exata do vizinho mais próximo com ótimo desempenho, você não precisa decidir entre precisão e velocidade: você pode ter ambos. Armazenar incorporações vetoriais ao lado dos dados em uma solução integrada minimiza a necessidade de gerenciar a sincronização de dados e acelera seu tempo de comercialização para o desenvolvimento de aplicativos de IA.

Azure OpenAI

A incorporação é o processo de representar o mundo real como dados. Texto, imagens ou sons podem ser convertidos em incorporações. Os modelos 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 sp_invoke_external_rest_endpoint sistema:

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 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 onde seus usuários possam interagir com os dados, como o exemplo a seguir.

Screenshot of an AI bot answering the question using data stored in Azure SQL Database.

Para obter exemplos adicionais sobre como usar o Banco de dados SQL e o OpenAI, consulte 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 para gerenciar 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 dá suporte a índices columnstore e 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.

A seguir está um exemplo de 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 OpenAI, consulte Pesquisa de semelhança vetorial com o Banco de Dados SQL do Azure e o OpenAI.

Outra opção para aproveitar a Pesquisa Vetorial no banco de dados SQL do Azure é a integração com a IA do Azure usando os recursos de vetorização integrados: Pesquisa Vetorial com o Banco de Dados SQL do Azure e a Pesquisa de IA do Azure

Implemente padrões RAG com o Banco de Dados SQL do Azure e o Azure AI Search. Pode executar modelos de chat suportados em dados armazenados na Base de Dados SQL do Azure, sem ter de treinar ou ajustar modelos, graças à integração do Azure AI Search com o Azure OpenAI e a Base de Dados SQL do Azure. A execução de modelos em seus dados permite que você converse e analise seus dados com maior precisão e velocidade.

Aplicações inteligentes

O Banco de Dados SQL do Azure pode ser usado para criar aplicativos inteligentes que incluem recursos de IA, como recomendações e Geração Aumentada de Recuperação (RAG), como demonstra o diagrama a seguir:

Diagram of different AI features to build intelligent applications with Azure SQL Database.

Para obter um exemplo de ponta a ponta para criar um recomendado usando o resumo da sessão como um conjunto de dados de exemplo, consulte Como criei um recomendado de sessão em 1 hora usando o Open AI.

Integração LangChain

LangChain é uma estrutura bem conhecida para o desenvolvimento de aplicações alimentadas 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, consulte Criando seu próprio Copiloto de Banco de Dados para SQL do Azure com o Azure OpenAI GPT-4.