Megosztás a következőn keresztül:


Vektoros beágyazások létrehozása az Azure OpenAI-val az Azure Database for PostgreSQL-ben

A következőkre vonatkozik: Azure Database for PostgreSQL – Rugalmas kiszolgáló

Egyszerűen meghívhatja az Azure OpenAI-beágyazásokat a bemenet vektoros ábrázolásának lekéréséhez, amelyet aztán a vektoros hasonlósági keresésekben és a gépi tanulási modellek használhatnak fel.

Előfeltételek

  1. Engedélyezze és konfigurálja a bővítményt azure_ai .
  2. Hozzon létre egy OpenAI-fiókot, és kérjen hozzáférést az Azure OpenAI szolgáltatáshoz.
  3. Adjon hozzáférést az Azure OpenAI-hoz a kívánt előfizetésben.
  4. Engedélyek megadása Azure OpenAI-erőforrások létrehozásához és modellek üzembe helyezéséhez.
  5. Hozzon létre és telepítsen egy Azure OpenAI-szolgáltatáserőforrást és egy modellt, például helyezze üzembe a beágyazási modell text-embedding-ada-002-et. Másolja ki az üzembehelyezési nevet a beágyazások létrehozásához szükséges módon.

OpenAI-végpont és -kulcs konfigurálása

Az Azure OpenAI-erőforrás Erőforrás-kezelési>megtalálhatja az Azure OpenAI-erőforrás végpontját és kulcsait. A modell üzembe helyezésének meghívásához engedélyezze a bővítményt azure_ai a végpont és az egyik kulcs használatával.

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

Meghívja az Azure OpenAI API-t, hogy beágyazásokat hozzon létre a megadott környezettel a megadott bemeneten keresztül.

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)

Argumentumok

deployment_name

text a modellt tartalmazó Üzembe helyezés neve az Azure OpenAI Studióban.

input

text vagy text[] egy szöveg vagy szövegtömb, a használt függvény túlterhelésétől függően, amelyhez beágyazások jönnek létre.

dimensions

integer DEFAULT NULL Az eredményként kapott kimeneti beágyazások dimenzióinak száma. Csak a text-embedding-3 és újabb modellekben támogatott. A azure_ai bővítmény 1.1.0-s és újabb verzióiban érhető el

batch_size

integer DEFAULT 100 egyszerre feldolgozandó rekordok száma (csak annak a függvénynek a túlterheléséhez érhető el, amelynek a paramétere input típus text[]).

timeout_ms

integer DEFAULT 3600000 időtúllépés ezredmásodpercben, amely után a művelet leáll.

throw_on_error

boolean DEFAULT true hiba esetén, ha a függvény kivételt okoz, amely a körbefuttatási tranzakciók visszaállítását eredményezi.

max_attempts

integer DEFAULT 1 hányszor próbálkozik újra a bővítmény az Azure OpenAI-beágyazási létrehozással, ha az újrapróbálkozási hibával meghiúsul.

retry_delay_ms

integer DEFAULT 1000 ennyi időt (ezredmásodpercet) vár a bővítmény, mielőtt újra meghívja az Azure OpenAI-végpontot a beágyazási létrehozáshoz, ha újrapróbálkozási hibával meghiúsul.

Visszatérési típus

real[] vagy TABLE(embedding real[]) egy elem vagy egy egyoszlopos tábla a használt függvény túlterhelésétől függően a bemeneti szöveg vektoros ábrázolásával, amikor a kiválasztott üzembe helyezés feldolgozta.

Beágyazások létrehozása és vektoros adattípusban való tárolása az OpenAI használatával

-- 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 DiskANN index
CREATE INDEX ON conference_session_embeddings USING diskann (session_embedding vector_cosine_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;