Partilhar via


Aplicações inteligentes e IA

Aplica-se a: Base de Dados SQL do Azurebase de dados SQL em Fabric

Este artigo apresenta uma visão geral da utilização de opções de inteligência artificial (IA), como OpenAI e vetores, para construir aplicações inteligentes com o SQL Database Engine em Base de Dados SQL do Azure e Fabric base de dados SQL.

Veja este vídeo na série Base de Dados SQL do Azure essentials para uma breve visão geral de como construir uma aplicação pronta para IA:

Para amostras e exemplos, visite o repositório SQL AI Samples.

Visã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. Este processo é conhecido como Geração Aumentada por Recuperação, ou RAG. O Base de Dados SQL do Azure e o Fabric SQL Database têm muitas funcionalidades que suportam este novo padrão, tornando-se excelentes bases de dados para construir aplicações inteligentes.

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

Opção AI Descrição
SQL MCP Server Uma interface estável e governada para a sua base de dados, definindo um conjunto de ferramentas e configuração.
Azure OpenAI Gerar embeddings para RAG e integrar com qualquer modelo suportado pelo Azure OpenAI.
Vetores Saiba como armazenar vetores e usar funções vetoriais no banco de dados.
Pesquisa de IA do Azure Utilize a sua base de dados juntamente com o Pesquisa de IA do Azure para treinar o LLM com os 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.
Funcionalidades do Copilot no Base de Dados SQL do Azure Saiba mais sobre o conjunto de experiências assistidas por IA concebidas para simplificar o design, operação, otimização e saúde das aplicações orientadas pelo Base de Dados SQL do Azure.
Competências do Copilot na base de dados SQL do Fabric Saiba mais sobre o conjunto de experiências assistidas por IA concebidas para simplificar o design, operação, otimização e saúde das aplicações baseadas em bases de dados Fabric SQL.

SQL MCP Server em aplicações de IA

O SQL MCP Server situa-se diretamente no caminho de dados para agentes de IA.

  • À medida que os modelos geram pedidos, o servidor fornece uma interface estável e governada para a sua base de dados.
  • Em vez de expor o esquema bruto ou depender de SQL gerado, encaminha todo o acesso através de um conjunto definido de ferramentas apoiadas pela sua configuração.

Esta abordagem mantém as interações previsíveis e garante que cada operação está alinhada com as permissões e a estrutura que define. Para mais informações, consulte aka.ms/sql/mcp.

Ao separar o raciocínio da execução, os modelos focam-se na intenção, enquanto o SQL MCP Server trata de como essa intenção se torna consultas válidas. A área de superfície mantém-se limitada, pois os agentes podem descobrir capacidades disponíveis, compreender entradas e saídas, e operar sem adivinhar. Este design reduz erros e elimina a necessidade de engenharia de prompts complexa para compensar a ambiguidade do esquema.

Para os programadores, esta abordagem significa que a IA pode participar com segurança em cargas de trabalho reais.

É possível:

  • Defina entidades uma vez
  • Aplicar funções e restrições

A plataforma então:

  • Impõe consistentemente entidades, funções e restrições.
  • Cria uma base fiável para aplicações orientadas por agentes sobre dados SQL.

A mesma configuração que alimenta o REST e o GraphQL também governa o MCP, por isso não há duplicação de regras ou lógica. Para mais informações, consulte aka.ms/dab/docs.

Conceitos-chave para implementar o RAG com o Azure OpenAI

Esta secção inclui conceitos-chave que são críticos para implementar o RAG com o Azure OpenAI no Base de Dados SQL do Azure ou Fabric SQL.

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 Base de Dados SQL do Azure poderia ser:

  1. Insira dados em uma tabela.
  2. Ligue Base de Dados SQL do Azure ao Pesquisa de IA do Azure.
  3. Crie um modelo Azure OpenAI GPT-4 e ligue-o ao Pesquisa de IA do Azure.
  4. Converse e faça perguntas sobre os seus dados utilizando o modelo treinado Azure OpenAI da sua aplicação e do Base de Dados SQL do Azure.

O padrão RAG, juntamente com a engenharia de prompts, melhora a qualidade da resposta ao oferecer mais informação contextual ao modelo. O RAG permite que o modelo aplique uma base de conhecimento mais ampla, incorporando fontes externas relevantes no processo de geração, resultando em respostas mais abrangentes e informadas. Para mais informações sobre LLMs grounding, consulte Grounding LLMs - Microsoft Community Hub.

Prompts e engenharia de prompts

