Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
APLICA-SE A: Banco de Dados do Azure para PostgreSQL - Servidor Flexível
A azure_ai
extensão adiciona a capacidade de usar grandes modelos de linguagem (LLMs) e criar aplicativos de IA generativa em um banco de dados do 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 generativa para processar consultas de linguagem natural diretamente do banco de dados.
Este artigo mostra a adição de recursos avançados de IA a um 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 Azure AI Language em seu banco de dados usando a extensão.
Pré-requisitos
Uma assinatura do Azure. Crie um gratuitamente.
Acesso concedido ao Azure OpenAI na subscrição pretendida do Azure. Atualmente, a aplicação concede acesso a este serviço. Você pode solicitar acesso ao Azure OpenAI preenchendo o formulário em Acesso limitado para o Serviço OpenAI do Azure.
Um recurso do Azure OpenAI com o
text-embedding-ada-002
modelo (versão 2) implantado. Atualmente, este 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 guia de implantação de recursos do Azure OpenAI.Um recurso de linguagem de IA do Azure. Se não tiveres um recurso de Linguagem, podes criar um no portal do Azure seguindo as instruções fornecidas no guia de início rápido para resumir. Você pode usar o nível de preço gratuito (
Free F0
) para experimentar o serviço e atualizar posteriormente para um nível pago para produção.Um servidor flexível do Azure Database para PostgreSQL na assinatura do Azure. Se você não tiver esse recurso, consulte Criar um banco de dados do Azure para servidor flexível 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 lhe for pedido, selecione a subscrição que utilizou para a Base de Dados do Azure para base de dados PostgreSQL e, em seguida, selecione Criar armazenamento.
Para recuperar os detalhes da conexão do banco de dados:
No portal do Azure, vá para o seu banco de dados do Azure para 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 definida quando você 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 seu banco de dados usando a ferramenta de linha de comando psql. Digite o seguinte comando no prompt:
psql
Instalar a extensão azure_ai
Você pode usar a extensão para integrar o Azure OpenAI e os azure_ai
Serviços Cognitivos do Azure em seu banco de dados. Para obter mais informações, consulte Gerar incorporações vetoriais 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_ai
extensão, instale a extensão conforme descrito em Criar extensões.
Inspecione os objetos na extensão azure_ai
Revisar os objetos que a azure_ai
extensão contém pode fornecer uma melhor compreensão dos recursos que ela oferece. Você pode usar o \dx
meta-comando na psql
linha de comandos para listar os objetos na extensão:
\dx+ azure_ai
A saída do metacomando mostra que a azure_ai
extensão cria três esquemas, várias funções definidas pelo usuário (UDFs) e vários tipos compostos 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 onde a tabela de configuração e UDFs para interagir com ela residem. |
azure_openai |
Contém as UDFs que permitem chamar um ponto de extremidade do Azure OpenAI. |
azure_cognitive |
Fornece UDFs e tipos compostos relacionados à integração do banco de dados com os Serviços Cognitivos do Azure. |
As funções e os tipos estão todos associados a um dos esquemas. Para revisar as funções definidas no esquema, use o azure_ai
\df
metacomando. 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. Ele aceita uma chave e o valor para atribuí-la. A azure_ai.get_setting()
função fornece uma maneira de recuperar os valores que você definiu 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 Azure OpenAI 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 de Serviços Cognitivos suportado (por exemplo, https://example.cognitiveservices.azure.com ). |
azure_cognitive.subscription_key |
Uma chave de subscrição para um recurso dos Serviços Cognitivos. |
Importante
Como as informações de conexão para 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 apenas 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 superusuários e membros da azure_ai_settings_manager
função podem invocar as azure_ai.get_setting()
funções e azure_ai.set_setting()
. No Azure Database para PostgreSQL, todos os usuários administradores têm o papel azure_ai_settings_manager
.
Gerar incorporações vetoriais com o Azure OpenAI
O azure_ai
esquema da azure_openai
extensão permite o uso do Azure OpenAI para criar incorporações vetoriais para valores de texto. Usando esse esquema, você pode gerar incorporações com o Azure OpenAI diretamente do banco de dados para criar representações vetoriais de texto de entrada. Essas representações podem ser usadas em pesquisas de semelhança vetorial e consumidas por modelos de aprendizado de máquina.
As incorporações são uma técnica de utilização de modelos de aprendizagem automática para avaliar a proximidade da informação. Esta 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 Azure OpenAI
Antes de usar as azure_openai
funções, configure a extensão com o seu endpoint e chave do serviço Azure OpenAI.
No portal do Azure, vá para seu recurso do Azure OpenAI. No menu à esquerda, em Gestão de Recursos, selecione Chaves e Endpoint.
Copie seu endpoint e chave de acesso. Pode utilizar
KEY1
ouKEY2
. Ter sempre duas chaves permite-lhe rodar e regenerar chaves de forma segura sem causar interrupções no serviço.No comando a seguir, substitua os
{endpoint}
tokens e{api-key}
por valores recuperados do portal do Azure. Em seguida, execute os comandos nopsql
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 definiçõ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 azure_ai
extensão agora está conectada à sua conta do Azure OpenAI e pronta para gerar incorporações vetoriais.
Preencher a base 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 no psql
prompt de comando, carregue os dados de exemplo do arquivo CSV na bill_summaries
tabela. 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'
Ativar suporte a vetores
Você pode usar a azure_ai
extensão para gerar incorporações para texto de entrada. Para permitir que os vetores gerados sejam armazenados junto com o resto dos seus dados no banco de dados, você deve instalar a pgvector
extensão. Siga as orientações na documentação sobre como habilitar o suporte a vetores em seu banco de dados.
Com o suporte a vetores adicionado ao banco de dados, adicione uma nova coluna à bill_summaries
tabela usando o vector
tipo de dados para armazenar incorporaçõ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 bill_summaries
mesa está agora pronta para armazenar incorporações. Usando a azure_openai.create_embeddings()
função, você cria vetores para o bill_text
campo e os insere 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 revisar 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 | Predefinido | 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 incorporaçõ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, em caso de erro, lançar uma exceção que resulte em uma reversão das transações de encapsulamento. |
O primeiro argumento é o deployment_name
valor, que foi atribuído quando seu modelo de incorporação foi implantado em sua conta do Azure OpenAI. Para recuperar esse valor:
Vá para o seu 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 Nome da implantação associado à implantação do
text-embedding-ada-002
modelo.
Usando essas informações, execute uma consulta para atualizar cada registro na bill_summaries
tabela. Insira as incorporações vetoriais geradas para o bill_text
campo na bill_vector
coluna usando a azure_openai.create_embeddings()
função. Substitua {your-deployment-name}
pelo valor Nome da implantação copiado do painel Implantações do portal 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 incorporaçã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 incorporação é um vetor de números de vírgula flutuante. A distância entre duas incorporações no espaço vetorial está correlacionada com a semelhança semântica entre duas entradas no formato original.
Executar uma pesquisa de semelhança vetorial
A semelhança vetorial é um método para medir a semelhança de dois itens, representando-os como vetores. Os vetores são uma série de números. Eles são frequentemente usados para realizar pesquisas via LLMs.
A semelhança vetorial é comumente calculada através de métricas de distância, tais como:
- Distância euclidiana: Mede a distância em linha reta entre dois vetores no espaço n-dimensional.
- Similaridade cosseno: Mede o cosseno do ângulo entre dois vetores.
Permita uma pesquisa mais eficiente sobre o campo vector
criando um índice sobre bill_summaries
através da distância do cosseno e *Hierarchical Navigable Small World (HNSW)*. O HNSW permite pgvector
usar os mais recentes algoritmos baseados em gráficos para aproximar as consultas do vizinho mais próximo.
CREATE INDEX ON bill_summaries USING hnsw (bill_vector vector_cosine_ops);
Com tudo pronto, você está pronto para executar uma consulta de pesquisa de semelhança cosseno no banco de dados.
Na consulta a seguir, as incorporações são geradas para uma pergunta de entrada e, em seguida, convertidas em uma matriz vetorial (::vector
). A matriz vetorial 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. Este operador representa o operador de distância do cosseno utilizado para calcular a distância entre dois vetores num espaço multidimensional.
Integrar os Serviços Cognitivos do Azure
As integrações de serviços de IA do Azure incluídas no azure_cognitive
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, deteção de linguagem, extração de frases-chave, reconhecimento de entidades e resumo de texto. O acesso a esses recursos é habilitado por meio do serviço Azure AI Language.
Para rever as capacidades completas de IA do Azure a que pode aceder através da extensão, consulte Integrar a Base de Dados do Azure para PostgreSQL com os Serviços Cognitivos do Azure.
Definir o ponto de extremidade e a chave do serviço Azure AI Language
Tal como acontece com as azure_openai
funções, para efetuar chamadas com êxito nos serviços Azure AI utilizando a extensão azure_ai
, tem de fornecer o endereço e uma chave para o seu recurso de serviço de Linguagem do Azure AI.
No portal do Azure, vá para seu recurso de serviço de idioma.
No menu à esquerda, em Gestão de Recursos, selecione Chaves e Endpoint.
Copie seu endpoint e chave de acesso. Pode utilizar
KEY1
ouKEY2
.No prompt de
psql
comando, execute os seguintes comandos para adicionar seus valores à tabela de configuração. Substitua os tokens{endpoint}
e{api-key}
pelos valores recuperados do portal da Azure.SELECT azure_ai.set_setting('azure_cognitive.endpoint','{endpoint}'); SELECT azure_ai.set_setting('azure_cognitive.subscription_key', '{api-key}');
Resumir contas
Para demonstrar algumas das capacidades 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
: A sumarização abstrata 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 Azure AI Language de gerar conteúdo novo e original, use a summarize_abstractive
função para criar um resumo da entrada de texto. Utilize o meta-comando \df
novamente psql
, desta vez para analisar 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 | Predefinido | Descrição |
---|---|---|---|
text |
text |
Texto de entrada para resumir. | |
language |
text |
Representação ISO 639-1 de duas letras da língua em que o texto de entrada é escrito. Para valores permitidos, consulte Suporte de idioma para funcionalidades linguísticas. | |
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, em caso de erro, lançar uma exceção que resulte em uma reversão das transações de encapsulamento. |
sentence_count |
integer |
3 |
Número máximo de frases a incluir no resumo gerado. |
disable_service_logs |
boolean |
false |
Configuração que desabilita os logs do serviço de idioma. O serviço de idiomas registra o texto de entrada por 48 horas apenas para permitir a solução de problemas. Definir essa propriedade para true desativar o log de entrada e pode limitar nossa capacidade de investigar 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 seguinte consulta na tabela bill_summaries
utiliza a função summarize_abstractive
para gerar um novo resumo de uma frase para o texto de uma proposta de lei. Ele permite que você incorpore o poder da IA generativa 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 summarize_abstractive
função retorna uma matriz de texto (text[]
). A array_to_string
função converte o valor de retorno 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 não foi possível gerar um resumo apropriado. Este aviso resulta da definição throw_on_error
para false
na consulta anterior. Se deixar esse sinalizador como padrão de 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 bill_summaries
tabela para exibir os novos resumos de uma frase que a azure_ai
extensão 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 como usar a azure_ai
extensão para integrar grandes modelos de linguagem e recursos de IA generativa em seu banco de dados.
Conteúdos relacionados
- Permitir extensões no Banco de Dados do Azure para PostgreSQL
- Saiba como gerar incorporações com o Azure OpenAI
- Azure OpenAI em Modelos de Fundição de IA do Azure
- Compreender as incorporações no Azure OpenAI nos Modelos do Azure AI Foundry
- O que é a Linguagem de IA do Azure?
- O que é o Azure OpenAI no Azure AI Foundry Models?