PostgreSQL için Azure Veritabanı - Esnek Sunucuda Azure OpenAI ile vektör eklemeleri oluşturma
ŞUNLAR IÇIN GEÇERLIDIR: PostgreSQL için Azure Veritabanı - Esnek Sunucu
Girişin vektör gösterimini almak için Azure OpenAI eklemelerini kolayca çağırın. Bu, daha sonra vektör benzerliği aramalarında kullanılabilir ve makine öğrenmesi modelleri tarafından kullanılabilir.
Önkoşullar
- Uzantıyı
azure_ai
etkinleştirin ve yapılandırın. - Bir OpenAI hesabı oluşturun ve Azure OpenAI Hizmeti'ne erişim isteyin.
- İstenen abonelikte Azure OpenAI'ye erişim izni verin.
- Azure OpenAI kaynakları oluşturma ve modelleri dağıtma izinleri verin.
- Bir Azure OpenAI hizmet kaynağı ve modeli oluşturun ve dağıtın; örneğin text-embedding-ada-002 ekleme modelini dağıtın. Eklemeler oluşturmak için gerektiğinde dağıtım adını kopyalayın.
OpenAI uç noktasını ve anahtarını yapılandırma
Azure OpenAI kaynağında, Kaynak Yönetimi>Anahtarları ve Uç Noktaları altında Azure OpenAI kaynağınızın uç noktasını ve anahtarlarını bulabilirsiniz. Model dağıtımını çağırmak için uç noktayı ve anahtarlardan birini kullanarak uzantıyı etkinleştirin azure_ai
.
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
Verilen giriş üzerinden sağlanan dağıtımı kullanarak eklemeler oluşturmak için Azure OpenAI API'sini çağırır.
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)
Bağımsız değişkenler
deployment_name
text
Azure OpenAI studio'da modeli içeren dağıtımın adı.
input
text
veya text[]
eklemelerin oluşturulduğu işlevin aşırı yüklenmesine bağlı olarak tek bir metin veya metin dizisi.
dimensions
integer DEFAULT NULL
Sonuçta elde edilen çıktı eklemelerinin sahip olması gereken boyut sayısı. Yalnızca metin ekleme-3 ve üzeri modellerde desteklenir. azure_ai uzantısının 1.1.0 ve sonraki sürümlerinde kullanılabilir
batch_size
integer DEFAULT 100
bir kerede işlenebilecek kayıt sayısı (yalnızca parametresi input
text[]
türünde olan işlevin aşırı yüklenmesi için kullanılabilir).
timeout_ms
integer DEFAULT 3600000
işlem durdurulduktan sonra milisaniye cinsinden zaman aşımı.
throw_on_error
boolean DEFAULT true
hatası oluştuğunda işlevin sarmalama işlemlerinin geri alınmasına neden olan bir özel durum oluşturması gerekir.
max_attempts
integer DEFAULT 1
yeniden denenebilir bir hatayla başarısız olursa uzantının Azure OpenAI ekleme oluşturma işlemini yeniden deneme sayısı.
retry_delay_ms
integer DEFAULT 1000
yeniden denenebilir bir hatayla başarısız olduğunda uzantının ekleme için Azure OpenAI uç noktasını yeniden çağırmadan önce beklediği süre (milisaniye).
Dönüş türü
real[]
veya TABLE(embedding real[])
seçilen dağıtım tarafından işlendiğinde giriş metninin vektör gösterimleriyle kullanılan işlevin aşırı yüklenmesine bağlı olarak tek bir öğe veya tek sütunlu bir tablo.
Eklemeler oluşturmak ve bunları bir vektör veri türünde depolamak için OpenAI kullanma
-- 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;