Azure AI uzantısıyla ekleme oluşturma

Tamamlandı

Anlamsal arama çalıştırmak için, sorgu ekleme işlemini, arama yapılan öğelerin eklemeleriyle karşılaştırmanız gerekir. Azure Veritabanı için PostgreSQL - Esnek Sunucu uzantısı, ekleme vektörleri oluşturmak üzere Azure OpenAI ile entegre edilir.

Azure OpenAI embeddings API'sine gönderilen

ve Azure OpenAI'ye azure_ai giriş

Azure AI için PostgreSQL için Azure Veritabanı esnek uzantısı, AzureOpenAI ve Azure AI Search dahil olmak üzere Microsoft Foundry ile tümleştirmek için kullanıcı tanımlı işlevler sağlar.

Azure OpenAI Embeddings API'si, giriş metninin ekleme vektörlerini oluşturur. Aranmakta olan tüm öğelerin eklemelerini ayarlamak için bu API'yi kullanın. Uzantının azure_aiazure_openai şeması, öğe eklemeleri başlatma veya anında bir sorgu ekleme oluşturma gibi eklemeler oluşturmak için API'yi SQL'den çağırmayı kolaylaştırır. Bu eklemeler daha sonra vektör benzerliği araması veya başka bir deyişle anlamsal arama gerçekleştirmek için kullanılabilir.

Azure OpenAI ile azure_ai uzantısını kullanma

PostgreSQL'den Azure OpenAI Embeddings API'sini çağırmak için uzantıyı azure_ai etkinleştirmeniz ve yapılandırmanız, Azure OpenAI'ye erişim vermeniz ve bir Azure OpenAI modeli dağıtmanız gerekir. Daha fazla bilgi için Azure Database for PostgreSQL Esnek Sunucu üzerinde Azure OpenAI belgelerine bakın.

Ortam hazır olduğunda ve uzantı izin verilen listeye eklendiğinde, şu SQL'i çalıştırın:

/* Enable the extension. */
CREATE EXTENSION azure_ai;

OpenAI hizmeti kaynağınızın uç nokta ve erişim anahtarını da yapılandırmanız gerekir:

SELECT azure_ai.set_setting('azure_openai.endpoint', '{your-endpoint-url}');
SELECT azure_ai.set_setting('azure_openai.subscription_key', '{your-api-key}}');

Azure OpenAI ve azure_ai yapılandırıldıktan sonra eklemeleri getirmek ve depolamak, SQL sorgusunda bir işlevi çağırmak kadar basit bir işlemdir. listings adında bir tablo ve description ile listing_vector adında sütunları varsayarsak, aşağıdaki sorguyla tüm ilanlar için eklemeyi oluşturup depolayabilirsiniz. {your-deployment-name} öğesini, oluşturduğunuz model için Azure OpenAI Studio'dan alınan Dağıtım adıyla değiştirin.

UPDATE listings
SET listing_vector = azure_openai.create_embeddings('{your-deployment-name}', description, max_attempts => 5, retry_delay_ms => 500)
WHERE listing_vector IS NULL;

Vektör listing_vector sütunu, dil modelinin ürettiği boyut sayısıyla aynı sayıda olmalıdır.

Belge ekleme işlemini görmek için aşağıdaki sorguyu çalıştırın:

SELECT listing_vector FROM listings LIMIT 1;

Sonuç, kayan nokta sayılarından oluşan bir vektördür. Çıkışı daha okunabilir hale getirmek için önce komutunu çalıştırabilirsiniz \x .

Sorgu gömüsünü dinamik olarak oluşturma

Aramak istediğiniz belgeler için eklemeler yaptıktan sonra anlamsal bir arama sorgusu çalıştırabilirsiniz. Bunu yapmak için sorgu metni için bir ekleme de oluşturmanız gerekir.

Uzantının azure_openaiazure_ai şeması SQL'de eklemeler oluşturmanıza olanak tanır. Örneğin, metni "İzlenebilir bir mahallede bana yer bul" sorgusuna en çok benzeyen ilk üç listeyi bulmak için aşağıdaki SQL'i çalıştırın:

SELECT id, description FROM listings
ORDER BY listing_vector <=> azure_openai.create_embeddings('{your-deployment-name}', 'Find me places in a walkable neighborhood.')::vector
LIMIT 3;

<=> işleci, semantik benzerlik ölçümü olan iki vektör arasındaki kosinüs uzaklığını hesaplar. Vektörler birbirine ne kadar yakınsa, o kadar anlamsal olarak benzerdir; vektörler ne kadar uzaksa, o kadar anlamsal olarak farklıdır.

::vector işleci, oluşturulan eklemeleri PostgreSQL vektör dizilerine dönüştürür.

Sorgu, daha az benzeyenden daha çok benzeyene (daha farklıdan daha az farklıya) sıralanan ilk üç liste ID'lerini ve açıklamalarını döndürür.