Um prompt é texto ou informação específica que serve como instrução para um grande modelo de linguagem (LLM), ou como dados contextuais sobre os quais o LLM pode construir. Um prompt pode assumir várias formas, como uma pergunta, uma instrução ou até mesmo um trecho de código.

Exemplos de prompts que pode usar para gerar uma resposta a partir de um LLM incluem:

  • Instruções: forneça orientações ao 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
  • Indicações: direcione a saída do LLM na direção certa
  • Conteúdo de apoio: 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 prompt engineering. Para mais informações sobre prompts e boas práticas para a criação de prompts, consulte Azure OpenAI Service.

Símbolos

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 hamburger é dividida em tokens como ham, bur, e ger enquanto uma palavra curta e comum como pear é considerada um único token.

No Azure OpenAI, a API tokeniza o texto de entrada. 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. Cada modelo tem limites no número de tokens que pode receber num único pedido e resposta do Azure OpenAI. Para saber mais, consulte Azure OpenAI Service quotas e limites.

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 de valores ASCII. O processo para transformar dados em um vetor é chamado de vetorização . Para obter mais informações, consulte Exemplos de vetor.

Trabalhar com dados vetoriais é mais fácil com a introdução do tipo de dados vetoriais e funções vetoriais.

Incorporações

As incorporações são vetores que representam características importantes dos dados. Os embeddings são frequentemente aprendidos através de um modelo de deep learning, e modelos de aprendizagem automática e IA utilizam-nos como funcionalidades. As incorporações também podem capturar semelhança semântica entre conceitos semelhantes. Por exemplo, ao gerar uma imersão para as palavras person e human, pode-se esperar que as suas imersão (representação vetorial) sejam semelhantes em valor, uma vez que as palavras também são semanticamente semelhantes.

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

Para uma lista de respostas a perguntas comuns sobre vetores e embeddings, veja:

A pesquisa vetorial é o processo de encontrar todos os vetores num conjunto de dados que são semanticamente semelhantes a um vetor de consulta específico. Assim, um vetor de consulta para a pesquisa de palavras human percorre todo o dicionário em busca de palavras semanticamente semelhantes, e deve encontrar a palavra person como uma correspondência próxima. Uma métrica de similaridade, como a similaridade cosseno, mede esta proximidade ou diferença. Quanto mais próximos estiverem os vetores em semelhança, menor a distância entre eles.

Considere um cenário em que faz uma consulta sobre milhões de documentos para encontrar os documentos mais semelhantes nos seus dados. Pode criar embeddings para os seus dados e documentos de consulta 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. Existem também compromissos entre a pesquisa exaustiva e os métodos de pesquisa aproximada do vizinho mais próximo (ANN), incluindo latência, rendimento, precisão e custo. Todos estes compromissos dependem dos requisitos da sua candidatura.

Pode armazenar e consultar vetores de forma eficiente no Base de Dados SQL do Azure, o que permite pesquisas exatas de vizinhos mais próximos com excelente 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.

Para obter mais detalhes sobre vetores e incorporações, consulte:

Azure OpenAI

A incorporação é o processo de representar o mundo real como dados. Podes converter texto, imagens ou sons em embeddings. Os modelos OpenAI do Azure podem transformar informação do mundo real em embeddings. Pode aceder aos modelos como endpoints REST, assim pode usá-los facilmente a partir da base de dados SQL do Azure usando o sistema de procedimento armazenado 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 OpenAI. Pode permitir que qualquer um dos modelos disponíveis aceda aos dados armazenados em Base de Dados SQL do Azure para criar soluções onde os seus utilizadores possam interagir com os dados, como o exemplo seguinte.

Captura de ecrã de um bot de IA a responder à pergunta usando dados armazenados em Base de Dados SQL do Azure.

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

Exemplos de vetores

O tipo de dado vetorial dedicado permite o armazenamento eficiente e otimizado dos dados vetoriais. Vem com um conjunto de funções para ajudar os programadores a simplificar a implementação da pesquisa vetorial e de similaridade. Podes calcular a distância entre dois vetores numa linha de código usando a VECTOR_DISTANCE função. Para mais informações e exemplos, veja Pesquisa por vetores e índices vetoriais no Motor 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)

Implemente padrões RAG com Base de Dados SQL do Azure e Pesquisa de IA do Azure. Pode executar modelos de chat suportados em dados armazenados no Base de Dados SQL do Azure, sem ter de treinar ou afinar modelos, graças à integração do Pesquisa de IA do Azure com o Azure OpenAI e o Base de Dados SQL do Azure. Ao executar modelos nos seus dados, pode conversar e analisar os seus dados com maior precisão e rapidez.

