Criar incorporações com a extensão Azure AI

Concluído

Para executar uma pesquisa semântica, você deve comparar a incorporação da consulta com as incorporações dos itens pesquisados. A azure_ai extensão do Banco de Dados do Azure para PostgreSQL - Servidor Flexível integra-se ao Azure OpenAI para gerar vetores de incorporação.

Um diagrama mostrando o texto de entrada

Introdução ao azure_ai e Azure OpenAI

A extensão flexível do Banco de Dados do Azure para PostgreSQL para IA do Azure fornece funções definidas pelo usuário para integração com os serviços de IA do Azure, incluindo o Azure OpenAI e os Serviços Cognitivos do Azure.

A API do Azure OpenAI Embeddings gera um vetor de incorporação do texto de entrada. Use essa API para definir as incorporações de todos os itens que estão sendo pesquisados. O azure_ai esquema da azure_openai extensão facilita chamar a API do SQL para gerar incorporações, seja para inicializar incorporações de itens ou criar uma incorporação de consulta imediatamente. Essas incorporações podem então ser usadas para realizar pesquisa de semelhança vetorial, ou, em outras palavras, pesquisa semântica.

Usando a extensão com o azure_ai Azure OpenAI

Para chamar a API do Azure OpenAI Embeddings do PostgreSQL, você precisa habilitar & configurar a azure_ai extensão, conceder acesso ao Azure OpenAI e implantar um modelo do Azure OpenAI. Para obter mais informações, consulte a documentação do Azure OpenAI no Banco de Dados do Azure para Servidor Flexível PostgreSQL.

Quando o ambiente estiver pronto e a extensão estiver na lista de permissões, execute este SQL:

/* Enable the extension. */
CREATE EXTENSION azure_ai;

Você também precisa configurar a chave de acesso do endpoint & do seu recurso de serviço OpenAI:

SELECT azure_ai.set_setting('azure_openai.endpoint', '{your-endpoint-url}');
SELECT azure_ai.set_setting('azure_openai.subscription_key', '{your-api-key}}');

Depois azure_ai que o Azure OpenAI estiver configurado, buscar e armazenar incorporações é uma simples questão de chamar uma função na consulta SQL. Supondo uma tabela listings com uma description coluna e uma listing_vector coluna, você pode gerar e armazenar a incorporação para todas as listagens com a consulta a seguir. Substitua {your-deployment-name} pelo nome da Implantação do Azure OpenAI Studio para o modelo que você criou.

UPDATE listings
SET listing_vector = azure_openai.create_embeddings('{your-deployment-name}', description, max_attempts => 5, retry_delay_ms => 500)
WHERE listing_vector IS NULL;

A listing_vector coluna vetorial deve ter o mesmo número de dimensões que o modelo de linguagem produz.

Para ver a incorporação de um documento, execute a seguinte consulta:

SELECT listing_vector FROM listings LIMIT 1;

O resultado é um vetor de números de ponto flutuante. Você pode executar \x primeiro para tornar a saída mais legível.

Gerar uma consulta incorporando dinamicamente

Depois de incorporar os documentos que deseja pesquisar, você pode executar uma consulta de pesquisa semântica. Para fazer isso, você também precisa gerar uma incorporação para o texto da consulta.

O azure_openai esquema da azure_ai extensão permite gerar incorporações no SQL. Por exemplo, para localizar as três principais listagens cujo texto é semanticamente mais semelhante à consulta "Encontrar-me lugares em um bairro caminhável", execute o seguinte SQL:

SELECT id, description FROM listings
ORDER BY listing_vector <=> azure_openai.create_embeddings('{your-deployment-name}', 'Find me places in a walkable neighborhood.')::vector
LIMIT 3;

O <=> operador calcula a distância cosseno entre os dois vetores, a métrica de semelhança semântica. Quanto mais próximos os vetores, mais semanticamente semelhantes; quanto mais distantes os vetores, mais semanticamente diferentes.

O ::vector operador converte as incorporações geradas em matrizes vetoriais PostgreSQL.

A consulta retorna os três principais IDs e descrições de listagem, classificados de menos para mais diferentes (mais para menos semelhantes).