Aracılığıyla paylaş


PostgreSQL için Azure Veritabanı Esnek Sunucuda azure_local_ai ile vektör eklemeleri oluşturma (önizleme)

Önkoşullar

  1. Bellek için iyileştirilmiş vm SKU'su üzerinde çalışan PostgreSQL için Azure Veritabanı Esnek Sunucu örneği. Azure bellek için iyileştirilmiş VM'ler hakkında daha fazla bilgiyi burada bulabilirsiniz: Azure VM boyutları - Bellek - Azure Sanal Makineler

  2. Aşağıdaki uzantıları etkinleştirin,

    1. Vektör

    2. azure_local_ai

PostgreSQL için Azure Veritabanı – Esnek Sunucuda uzantıları etkinleştirme hakkında daha fazla bilgi için bkz. PostgreSQL için Azure Veritabanı'da uzantıları etkinleştirme.

Not

Azure Yerel AI önizlemesinin etkinleştirilmesi, çok dilli-e5-küçük modeli PostgreSQL için Azure Veritabanı Esnek Sunucu örneğine dağıtır. Bağlantılı belgelerde e5 ekibinden lisans koşulları sağlanır. Ek üçüncü taraf açık kaynak modelleri sürekli olarak yüklenebilir.

azure_local_ai uzantısı tarafından sağlanan işlevler

azure_local_ai uzantısı bir dizi işlev sağlar. Bu işlevler metin verilerinden vektör eklemeleri oluşturmanıza olanak tanıyarak üretken yapay zeka uygulamaları geliştirmenizi kolaylaştırır. Uzantı ekleme oluşturma, ayarları alma ve daha fazlası için işlevler sunar. Bu işlevleri kullanarak, PostgreSQL sınırının dışında barındırılan yapay zeka ekleme modellerine ek uzak API çağrıları gereksinimini ortadan kaldırarak geliştirme sürecini basitleştirebilir ve gecikme süresini azaltabilirsiniz.

Şema Veri Akışı Adı Sonuç veri türü Bağımsız değişken veri türleri
azure_local_ai create_embeddings TABLE(ekleme gerçek[]) model_uri metin, girdi metni[], batch_size bigint DEFAULT 128, timeout_ms tamsayı DEFAULT 3600000
azure_local_ai create_embeddings gerçek[] model_uri metin, giriş metni, timeout_ms tamsayı VARSAYıLAN 3600000
azure_local_ai get_setting jsonb keys text[] DEFAULT ARRAY[]::text[], timeout_ms integer DEFAULT 3600000
azure_local_ai get_setting text anahtar metni, timeout_ms tamsayı VARSAYıLAN 3600000
azure_local_ai model_metadata jsonb Metni model_uri

Bunlar PSQL komutuyla görüntülenebilir,

\df azure_local_ai.*

azure_local_ai.create_embeddings

azure_local_ai uzantısı, yerel olarak dağıtılan LLM'yi çağırarak hem skaler hem de toplu iş biçiminde eklemeler oluşturmanıza ve güncelleştirmenize olanak tanır.

azure_local_ai.create_embeddings(model_uri text, input text, batch_size bigint DEFAULT 128, timeout_ms integer DEFAULT 3600000);
azure_local_ai.create_embeddings(model_uri text, array[inputs [text]], batch_size bigint DEFAULT 128, timeout_ms integer DEFAULT 3600000);

Bağımsız değişkenler

model_uri

text eklemeyi oluşturmak için çağrılan metin ekleme modelinin adı.

input

text veya text[] eklemelerin oluşturulduğu işlevin aşırı yüklenmesine bağlı olarak tek bir metin veya metin dizisi.

batch_size

bigint DEFAULT 128 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ı.

Eklemeler oluşturmak ve bunları vektör olarak depolamak için azure_local_ai ve yerel olarak dağıtılan çok dilli-e5-küçük modeli kullanın

Aşağıda, yerel olarak dağıtılan çok dilli-e5 modeliyle ekleme oluşturmayı test etmek için kendi ortamınızda kullanılabilecek örnekler verilmiştir.

--Create docs table
CREATE TABLE docs(doc_id int generated always as identity primary key, doc text not null, embedding float4[], last_update timestamptz default now());

--Insert data into the docs table
INSERT INTO docs(doc) VALUES ('Create in-database embeddings with azure_local_ai extension.'),
                             ('Enable RAG patterns with in-database embeddings and vectors on Azure Database for PostgreSQL - Flexible server.'),
                             ('Generate vector embeddings in PostgreSQL with azure_local_ai extension.'),
                             ('Generate text embeddings in PostgreSQL for retrieval augmented generation (RAG) patterns with azure_local_ai extension and locally deployed LLM.'),
                             ('Use vector indexes and Azure OpenAI embeddings in PostgreSQL for retrieval augmented generation.');


