Gerar incorporações vetoriais com o Azure OpenAI no Banco de Dados do Azure para PostgreSQL - Servidor Flexível
APLICA-SE A: Banco de Dados do Azure para PostgreSQL - Servidor Flexível
Invoque as incorporações do Azure OpenAI facilmente para obter uma representação vetorial da entrada, que pode ser usada em pesquisas de semelhança vetorial e consumida por modelos de aprendizado de máquina.
Pré-requisitos
- Habilite e configure a
azure_ai
extensão. - Crie uma conta OpenAI e solicite acesso ao Serviço OpenAI do Azure.
- Conceda acesso ao Azure OpenAI na assinatura desejada.
- Conceda permissões para criar recursos do Azure OpenAI e implantar modelos.
- Crie e implante um recurso de serviço OpenAI do Azure e um modelo, por exemplo, implante o modelo de incorporação text-embedding-ada-002. Copie o nome da implantação conforme necessário para criar incorporações.
Configurar o ponto de extremidade e a chave do OpenAI
No recurso OpenAI do Azure, em Chaves e Pontos de Extremidade de Gerenciamento de>Recursos, você pode encontrar o ponto de extremidade e as chaves para seu recurso do Azure OpenAI. Para invocar a implantação do modelo, habilite a azure_ai
extensão usando o ponto de extremidade e uma das chaves.
select azure_ai.set_setting('azure_openai.endpoint', 'https://<endpoint>.openai.azure.com');
select azure_ai.set_setting('azure_openai.subscription_key', '<API Key>');
azure_openai.create_embeddings
Invoca a API OpenAI do Azure para criar incorporações usando a implantação fornecida sobre a entrada fornecida.
azure_openai.create_embeddings(deployment_name text, input text, timeout_ms integer DEFAULT 3600000, throw_on_error boolean DEFAULT true, max_attempts integer DEFAULT 1, retry_delay_ms integer DEFAULT 1000)
azure_openai.create_embeddings(deployment_name text, input text[], batch_size integer DEFAULT 100, timeout_ms integer DEFAULT 3600000, throw_on_error boolean DEFAULT true, max_attempts integer DEFAULT 1, retry_delay_ms integer DEFAULT 1000)
Argumentos
deployment_name
text
nome da implantação no estúdio OpenAI do Azure que contém o modelo.
input
text
ou text[]
texto único ou matriz de textos, dependendo da sobrecarga da função usada, para a qual as incorporações são criadas.
dimensions
integer DEFAULT NULL
O número de dimensões que as incorporações de saída resultantes devem ter. Suportado apenas em text-embedding-3 e modelos posteriores. Disponível nas versões 1.1.0 e posteriores da extensão azure_ai
batch_size
integer DEFAULT 100
número de registos a processar de cada vez (apenas disponível para a sobrecarga da função para a qual o parâmetro input
é do tipo text[]
).
timeout_ms
integer DEFAULT 3600000
tempo limite em milissegundos após o qual a operação é interrompida.
throw_on_error
boolean DEFAULT true
em erro, se a função lançar uma exceção, resultando em uma reversão de transações de encapsulamento.
max_attempts
integer DEFAULT 1
número de vezes que a extensão tenta novamente a criação de incorporação do Azure OpenAI se ela falhar com qualquer erro que possa ser repetido.
retry_delay_ms
integer DEFAULT 1000
quantidade de tempo (milissegundos) que a extensão aguarda antes de chamar novamente o ponto de extremidade do Azure OpenAI para incorporar a criação, quando ele falha com qualquer erro tentável.
Tipo de retorno
real[]
ou TABLE(embedding real[])
um único elemento ou uma tabela de coluna única, dependendo da sobrecarga da função usada, com representações vetoriais do texto de entrada, quando processado pela implantação selecionada.
Use OpenAI para criar incorporações e armazená-las em um tipo de dados vetoriais
-- Create tables and populate data
DROP TABLE IF EXISTS conference_session_embeddings;
DROP TABLE IF EXISTS conference_sessions;
CREATE TABLE conference_sessions(
session_id int PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY,
title text,
session_abstract text,
duration_minutes integer,
publish_date timestamp
);
-- Create a table to store embeddings with a vector column.
CREATE TABLE conference_session_embeddings(
session_id integer NOT NULL REFERENCES conference_sessions(session_id),
session_embedding vector(1536)
);
-- Insert a row into the sessions table
INSERT INTO conference_sessions
(title,session_abstract,duration_minutes,publish_date)
VALUES
('Gen AI with Azure Database for PostgreSQL flexible server'
,'Learn about building intelligent applications with azure_ai extension and pg_vector'
, 60, current_timestamp)
,('Deep Dive: PostgreSQL database storage engine internals'
,' We will dig deep into storage internals'
, 30, current_timestamp)
;
-- Get an embedding for the Session Abstract
SELECT
pg_typeof(azure_openai.create_embeddings('text-embedding-ada-002', c.session_abstract)) as embedding_data_type
,azure_openai.create_embeddings('text-embedding-ada-002', c.session_abstract)
FROM
conference_sessions c LIMIT 10;
-- Insert embeddings
INSERT INTO conference_session_embeddings
(session_id, session_embedding)
SELECT
c.session_id, (azure_openai.create_embeddings('text-embedding-ada-002', c.session_abstract))
FROM
conference_sessions as c
LEFT OUTER JOIN
conference_session_embeddings e ON e.session_id = c.session_id
WHERE
e.session_id IS NULL;
-- Create a HNSW index
CREATE INDEX ON conference_session_embeddings USING hnsw (session_embedding vector_ip_ops);
-- Retrieve top similarity match
SELECT
c.*
FROM
conference_session_embeddings e
INNER JOIN
conference_sessions c ON c.session_id = e.session_id
ORDER BY
e.session_embedding <#> azure_openai.create_embeddings('text-embedding-ada-002', 'Session to learn about building chatbots')::vector
LIMIT 1;
Conteúdos relacionados
- Integre o Banco de Dados do Azure para PostgreSQL - Servidor Flexível com os Serviços Cognitivos do Azure.
- Gere incorporações vetoriais no Banco de Dados do Azure para PostgreSQL - Servidor flexível com LLM implantado localmente (Visualização).
- Integre o Banco de Dados do Azure para PostgreSQL com os Serviços de Aprendizado de Máquina do Azure.
- Extensão Azure AI no Banco de Dados do Azure para PostgreSQL - Servidor Flexível.
- IA generativa com o Banco de Dados do Azure para PostgreSQL - Servidor flexível.
- Sistema de Recomendação com a Base de Dados do Azure para PostgreSQL - Servidor Flexível e Azure OpenAI.
- Pesquisa semântica com o Banco de Dados do Azure para PostgreSQL - Servidor Flexível e Azure OpenAI.
- Habilite e use pgvector no Banco de Dados do Azure para PostgreSQL - Servidor Flexível.