Vector embeddings genereren met Azure OpenAI in Azure Database for PostgreSQL - Flexible Server
VAN TOEPASSING OP: Azure Database for PostgreSQL - Flexibele server
Roep Azure OpenAI-insluitingen eenvoudig aan om een vectorweergave van de invoer te krijgen, die vervolgens kan worden gebruikt in vector-overeenkomsten en die worden gebruikt door machine learning-modellen.
Vereisten
- Schakel de extensie in en configureer deze
azure_ai
. - Maak een OpenAI-account en vraag toegang tot de Azure OpenAI-service aan.
- Ververleent toegang tot Azure OpenAI in het gewenste abonnement.
- Verken machtigingen om Azure OpenAI-resources te maken en modellen te implementeren.
- Maak en implementeer een Azure OpenAI-serviceresource en een model, bijvoorbeeld het insluitmodel text-embedding-ada-002. Kopieer de naam van de implementatie omdat deze nodig is om insluitingen te maken.
OpenAI-eindpunt en -sleutel configureren
In de Azure OpenAI-resource vindt u onder Resourcebeheersleutels>en -eindpunten het eindpunt en de sleutels voor uw Azure OpenAI-resource. Als u de modelimplementatie wilt aanroepen, schakelt u de azure_ai
extensie in met behulp van het eindpunt en een van de sleutels.
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
Roept de Azure OpenAI-API aan om insluitingen te maken met behulp van de opgegeven implementatie via de opgegeven invoer.
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)
Argumenten
deployment_name
text
naam van de implementatie in Azure OpenAI Studio die het model bevat.
input
text
of text[]
één tekst of matrix van teksten, afhankelijk van de overbelasting van de gebruikte functie, waarvoor insluitingen worden gemaakt.
dimensions
integer DEFAULT NULL
Het aantal dimensies dat de resulterende uitvoer-insluitingen moeten hebben. Alleen ondersteund in modellen met tekst insluiten-3 en hoger. Beschikbaar in versie 1.1.0 en hoger van de azure_ai-extensie
batch_size
integer DEFAULT 100
aantal records dat tegelijk moet worden verwerkt (alleen beschikbaar voor de overbelasting van de functie waarvoor de parameter input
van het type text[]
is).
timeout_ms
integer DEFAULT 3600000
time-out in milliseconden waarna de bewerking is gestopt.
throw_on_error
boolean DEFAULT true
bij fout moet de functie een uitzondering genereren die resulteert in een terugdraaiactie van teruglooptransacties.
max_attempts
integer DEFAULT 1
aantal keren dat de extensie het maken van het insluiten van Azure OpenAI opnieuw probeert uit te voeren als deze mislukt met een fout die opnieuw kan worden geprobeerd.
retry_delay_ms
integer DEFAULT 1000
de hoeveelheid tijd (milliseconden) die de extensie wacht voordat het Azure OpenAI-eindpunt opnieuw wordt aangeroepen voor het maken van het insluiten, wanneer deze mislukt met een fout die opnieuw kan worden geprobeerd.
Retourtype
real[]
of TABLE(embedding real[])
één element of een tabel met één kolom, afhankelijk van de overbelasting van de gebruikte functie, met vectorweergaven van de invoertekst, wanneer deze wordt verwerkt door de geselecteerde implementatie.
OpenAI gebruiken om insluitingen te maken en op te slaan in een vectorgegevenstype
-- 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;
Gerelateerde inhoud
- Integreer Azure Database for PostgreSQL - Flexible Server met Azure Cognitive Services.
- Vector embeddings genereren in Azure Database for PostgreSQL - Flexible Server met lokaal geïmplementeerde LLM (preview).
- Integreer Azure Database for PostgreSQL met Azure Machine Learning Services.
- Azure AI-extensie in Azure Database for PostgreSQL - Flexible Server.
- Generatieve AI met Azure Database for PostgreSQL - Flexible Server.
- Aanbevelingssysteem met Azure Database for PostgreSQL - Flexible Server en Azure OpenAI.
- Semantic Search met Azure Database for PostgreSQL - Flexible Server en Azure OpenAI.
- Schakel pgvector in en gebruik deze in Azure Database for PostgreSQL - Flexible Server.