Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
A extensão azure_ai adiciona a capacidade de usar LLMs (modelos de linguagem extensos) e criar aplicativos de IA generativa no Banco de Dados do Azure para PostgreSQL, integrando o poder dos serviços de IA do Azure.
A IA generativa é uma forma de inteligência artificial na qual os LLMs são treinados para gerar conteúdo original com base na entrada de linguagem natural. Usando a azure_ai extensão, você pode usar os recursos da IA gerativa para processar consultas de linguagem natural diretamente do banco de dados.
Este artigo mostra a adição de recursos avançados de IA a uma instância de servidor flexível do Banco de Dados do Azure para PostgreSQL usando a azure_ai extensão. Ele mostra como você pode integrar o Azure OpenAI e o serviço de Linguagem de IA do Azure ao banco de dados usando a extensão.
Pré-requisitos
Uma assinatura do Azure. Crie um gratuitamente.
Acesso permitido ao OpenAI do Azure na assinatura do Azure desejada. Atualmente, o aplicativo concede acesso a esse serviço. Você pode solicitar acesso ao Azure OpenAI concluindo o formulário em acesso limitado para o Serviço OpenAI do Azure.
Um recurso do Azure OpenAI com o
text-embedding-ada-002modelo (versão 2) implantado. No momento, esse modelo está disponível apenas em determinadas regiões. Se você não tiver um recurso, o processo de criação de um está documentado no nosso Guia de implantação de recursos do OpenAI do Azure.Um recurso de Linguagem de IA do Azure. Se você não tiver um recurso de idioma, poderá criar um no portal do Azure seguindo as instruções fornecidas no início rápido para resumo. Use o tipo de preço gratuito (
Free F0) para experimentar o serviço e atualizar mais tarde para um nível pago para produção.Uma instância flexível de servidor do Azure Database for PostgreSQL em sua assinatura do Azure. Se você não tiver esse recurso, consulte Criar um Banco de Dados do Azure para PostgreSQL.
Conectar-se ao banco de dados usando psql no Azure Cloud Shell
Abra o Azure Cloud Shell em um navegador da Web. Selecione Bash como o ambiente. Se for solicitado, selecione a assinatura que você usou para o Banco de Dados do Azure para PostgreSQL e, em seguida, selecione Criar armazenamento.
Para recuperar os detalhes das conexões do banco de dados:
No portal do Azure, vá para o Banco de Dados do Azure para a instância de servidor flexível PostgreSQL.
No menu à esquerda, em Configurações, selecione Conectar. Copie o bloco Detalhes da Conexão.
Cole as linhas de declaração copiadas para variáveis de ambiente no terminal do Azure Cloud Shell. Substitua o
{your-password}token pela senha que você definiu quando criou o banco de dados.export PGHOST={your-server-name}.postgresql.database.azure.com export PGUSER={your-user-name} export PGPORT=5432 export PGDATABASE={your-database-name} export PGPASSWORD="{your-password}"Conecte-se ao banco de dados usando a ferramenta de linha de comando psql. Insira o seguinte comando no prompt:
psql
Instalar a extensão azure_ai
Você pode usar a extensão para integrar o azure_ai Azure OpenAI e os Serviços Cognitivos do Azure ao banco de dados. Para obter mais informações, consulte Gerar inserções de vetor com o Azure OpenAI no Banco de Dados do Azure para PostgreSQL.
Para habilitar a extensão em seu banco de dados:
Adicione a extensão à sua lista de permissões, conforme descrito em Permitir extensões.
No banco de dados no qual você planeja usar a
azure_aiextensão, instale a extensão conforme descrito em Criar extensões.
Inspecionar os objetos na extensão azure_ai
Examinar os objetos que a azure_ai extensão contém pode fornecer uma melhor compreensão dos recursos que ele oferece. Você pode usar o meta-comando \dx a partir do prompt de comando psql para listar os objetos na extensão:
\dx+ azure_ai
A saída do meta-comando mostra que a extensão azure_ai cria três esquemas, várias UDFs (funções definidas pelo usuário) e vários tipos de composição no banco de dados. A tabela a seguir descreve os esquemas que a extensão adiciona:
| Esquema | Descrição |
|---|---|
azure_ai |
Fornece o esquema principal em que a tabela de configuração e UDFs para interagir com ela residem. |
azure_openai |
Contém as UDFs que habilitam a chamada de um ponto de extremidade do OpenAI do Azure. |
azure_cognitive |
Fornece as UDFs e os tipos de composição relacionados à integração do banco de dados aos Serviços Cognitivos do Azure. |
As funções e os tipos estão todos associados a um dos esquemas. Para examinar as funções definidas no azure_ai esquema, use o \df metadado. Especifique o esquema cujas funções devem ser exibidas. Os \x auto comandos antes do \df comando ativam e desativam a exibição expandida automaticamente para facilitar a exibição da saída do comando no Azure Cloud Shell.
\x auto
\df+ azure_ai.*
Use a azure_ai.set_setting() função para definir o ponto de extremidade e os valores críticos para os serviços de IA do Azure. Ela aceita uma chave e o valor para atribuí-la. A azure_ai.get_setting() função fornece uma maneira de recuperar os valores definidos com a set_setting() função. Ele aceita a chave da configuração que você deseja exibir. Para ambos os métodos, a chave deve ser uma das seguintes:
| Chave | Descrição |
|---|---|
azure_openai.endpoint |
Um ponto de extremidade do OpenAI do Azure com suporte (por exemplo, https://example.openai.azure.com). |
azure_openai.subscription_key |
Uma chave de assinatura para um recurso do Azure OpenAI. |
azure_cognitive.endpoint |
Um ponto de extremidade dos Serviços Cognitivos com suporte (por exemplo, https://example.cognitiveservices.azure.com). |
azure_cognitive.subscription_key |
Uma chave de assinatura para um recurso dos Serviços Cognitivos. |
Importante
Como as informações de conexão dos serviços de IA do Azure, incluindo chaves de API, são armazenadas em uma tabela de configuração no banco de dados, a azure_ai extensão define uma função chamada azure_ai_settings_manager para ajudar a garantir que essas informações sejam protegidas e acessíveis somente aos usuários que têm essa função. Essa função permite a leitura e gravação de configurações relacionadas à extensão.
Somente os superusuários e membros da função azure_ai_settings_manager podem invocar as funções azure_ai.get_setting() e azure_ai.set_setting(). No Banco de Dados do Azure para PostgreSQL, todos os usuários administradores têm a função azure_ai_settings_manager.
Gerar inserções de vetor com o OpenAI do Azure
O esquema azure_ai da extensão azure_openai permite o uso OpenAI do Azure para criar inserções de vetor para valores de texto. Usando esse esquema, você pode gerar inserções com o Azure OpenAI diretamente do banco de dados para criar representações de vetor de texto de entrada. Essas representações podem ser usadas em pesquisas de similaridade de vetor e consumidas por modelos de machine learning.
As inserções são uma técnica de uso de modelos de machine learning para avaliar o quão estreitamente as informações estão relacionadas entre si. Essa técnica permite a identificação eficiente de relações e semelhanças entre dados, para que os algoritmos possam identificar padrões e fazer previsões precisas.
Definir o ponto de extremidade e a chave do OpenAI do Azure
Antes de usar as funções do azure_openai, configure a extensão com o endpoint e a chave do serviço Azure OpenAI.
No portal do Azure, acesse o recurso do Azure OpenAI. No menu à esquerda, em Gerenciamento de Recursos, selecione Chaves e Endpoint.
Copie o ponto de extremidade e a chave de acesso. Você pode usar
KEY1ouKEY2. Ter sempre duas chaves permite girar e regenerar chaves com segurança, sem causar interrupção de serviço.No comando a seguir, substitua os tokens
{endpoint}e{api-key}pelos valores recuperados do portal do Azure. Em seguida, execute os comandos nopsqlna janela do prompt de comando para adicionar seus valores à tabela de configuração.SELECT azure_ai.set_setting('azure_openai.endpoint','{endpoint}'); SELECT azure_ai.set_setting('azure_openai.subscription_key', '{api-key}');Verifique as configurações escritas na tabela de configuração:
SELECT azure_ai.get_setting('azure_openai.endpoint'); SELECT azure_ai.get_setting('azure_openai.subscription_key');
A extensão azure_ai agora está conectada à sua conta do OpenAI do Azure e pronta para gerar inserções de vetor.
Preencher o banco de dados com dados de exemplo
Este artigo usa um pequeno subconjunto do conjunto de dados BillSum para fornecer dados de texto de exemplo para gerar vetores. Este conjunto de dados fornece uma lista de projetos de lei do Congresso dos Estados Unidos e do Estado da Califórnia. Você pode baixar o bill_sum_data.csv arquivo que contém esses dados do repositório GitHub para exemplos do Azure.
Para hospedar os dados de exemplo no banco de dados, crie uma tabela chamada bill_summaries:
CREATE TABLE bill_summaries
(
id bigint PRIMARY KEY,
bill_id text,
bill_text text,
summary text,
title text,
text_len bigint,
sum_len bigint
);
Usando o comando PostgreSQL COPY da linha de comando psql, carregue os dados de exemplo do arquivo CSV na tabela bill_summaries. Especifique que a primeira linha do arquivo CSV é uma linha de cabeçalho.
\COPY bill_summaries (id, bill_id, bill_text, summary, title, text_len, sum_len) FROM PROGRAM 'curl "https://raw.githubusercontent.com/Azure-Samples/Azure-OpenAI-Docs-Samples/main/Samples/Tutorials/Embeddings/data/bill_sum_data.csv"' WITH CSV HEADER ENCODING 'UTF8'
Habilitar o suporte ao vetor
Você pode usar a azure_ai extensão para gerar inserções para texto de entrada. Para permitir que os vetores gerados sejam armazenados junto com o restante dos dados no banco de dados, você deve instalar a pgvector extensão. Siga as diretrizes na documentação sobre como habilitar o suporte a vetores em seu banco de dados.
Com o suporte de vetor adicionado ao banco de dados, adicione uma nova coluna à bill_summaries tabela usando o vector tipo de dados para armazenar inserções na tabela. O text-embedding-ada-002 modelo produz vetores com 1.536 dimensões, portanto, você deve especificar 1536 como o tamanho do vetor.
ALTER TABLE bill_summaries
ADD COLUMN bill_vector vector(1536);
Gerar e armazenar vetores
A tabela bill_summaries agora está pronta para armazenar inserções. Usando a azure_openai.create_embeddings() função, você cria vetores para o bill_text campo e insere-os na coluna recém-criada bill_vector na bill_summaries tabela.
Antes de usar a create_embeddings() função, execute o seguinte comando para inspecioná-la e examinar os argumentos necessários:
\df+ azure_openai.*
A Argument data types propriedade na saída do \df+ azure_openai.* comando revela a lista de argumentos que a função espera:
| Argumento | Tipo | Padrão | Descrição |
|---|---|---|---|
deployment_name |
text |
Nome da implantação no portal do Azure AI Foundry que contém o text-embeddings-ada-002 modelo. |
|
input |
text |
Texto de entrada usado para criar inserções. | |
timeout_ms |
integer |
3600000 |
Tempo limite em milissegundos, após o qual a operação é interrompida. |
throw_on_error |
boolean |
true |
Sinalizador que indica se a função deve, por erro, gerar uma exceção que resulta em uma reversão das transações de encapsulamento. |
O primeiro argumento é o deployment_name valor, que foi atribuído quando seu modelo de inserção foi implantado em sua conta do Azure OpenAI. Para recuperar esse valor:
Acesse o recurso do Azure OpenAI no portal do Azure.
No menu à esquerda, em Gerenciamento de Recursos, selecione Implantações de modelo para abrir o portal do Azure AI Foundry.
No portal do Azure AI Foundry, selecione Implantações. No painel Implantações , copie o valor do nome da implantação associado à implantação do
text-embedding-ada-002modelo.
Usando essas informações, execute uma consulta para atualizar cada registro na bill_summaries tabela. Insira as inserções de vetor geradas para o bill_text campo na bill_vector coluna usando a azure_openai.create_embeddings() função. Substitua {your-deployment-name} pelo valor do nome da implantação copiado do painel Implantações do portal de Implantações do Azure AI Foundry. Em seguida, execute o seguinte comando:
UPDATE bill_summaries b
SET bill_vector = azure_openai.create_embeddings('{your-deployment-name}', b.bill_text);
Execute a consulta a seguir para exibir a inserção gerada para o primeiro registro na tabela. Você pode executar \x primeiro se a saída for difícil de ler.
SELECT bill_vector FROM bill_summaries LIMIT 1;
Cada inserção é um vetor de números de ponto flutuante. A distância entre duas inserções no espaço vetor é correlacionada com a similaridade semântica entre duas entradas no formato original.
Executar uma pesquisa de similaridade de vetor
A similaridade de vetor é um método para medir o quão semelhantes são dois itens, representando-os como vetores. Os vetores são uma série de números. Eles geralmente são usados para executar pesquisas por meio de LLMs.
A similaridade do vetor é comumente calculada por meio de métricas de distância, como:
- Distância euclidiana: mede a distância de linha reta entre dois vetores no espaço ndimensional.
- Similaridade de cosseno: mede o cosseno do ângulo entre dois vetores.
Habilite uma pesquisa mais eficiente sobre o campo vector criando um índice em bill_summaries usando a distância cosseno e o HNSW (Hierarchical Navigable Small World). O HNSW permite que pgvector use os algoritmos mais recentes baseados em grafo para aproximar consultas de vizinho mais próximo.
CREATE INDEX ON bill_summaries USING hnsw (bill_vector vector_cosine_ops);
Com tudo agora em vigor, você está pronto para executar uma consulta de pesquisa de similaridade de cosseno no banco de dados.
Na consulta a seguir, as inserções são geradas para uma pergunta de entrada e, em seguida, convertidas em uma matriz de vetor (::vector). A matriz de vetores permite que a pergunta seja comparada com os vetores armazenados na bill_summaries tabela.
SELECT bill_id, title FROM bill_summaries
ORDER BY bill_vector <=> azure_openai.create_embeddings('embeddings', 'Show me bills relating to veterans entrepreneurship.')::vector
LIMIT 3;
A consulta usa o <=>operador de vetor. Esse operador representa o operador de distância de cosseno usado para calcular a distância entre dois vetores em um espaço multidimensional.
Integrar os Serviços Cognitivos do Azure
As integrações de serviços de IA do azure_cognitive Azure incluídas no esquema da azure_ai extensão fornecem um conjunto avançado de recursos de linguagem de IA que você pode acessar diretamente do banco de dados. As funcionalidades incluem análise de sentimento, detecção de idioma, extração de frases-chave, reconhecimento de entidade e sumarização de texto. O acesso a esses recursos é habilitado por meio do serviço de Linguagem de IA do Azure.
Para examinar os recursos completos de IA do Azure que você pode acessar por meio da extensão, consulte Integrar o Banco de Dados do Azure para PostgreSQL aos Serviços Cognitivos do Azure.
Definir o ponto de extremidade e a chave do serviço de Linguagem de IA do Azure
Assim como acontece com as azure_openai funcionalidades, para fazer chamadas com êxito aos serviços de IA do Azure usando a extensão azure_ai, você deve fornecer o ponto de extremidade e uma chave para o recurso do serviço Azure AI Language:
No portal do Azure, acesse o recurso de serviço de idioma.
No menu à esquerda, em Gerenciamento de Recursos, selecione Chaves e Endpoint.
Copie o ponto de extremidade e a chave de acesso. Você pode usar
KEY1ouKEY2.psqlNo prompt de comando, execute os comandos a seguir para adicionar seus valores à tabela de configuração. Substitua os tokens{endpoint}e{api-key}pelos valores recuperados do portal do Azure.SELECT azure_ai.set_setting('azure_cognitive.endpoint','{endpoint}'); SELECT azure_ai.set_setting('azure_cognitive.subscription_key', '{api-key}');
Resumir projetos de lei
Para demonstrar alguns dos recursos das azure_cognitive funções da azure_ai extensão, você pode gerar um resumo de cada fatura. O azure_cognitive esquema fornece duas funções para resumir texto:
-
summarize_abstractive: resumo abstrativo produz um resumo que captura os principais conceitos do texto de entrada, mas pode não usar palavras idênticas. -
summarize_extractive: o resumo extrativo monta um resumo extraindo frases críticas do texto de entrada.
Para usar a capacidade do serviço de Linguagem de IA do Azure de gerar conteúdo novo e original, use a função summarize_abstractive para criar um resumo da entrada de texto. Use o meta-comando \df a partir de psql novamente, desta vez para examinar especificamente a função azure_cognitive.summarize_abstractive:
\df azure_cognitive.summarize_abstractive
A Argument data types propriedade na saída do \df azure_cognitive.summarize_abstractive comando revela a lista de argumentos que a função espera:
| Argumento | Tipo | Padrão | Descrição |
|---|---|---|---|
text |
text |
Texto de entrada para resumir. | |
language |
text |
Representação ISO 639-1 de duas letras do idioma no qual o texto de entrada é escrito. Para valores permitidos, verifique o suporte ao idioma para recursos de linguagem. | |
timeout_ms |
integer |
3600000 |
Tempo limite em milissegundos, após o qual a operação é interrompida. |
throw_on_error |
boolean |
true |
Sinalizador que indica se a função deve, por erro, gerar uma exceção que resulta em uma reversão das transações de encapsulamento. |
sentence_count |
integer |
3 |
Número máximo de sentenças a serem incluídas no resumo gerado. |
disable_service_logs |
boolean |
false |
Configuração que desabilita logs de serviço de idioma. O serviço de Linguagem registra o texto de entrada por 48 horas apenas para permitir a solução de problemas. Definir essa propriedade como true desabilita o registro em log de entrada e pode limitar nossa capacidade de investigar os problemas que ocorrem. Para obter mais informações, consulte as notas de conformidade e privacidade dos Serviços Cognitivos e os princípios de IA Responsável da Microsoft. |
A summarize_abstractive função requer os seguintes argumentos: azure_cognitive.summarize_abstractive(text TEXT, language TEXT).
A consulta a seguir na tabela bill_summaries usa a função summarize_abstractive para gerar um resumo de uma nova frase para o texto de um projeto de lei. Ele permite que você incorpore o poder da IA gerativa diretamente em suas consultas.
SELECT
bill_id,
azure_cognitive.summarize_abstractive(bill_text, 'en', sentence_count => 1) one_sentence_summary
FROM bill_summaries
WHERE bill_id = '112_hr2873';
Você também pode usar a função para gravar dados em suas tabelas de banco de dados. Modifique a bill_summaries tabela para adicionar uma nova coluna para armazenar os resumos de uma frase no banco de dados:
ALTER TABLE bill_summaries
ADD COLUMN one_sentence_summary TEXT;
Em seguida, atualize a tabela com os resumos. A função summarize_abstractive retorna uma matriz de texto (text[]). A função array_to_string converte o valor retornado em sua representação de cadeia de caracteres. Na consulta a seguir, o throw_on_error argumento é definido como false. Essa configuração permite que o processo de sumarização continue se ocorrer um erro.
UPDATE bill_summaries b
SET one_sentence_summary = array_to_string(azure_cognitive.summarize_abstractive(b.bill_text, 'en', throw_on_error => false, sentence_count => 1), ' ', '')
where one_sentence_summary is NULL;
Na saída, você pode notar um aviso sobre um documento inválido para o qual uma saída apropriada não pôde ser gerado. Esse aviso resulta da configuração de throw_on_error para false na consulta anterior. Se você deixou esse sinalizador como padrão true, a consulta falhará e nenhum resumo será gravado no banco de dados. Para exibir o registro que lançou o aviso, execute este comando:
SELECT bill_id, one_sentence_summary FROM bill_summaries WHERE one_sentence_summary is NULL;
Em seguida, você pode consultar a tabela bill_summaries para exibir os novos resumos de uma única frase que a extensão azure_ai gera para os outros registros na tabela:
SELECT bill_id, one_sentence_summary FROM bill_summaries LIMIT 5;
Conclusão
Parabéns! Você acabou de aprender a usar a azure_ai extensão para integrar modelos de linguagem grandes e funcionalidades de IA generativa ao banco de dados.
Conteúdo relacionado
- Permitir extensões no Banco de Dados do Azure para PostgreSQL
- Saiba como gerar inserções com o OpenAI do Azure
- Azure OpenAI nos modelos do Azure AI Foundry
- Entender as inserções no OpenAI do Azure em Modelos da Fábrica de IA do Azure
- O que é a Linguagem de IA do Azure?
- O que é o Azure OpenAI nos Modelos do Azure AI Foundry?