-- Add a vector column and generate vector embeddings from locally deployed model
ALTER TABLE docs
ADD COLUMN doc_vector vector(384) -- multilingual-e5 embeddings are 384 dimensions
GENERATED ALWAYS AS (azure_local_ai.create_embeddings('multilingual-e5-small:v1', doc)::vector) STORED; -- TEXT string sent to local model

--View floating point entries in the doc_vector column
select doc_vector from docs;

-- Add a single record to the docs table and the vector embedding using azure_local_ai and locally deployed model will be automatically generated
INSERT INTO docs(doc) VALUES ('Semantic Search with Azure Database for PostgreSQL - Flexible Server and Azure OpenAI');

--View all doc entries and their doc_vector column
select doc, doc_vector, last_update from docs;

-- Simple array embedding
SELECT azure_local_ai.create_embeddings('multilingual-e5-small:v1', array['Recommendation System with Azure Database for PostgreSQL - Flexible Server and Azure OpenAI.', 'Generative AI with Azure Database for PostgreSQL - Flexible Server.']);

Ekleme sırasında eklemeleri güncelleştirme

Aşağıda, yerel olarak dağıtılan çok dilli-e5 modeliyle ekleme oluşturmayı test etmek için kendi ortamınızda kullanılabilecek örnekler verilmiştir.

-- Update embeddings upon insertion

-- create table
create table docs(doc_id int generated always as identity primary key, doc text not null, last_update timestamptz default now(), embedding float4[] 
	GENERATED ALWAYS AS (azure_local_ai.create_embeddings('multilingual-e5-small:v1', doc)) STORED);

--Insert data into the docs table
INSERT INTO docs(doc) VALUES ('Create in-database embeddings with azure_local_ai extension.'),
                             ('Enable RAG patterns with in-database embeddings and vectors on Azure Database for PostgreSQL - Flexible server.'),
                             ('Generate vector embeddings in PostgreSQL with azure_local_ai extension.'),
                             ('Generate text embeddings in PostgreSQL for retrieval augmented generation (RAG) patterns with azure_local_ai extension and locally deployed LLM.'),
                             ('Use vector indexes and Azure OpenAI embeddings in PostgreSQL for retrieval augmented generation.');


--Query embedding text, list results by descending similarity score
with all_docs as (
 select doc_id, doc, embedding
  from docs
), target_doc as (
 select azure_local_ai.create_embeddings('multilingual-e5-small:v1', 'Generate text embeddings in PostgreSQL.') embedding
)
select all_docs.doc_id, all_docs.doc , 1 - (all_docs.embedding::vector <=> target_doc.embedding::vector) as similarity
 from target_doc, all_docs
 order by similarity desc
 limit 2;

ONNX Çalışma Zamanı yapılandırması

azure_local_ai.get_setting

Yapılandırma seçeneklerinin geçerli değerlerini almak için kullanılır.

SELECT azure_local_ai.get_setting(key TEXT)

azure_local_ai uzantısı, ONNX Çalışma Zamanı Hizmeti içindeki ONNX Çalışma Zamanı iş parçacığı havuzunun yapılandırma parametrelerinin gözden geçirilmesini destekler. Şu anda değişikliklere izin verilmiyor. Bkz. ONNX Çalışma Zamanı performansını ayarlama.

Bağımsız değişkenler

Anahtar

için key geçerli değerler şunlardır:

  • intra_op_parallelism: ONNX Runtime iş parçacığı havuzuna göre tek işleci paralelleştirmek için kullanılan toplam iş parçacığı sayısını ayarlar. Varsayılan olarak, genel aktarım hızını artırdığı kadar işlem içi iş parçacığı sayısını en üst düzeye çıkarırız (varsayılan olarak tüm kullanılabilir cpu'lar).
  • inter_op_parallelism: ONNX Runtime iş parçacığı havuzu tarafından paralel olarak birden çok işleci hesaplamada kullanılan iş parçacığı sayısını ayarlar. Varsayılan olarak, bunu mümkün olan en düşük iş parçacığı (1) olarak ayarlarız. İş parçacıkları arasındaki sık bağlam geçişleri nedeniyle bu değerin artırılması genellikle performansa zarar verir.
  • spin_control: İstekler için ONNX Çalışma Zamanı iş parçacığı havuzunun döndürmesini değiştirir. Devre dışı bırakıldığında daha az cpu kullanır ve bu nedenle daha fazla gecikme süresine neden olur. Varsayılan olarak true (etkin) olarak ayarlanır.

Dönüş türü

TEXT seçili ayarın geçerli değerini temsil ediyor.