Generowanie osadzania wektorów za pomocą usługi Azure OpenAI w usłudze Azure Database for PostgreSQL — serwer elastyczny
DOTYCZY: Azure Database for PostgreSQL — serwer elastyczny
Łatwo wywołaj osadzanie usługi Azure OpenAI, aby uzyskać wektorową reprezentację danych wejściowych, która może być używana w wyszukiwaniach podobieństwa wektorowego i używanych przez modele uczenia maszynowego.
Wymagania wstępne
- Włącz i skonfiguruj
azure_ai
rozszerzenie. - Utwórz konto openAI i zażądaj dostępu do usługi Azure OpenAI Service.
- Udziel dostępu do usługi Azure OpenAI w żądanej subskrypcji.
- Udzielanie uprawnień do tworzenia zasobów usługi Azure OpenAI i wdrażania modeli.
- Utwórz i wdróż zasób usługi Azure OpenAI oraz model, na przykład wdróż model osadzania modelu text-embedding-ada-002. Skopiuj nazwę wdrożenia, ponieważ jest ona potrzebna do utworzenia osadzonych.
Konfigurowanie punktu końcowego i klucza interfejsu OpenAI
W zasobie Azure OpenAI w obszarze Klucze zarządzania>zasobami i punkty końcowe można znaleźć punkt końcowy i klucze dla zasobu usługi Azure OpenAI. Aby wywołać wdrożenie modelu, włącz azure_ai
rozszerzenie przy użyciu punktu końcowego i jednego z kluczy.
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
Wywołuje interfejs API usługi Azure OpenAI, aby utworzyć osadzanie przy użyciu podanego wdrożenia w danym danych wejściowych.
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)
Argumenty
deployment_name
text
nazwa wdrożenia w narzędziu Azure OpenAI Studio, który zawiera model.
input
text
lub text[]
pojedynczy tekst lub tablica tekstów, w zależności od przeciążenia używanej funkcji, dla której są tworzone osadzanie.
dimensions
integer DEFAULT NULL
Liczba wymiarów, które powinny mieć wynikowe osadzanie danych wyjściowych. Obsługiwane tylko w modelach osadzania tekstu-3 i nowszych. Dostępne w wersjach 1.1.0 i nowszych rozszerzenia azure_ai
batch_size
integer DEFAULT 100
liczba rekordów do przetworzenia w danym momencie (dostępna tylko dla przeciążenia funkcji, dla której parametr input
jest typu text[]
).
timeout_ms
integer DEFAULT 3600000
limit czasu w milisekundach, po którym operacja jest zatrzymana.
throw_on_error
boolean DEFAULT true
w przypadku błędu funkcja powinna zgłosić wyjątek powodujący wycofanie transakcji zawijania.
max_attempts
integer DEFAULT 1
ile razy rozszerzenie ponawia próbę utworzenia osadzania usługi Azure OpenAI, jeśli wystąpi błąd ponawiania próby.
retry_delay_ms
integer DEFAULT 1000
czas (w milisekundach) oczekiwania rozszerzenia przed ponownym wywołaniem punktu końcowego usługi Azure OpenAI na potrzeby tworzenia osadzania, gdy zakończy się niepowodzeniem z powodu błędu z możliwością ponowienia próby.
Typ zwracany
real[]
lub pojedynczy element lub TABLE(embedding real[])
jednokolumna tabela, w zależności od przeciążenia używanej funkcji z reprezentacjami wektorowymi tekstu wejściowego, podczas przetwarzania przez wybrane wdrożenie.
Używanie interfejsu OpenAI do tworzenia osadzania i przechowywania ich w typie danych wektorowych
-- 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;
Powiązana zawartość
- Integracja usługi Azure Database for PostgreSQL — serwer elastyczny z usługami Azure Cognitive Services.
- Generowanie wektorowych osadzania w usłudze Azure Database for PostgreSQL — serwer elastyczny z lokalnie wdrożonym rozwiązaniem LLM (wersja zapoznawcza).
- Integracja usługi Azure Database for PostgreSQL z usługami Azure Machine Learning Services.
- Rozszerzenie usługi Azure AI w usłudze Azure Database for PostgreSQL — serwer elastyczny.
- Generowanie sztucznej inteligencji za pomocą usługi Azure Database for PostgreSQL — serwer elastyczny.
- System rekomendacji z usługą Azure Database for PostgreSQL — serwer elastyczny i usługa Azure OpenAI.
- Wyszukiwanie semantyczne za pomocą usługi Azure Database for PostgreSQL — serwer elastyczny i usługa Azure OpenAI.
- Włączanie i używanie narzędzia pgvector w usłudze Azure Database for PostgreSQL — serwer elastyczny.