Aracılığıyla paylaş


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

  1. Uzantıyı azure_ai etkinleştirin ve yapılandırın.
  2. Bir OpenAI hesabı oluşturun ve Azure OpenAI Hizmeti'ne erişim isteyin.
  3. İstenen abonelikte Azure OpenAI'ye erişim izni verin.
  4. Azure OpenAI kaynakları oluşturma ve modelleri dağıtma izinleri verin.
  5. 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;

Sonraki adımlar