Generera vektorinbäddningar med Azure OpenAI i Azure Database for PostgreSQL – flexibel server
GÄLLER FÖR: Azure Database for PostgreSQL – flexibel server
Anropa Azure OpenAI-inbäddningar enkelt för att få en vektorrepresentation av indata, som sedan kan användas i vektorlikhetssökningar och användas av maskininlärningsmodeller.
Förutsättningar
- Aktivera och konfigurera
azure_ai
tillägget. - Skapa ett OpenAI-konto och begär åtkomst till Azure OpenAI-tjänsten.
- Bevilja åtkomst till Azure OpenAI i önskad prenumeration.
- Bevilja behörigheter för att skapa Azure OpenAI-resurser och distribuera modeller.
- Skapa och distribuera en Azure OpenAI-tjänstresurs och en modell, till exempel distribuera inbäddningsmodellen textinbäddning-ada-002. Kopiera distributionsnamnet när det behövs för att skapa inbäddningar.
Konfigurera OpenAI-slutpunkt och nyckel
Under Resurshanteringsnycklar> och slutpunkter i Azure OpenAI-resursen hittar du slutpunkten och nycklarna för din Azure OpenAI-resurs. Om du vill anropa modelldistributionen azure_ai
aktiverar du tillägget med hjälp av slutpunkten och en av nycklarna.
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
Anropar Azure OpenAI-API:et för att skapa inbäddningar med hjälp av den angivna distributionen via angivna indata.
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)
Argument
deployment_name
text
namnet på distributionen i Azure OpenAI Studio som innehåller modellen.
input
text
eller text[]
enskild text eller matris med texter, beroende på överbelastningen av den funktion som används, för vilken inbäddningar skapas.
dimensions
integer DEFAULT NULL
Antalet dimensioner som resulterande inbäddningar av utdata ska ha. Stöds endast i text-inbäddning-3 och senare modeller. Finns i versionerna 1.1.0 och senare av azure_ai-tillägget
batch_size
integer DEFAULT 100
antal poster som ska bearbetas åt gången (endast tillgängligt för överlagring av funktionen för vilken parametern input
är av typen text[]
).
timeout_ms
integer DEFAULT 3600000
timeout i millisekunder varefter åtgärden stoppas.
throw_on_error
boolean DEFAULT true
vid fel om funktionen utlöser ett undantag som resulterar i en återställning av omslutande transaktioner.
max_attempts
integer DEFAULT 1
antal gånger tillägget försöker skapa Azure OpenAI-inbäddning igen om det misslyckas med ett nytt försöksfel.
retry_delay_ms
integer DEFAULT 1000
tid (millisekunder) som tillägget väntar innan det anropar igen Azure OpenAI-slutpunkten för att skapa inbäddning, när det misslyckas med eventuella återförsöksbara fel.
Returtyp
real[]
eller TABLE(embedding real[])
ett enda element eller en tabell med en kolumn, beroende på överlagringen av funktionen som används, med vektorrepresentationer av indatatexten, när den bearbetas av den valda distributionen.
Använd OpenAI för att skapa inbäddningar och lagra dem i en vektordatatyp
-- 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;
Relaterat innehåll
- Integrera Azure Database for PostgreSQL – flexibel server med Azure Cognitive Services.
- Generera vektorinbäddningar i Azure Database for PostgreSQL – flexibel server med lokalt distribuerad LLM (förhandsversion).
- Integrera Azure Database for PostgreSQL med Azure Machine Learning Services.
- Azure AI-tillägg i Azure Database for PostgreSQL – flexibel server.
- Generativ AI med Azure Database for PostgreSQL – flexibel server.
- Rekommendationssystem med Azure Database for PostgreSQL – flexibel server och Azure OpenAI.
- Semantisk sökning med Azure Database for PostgreSQL – flexibel server och Azure OpenAI.
- Aktivera och använda pgvector i Azure Database for PostgreSQL – flexibel server.