Aplicações inteligentes

Pode usar o Base de Dados SQL do Azure para construir aplicações inteligentes que incluam funcionalidades de IA, como recomendadores e Geração Aumentada de Recuperação (RAG), como demonstra o diagrama seguinte:

Diagrama de diferentes funcionalidades de IA para construir aplicações inteligentes com Base de Dados SQL do Azure.

Para obter um exemplo de ponta a ponta para criar um aplicativo habilitado para IA usando sessões abstratas como um conjunto de dados de exemplo, consulte:

Para mais detalhes sobre aplicações inteligentes, veja:

Integração LangChain

LangChain é uma estrutura bem conhecida para o desenvolvimento de aplicações alimentadas por modelos de linguagem. Para exemplos que mostrem como o LangChain pode ser usado para criar um chatbot com base nos seus próprios dados, veja:

Alguns exemplos sobre como usar SQL do Azure com LangChain:

Exemplos de ponta a ponta:

Integração "Kernel Semântico"

Kernel Semântico é um SDK open-source que podes usar para construir facilmente agentes que chamam o teu código existente. Como um SDK altamente extensível, pode usar o Kernel Semântico com modelos da OpenAI, Azure OpenAI, Hugging Face e mais. Ao combinar o seu código existente em C#, Python e Java com estes modelos, pode construir agentes que respondam a perguntas e automatizam processos.

Um exemplo que mostra como o Kernel Semântico ajuda facilmente a construir uma solução com IA está aqui:

  • O melhor chatbot?: Crie um chatbot em seus próprios dados usando os padrões NL2SQL e RAG para a melhor experiência do usuário.

Competências do Microsoft Copilot no Base de Dados SQL do Azure

Microsoft Copilot em Base de Dados SQL do Azure (pré-visualização) é um conjunto de experiências assistidas por IA concebidas para simplificar o design, operação, otimização e saúde de aplicações orientadas por Base de Dados SQL do Azure.

O Copilot fornece respostas relevantes às perguntas dos utilizadores, simplificando a gestão de bases de dados através do uso do contexto da base de dados, documentação, vistas dinâmicas de gestão, Query Store e outras fontes de conhecimento. Por exemplo:

  • Os administradores de banco de dados podem gerenciar bancos de dados de forma independente e resolver problemas, ou saber mais sobre o desempenho e os recursos do seu 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 escrever consultas mais rapidamente através de explicações detalhadas da consulta gerada.

Observação

As competências do Microsoft Copilot no Base de Dados SQL do Azure estão atualmente em pré-visualização para um número limitado de utilizadores iniciais. Para se inscrever neste programa, visite Solicite Acesso a Copilot em Base de Dados SQL do Azure: Pré-visualização.

Base de dados Microsoft Copilot in Fabric SQL (pré-visualização)

Copilot para base de dados SQL em Microsoft Fabric inclui assistência integrada de IA com as seguintes funcionalidades:

  • Conclusão de código: Começa a escrever T-SQL no editor de consultas SQL e Copilot gera automaticamente uma sugestão de código para ajudar a concluir a tua consulta. Prima a tecla Tab para aceitar a sugestão de código ou continue a escrever para ignorá-la.

  • 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 e pressione um dos botões de ação rápida para executar a ação na sua consulta.

    • Fix: Copilot corrige erros no seu código à medida que surgem mensagens de erro. Os cenários de erro podem incluir código T-SQL incorreto ou não suportado, ortografia errada e mais. O Copilot também fornece comentários que explicam as alterações e sugerem as melhores práticas em SQL.

    • Explain: Copilot fornece explicações em linguagem natural da sua consulta SQL e do esquema da base de dados em formato de comentários.

  • Painel de chat: Use o painel de chat para fazer perguntas a Copilot através da linguagem natural. O Copilot responde com uma consulta SQL gerada ou linguagem natural com base na pergunta feita.

    • Natural Language to SQL: Gere código T-SQL a partir de solicitações de texto simples e obtenha sugestões de perguntas a serem feitas para acelerar seu fluxo de trabalho.

    • Perguntas e Respostas baseadas em documentos: Faça ao Copilot perguntas sobre capacidades gerais de bases de dados SQL, e ele responde em linguagem natural. O Copilot também ajuda a encontrar documentação relacionada com o seu pedido.

O Copilot para base de dados SQL utiliza nomes de tabelas e vistas, nomes de colunas, chave primária e metadados de chave estrangeira para gerar código T-SQL. O Copilot para base de dados SQL não utiliza dados em tabelas para gerar sugestões T-SQL.