Aracılığıyla paylaş


Azure AI özelliklerini PostgreSQL için Azure Veritabanı ile tümleştirme

Uzantı, azure_aiBüyük dil modellerini (LLM) kullanma ve Azure AI hizmetlerinin gücünü tümleştirerek PostgreSQL için Azure Veritabanı veritabanında üretken yapay zeka uygulamaları oluşturma olanağı sunar.

Üretken yapay zeka, LLM'lerin doğal dil girişine dayalı özgün içerik oluşturmak için eğitildiği bir yapay zeka biçimidir. Uzantıyı kullanarak, doğrudan veritabanından azure_ai doğal dil sorgularını işlemek için üretken yapay zeka özelliklerini kullanabilirsiniz.

Bu makale, uzantıyı kullanarak azure_ai PostgreSQL için Azure Veritabanı esnek sunucu örneğine zengin yapay zeka özellikleri eklemeyi gösterir. Uzantıyı kullanarak hem Azure OpenAI'yi hem de Azure AI Dil hizmetini veritabanınızla nasıl tümleştirebileceğinizi gösterir.

Önkoşullar

  • Bir Azure aboneliği. Ücretsiz bir tane oluşturun.

  • İstenen Azure aboneliğinde Azure OpenAI'ya erişim verilir. Şu anda uygulama bu hizmete erişim izni verir. Formu Azure OpenAI Hizmeti için sınırlı erişim bölümünde tamamlayarak Azure OpenAI'ye erişim için başvurabilirsiniz.

  • text-embedding-ada-002 (sürüm 2) modelinin dağıtıldığı bir Azure OpenAI kaynağı. Bu model şu anda yalnızca belirli bölgelerde kullanılabilir. Kaynağınız yoksa, kaynak oluşturma işlemi Azure OpenAI kaynak dağıtım kılavuzunda belgelenmiştir.

  • Azure AI Dil kaynağı. Dil kaynağınız yoksa, özetleme için hızlı başlangıçta sağlanan yönergeleri izleyerek Azure portalında bir kaynak oluşturabilirsiniz. Hizmeti denemek ve daha sonra üretim için ücretli bir katmana yükseltmek için ücretsiz fiyatlandırma katmanını (Free F0) kullanabilirsiniz.

  • Azure aboneliğinizde PostgreSQL için Azure Veritabanı esnek sunucu örneği. Bu kaynağınız yoksa bkz. PostgreSQL için Azure Veritabanı oluşturma.

Azure Cloud Shell'de psql kullanarak veritabanına bağlanma

Azure Cloud Shell'i bir web tarayıcısında açın. Ortam olarak Bash'i seçin. İstenirse PostgreSQL için Azure Veritabanı veritabanınız için kullandığınız aboneliği seçin ve ardından Depolama oluştur'u seçin.

Veritabanı bağlantı ayrıntılarını almak için:

  1. Azure portalında PostgreSQL için Azure Veritabanı esnek sunucu örneğinize gidin.

  2. Soldaki menüde , Ayarlar'ın altında Bağlan'ı seçin. Bağlantı ayrıntıları bloğunu kopyalayın.

  3. Ortam değişkenleri için kopyalanan bildirim satırlarını Azure Cloud Shell terminaline yapıştırın. Belirteci {your-password} , veritabanını oluştururken ayarladığınız parolayla değiştirin.

    export PGHOST={your-server-name}.postgresql.database.azure.com
    export PGUSER={your-user-name}
    export PGPORT=5432
    export PGDATABASE={your-database-name}
    export PGPASSWORD="{your-password}"
    
  4. psql komut satırı aracını kullanarak veritabanınıza bağlanın. İstemde aşağıdaki komutu girin:

    psql
    

azure_ai uzantısını yükleme

Uzantıyı azure_ai kullanarak Azure OpenAI ve Azure Bilişsel Hizmetler'i veritabanınızla tümleştirebilirsiniz. Daha fazla bilgi için bkz. PostgreSQL için Azure Veritabanı'nda Azure OpenAI ile vektör eklemeleri oluşturma.

Uzantıyı veritabanınızda etkinleştirmek için:

  1. Uzantılara izin ver bölümünde açıklandığı gibi uzantıyı izin verilenler listenize ekleyin.

  2. Uzantıyı kullanmayı azure_ai planladığınız veritabanına Uzantı oluşturma bölümünde açıklandığı gibi uzantıyı yükleyin.

azure_ai uzantısındaki nesneleri inceleme

Uzantının azure_ai içerdiği nesneleri gözden geçirmek, sunduğu özelliklerin daha iyi anlaşılmasını sağlayabilir. Uzantıdaki \dx nesneleri listelemek için komut istemindeki meta komutunu psql kullanabilirsiniz:

\dx+ azure_ai

Meta komut çıkışı, uzantının azure_ai veritabanında üç şema, birden çok kullanıcı tanımlı işlev (UDF) ve birkaç bileşik tür oluşturduğunu gösterir. Aşağıdaki tabloda uzantının eklediği şemalar açıklanmaktadır:

Şema Açıklama
azure_ai Yapılandırma tablosunun ve kendisiyle etkileşime yönelik UDF'lerin bulunduğu asıl şemayı sağlar.
azure_openai Azure OpenAI uç noktasını çağırmayı etkinleştiren UDF'leri içerir.
azure_cognitive Veritabanını Azure Bilişsel Hizmetler ile tümleştirmeyle ilgili UDF'ler ve bileşik türler sağlar.

İşlevlerin ve türlerin tümü şemalardan biriyle ilişkilendirilir. Şemada azure_ai tanımlanan işlevleri gözden geçirmek için meta komutunu kullanın \df . İşlevlerinin görüntülenmesi gereken şemayı belirtin. \x auto Komutun çıkışının \df Azure Cloud Shell'de daha kolay görüntülenmesini sağlamak için, komuttan önceki komutlar genişletilmiş ekranı otomatik olarak açıp kapatır.

\x auto
\df+ azure_ai.*

azure_ai.set_setting() Azure AI hizmetleri için uç noktayı ve kritik değerleri ayarlamak için işlevini kullanın. Anahtarı ve atanacak değeri kabul eder. azure_ai.get_setting() işlevi, set_setting() işleviyle ayarladığınız değerleri almak için bir yol sağlar. Görüntülemek istediğiniz ayarın anahtarını kabul eder. Her iki yöntem için de anahtar aşağıdakilerden biri olmalıdır:

Tuş Açıklama
azure_openai.endpoint Desteklenen bir Azure OpenAI uç noktası (örneğin, https://example.openai.azure.com).
azure_openai.subscription_key Azure OpenAI kaynağı için abonelik anahtarı.
azure_cognitive.endpoint Desteklenen bilişsel hizmetler uç noktası (örneğin, https://example.cognitiveservices.azure.com).
azure_cognitive.subscription_key Bilişsel Hizmetler kaynağı için abonelik anahtarı.

Önemli

API anahtarları da dahil olmak üzere Azure AI hizmetlerinin bağlantı bilgileri veritabanındaki bir yapılandırma tablosunda depolandığından azure_ai , uzantı bu bilgilerin korunmasına ve yalnızca söz konusu role sahip kullanıcılar tarafından erişilebilir olmasına yardımcı olmak için adlı azure_ai_settings_manager bir rol tanımlar. Bu rol, uzantıyla ilgili ayarların okunmasını ve yazılmasını sağlar.

ve işlevlerini yalnızca süper kullanıcılar ve rolün azure_ai_settings_managerazure_ai.get_setting() üyeleri azure_ai.set_setting() çağırabilir. PostgreSQL için Azure Veritabanı'nda tüm yönetici kullanıcılar bu azure_ai_settings_manager role sahiptir.

Azure OpenAI ile vektör eklemeleri oluşturma

Uzantının azure_ai şeması, metin değerleri için vektör eklemeleri oluşturmak için Azure OpenAI'nin azure_openai kullanılmasını sağlar. Bu şemayı kullanarak, giriş metninin vektör gösterimlerini oluşturmak için doğrudan veritabanından Azure OpenAI ile eklemeler oluşturabilirsiniz. Bu gösterimler daha sonra vektör benzerliği aramalarında kullanılabilir ve makine öğrenmesi modelleri tarafından kullanılabilir.

Eklemeler, ilgili bilgilerin ne kadar yakın olduğunu değerlendirmek için makine öğrenmesi modellerini kullanma tekniğidir. Bu teknik, algoritmaların desenleri belirleyebilmesi ve doğru tahminlerde bulunabilmesi için veriler arasındaki ilişkilerin ve benzerliklerin verimli bir şekilde tanımlanmasını sağlar.

Azure OpenAI uç noktasını ve anahtarını ayarlama

İşlevleri kullanmadan azure_openai önce uzantıyı Azure OpenAI hizmet uç noktanız ve anahtarınız ile yapılandırın:

  1. Azure portalında Azure OpenAI kaynağınıza gidin. Soldaki menüde, Kaynak Yönetimi'nin altında Anahtarlar ve Uç Nokta'yı seçin.

  2. Uç noktanızı ve erişim anahtarınızı kopyalayın. KEY1 veya KEY2 kullanabilirsiniz. Her zaman iki anahtara sahip olmak, hizmet kesintisine neden olmadan anahtarları güvenli bir şekilde döndürmenize ve yeniden oluşturmanıza olanak tanır.

  3. Aşağıdaki komutta {endpoint} ve {api-key} belirteçlerini Azure portalından aldığınız değerlerle değiştirin. Ardından komut isteminden psql komutlarını çalıştırarak değerlerinizi yapılandırma tablosuna ekleyin.

    SELECT azure_ai.set_setting('azure_openai.endpoint','{endpoint}');
    SELECT azure_ai.set_setting('azure_openai.subscription_key', '{api-key}');
    
  4. Yapılandırma tablosunda yazılan ayarları doğrulayın:

    SELECT azure_ai.get_setting('azure_openai.endpoint');
    SELECT azure_ai.get_setting('azure_openai.subscription_key');
    

Uzantı azure_ai artık Azure OpenAI hesabınıza bağlıdır ve vektör eklemeleri oluşturmaya hazırdır.

Veritabanını örnek verilerle doldurma

Bu makalede, vektör oluşturmaya yönelik örnek metin verileri sağlamak için BillSum veri kümesinin küçük bir alt kümesi kullanılmaktadır. Bu veri kümesi, Amerika Birleşik Devletleri kongre ve California eyalet faturalarının listesini sağlar. Bu verileri içeren dosyayı bill_sum_data.csv indirebilirsiniz.

Örnek verileri veritabanında barındırmak için adlı bill_summariesbir tablo oluşturun:

CREATE TABLE bill_summaries
(
    id bigint PRIMARY KEY,
    bill_id text,
    bill_text text,
    summary text,
    title text,
    text_len bigint,
    sum_len bigint
);

Komut istemindeki PostgreSQL COPY komutunupsql kullanarak CSV dosyasındaki örnek verileri tabloya bill_summaries yükleyin. CSV dosyasının ilk satırının üst bilgi satırı olduğunu belirtin.

\COPY bill_summaries (id, bill_id, bill_text, summary, title, text_len, sum_len) FROM PROGRAM 'curl "https://raw.githubusercontent.com/Azure-Samples/Azure-OpenAI-Docs-Samples/main/Samples/Tutorials/Embeddings/data/bill_sum_data.csv"' WITH CSV HEADER ENCODING 'UTF8'

Vektör desteğini etkinleştirme

Giriş metni için eklemeler oluşturmak için uzantıyı azure_ai kullanabilirsiniz. Oluşturulan vektörlerin veritabanındaki verilerinizin geri kalanıyla birlikte depolanmasını sağlamak için uzantıyı pgvector yüklemeniz gerekir. Veritabanınızda vektör desteğini etkinleştirme hakkındaki belgelerdeki yönergeleri izleyin.

Veritabanınıza vektör desteği eklendiğinde, eklemeleri tablo içinde depolamak için bill_summaries veri türünü kullanarak vector tabloya yeni bir sütun ekleyin. Model text-embedding-ada-002 1.536 boyutlu vektörler üretir, bu nedenle vektör boyutu olarak belirtmeniz 1536 gerekir.

ALTER TABLE bill_summaries
ADD COLUMN bill_vector vector(1536);

Vektör oluşturma ve depolama

Tablo bill_summaries artık eklemeleri depolamaya hazırdır. işlevini kullanarak azure_openai.create_embeddings() , alan için bill_text vektörler oluşturur ve bunları tablodaki yeni oluşturulan bill_vector sütuna bill_summaries eklersiniz.

İşlevi create_embeddings() kullanmadan önce, aşağıdaki komutu çalıştırarak inceleyin ve gerekli bağımsız değişkenleri gözden geçirin:

\df+ azure_openai.*

Argument data types Komutun çıkışındaki \df+ azure_openai.* özelliği, işlevin beklediği bağımsız değişkenlerin listesini gösterir:

Bağımsız değişken Tür Varsayılan Açıklama
deployment_name text Azure AI Foundry portalında modeli içeren dağıtımın text-embeddings-ada-002 adı.
input text Ekleme oluşturmak için kullanılan giriş metni.
timeout_ms integer 3600000 İşlem durdurulduktan sonra milisaniye cinsinden zaman aşımı.
throw_on_error boolean true İşlevin hata durumunda, sarmalama işlemlerinin geri alınmasına yol açacak bir istisna fırlatıp fırlatmayacağını belirten bayrak.

Birinci bağımsız değişken, gömme modeliniz Azure OpenAI hesabınıza dağıtıldığında atanan deployment_name değeridir. Bu değeri almak için:

  1. Azure portalında Azure OpenAI kaynağınıza gidin.

  2. Soldaki menüde, Kaynak Yönetimi'nin altında Model dağıtımları'nı seçerek Azure AI Foundry portalını açın.

  3. Azure AI Foundry portalında Dağıtımlar'ı seçin. Dağıtımlar bölmesinde, model dağıtımıylatext-embedding-ada-002 ilişkili Dağıtım adı değerini kopyalayın.

Yapay zekayı tümleştirmek için dağıtım ekleme işleminin ekran görüntüsü.

Bu bilgileri kullanarak tablodaki bill_summaries her kaydı güncelleştirmek için bir sorgu çalıştırın. bill_text alanı için oluşturulan vektör gömmelerini bill_vector sütununa, azure_openai.create_embeddings() işlevini kullanarak ekleyin. değerini, Azure AI Foundry portalının {your-deployment-name} bölmesinden kopyaladığınız Dağıtım adı değeriyle değiştirin. Ardından aşağıdaki komutu çalıştırın:

UPDATE bill_summaries b
SET bill_vector = azure_openai.create_embeddings('{your-deployment-name}', b.bill_text);

Tablodaki ilk kayıt için oluşturulan ekleme işlemini görüntülemek için aşağıdaki sorguyu çalıştırın. Çıktının okunmasının zor olması durumunda önce komutunu çalıştırabilirsiniz \x .

SELECT bill_vector FROM bill_summaries LIMIT 1;

Her ekleme kayan nokta sayılarından oluşan bir vektördür. Vektör uzayına iki ekleme arasındaki uzaklık, özgün biçimdeki iki giriş arasındaki anlamsal benzerlikle ilişkilendirilir.

Vektör benzerliği, iki öğenin ne kadar benzer olduğunu vektör olarak temsil ederek ölçmeye yönelik bir yöntemdir. Vektörler bir sayı dizisidir. Bunlar genellikle LLM'ler aracılığıyla arama yapmak için kullanılır.

Vektör benzerliği genellikle aşağıdakiler gibi uzaklık ölçümleri aracılığıyla hesaplanır:

  • Öklid uzaklığı: N boyutlu uzayda iki vektör arasındaki düz çizgi mesafesini ölçer.
  • Kosinüs benzerliği: İki vektör arasındaki açının kosinüsünü ölçer.

Kosinüs uzaklığı ve vector aracılığıyla bill_summaries üzerinde bir dizin oluşturmak için alanında daha verimli arama yapın. HNSW, en yakın komşu sorgular için en son graf tabanlı algoritmaların kullanılmasına olanak tanır pgvector .

CREATE INDEX ON bill_summaries USING hnsw (bill_vector vector_cosine_ops);

Her şey hazır durumdayken, veritabanında kosinüs benzerlik arama sorgusu yürütmeye hazırsınız.

Aşağıdaki sorguda, eklemeler bir giriş sorusu için oluşturulur ve ardından bir vektör dizisine (::vector ) yayınlanmıştır. Vektör dizisi, sorunun tabloda depolanan bill_summaries vektörlerle karşılaştırılmasını sağlar.

SELECT bill_id, title FROM bill_summaries
ORDER BY bill_vector <=> azure_openai.create_embeddings('embeddings', 'Show me bills relating to veterans entrepreneurship.')::vector
LIMIT 3;

Sorgu <=> kullanır. Bu işleç, çok boyutlu bir alanda iki vektör arasındaki uzaklığı hesaplamak için kullanılan kosinüs uzaklığı işlecini temsil eder.

Azure Bilişsel Hizmetler'i tümleştirme

Uzantının şemasına azure_cognitiveazure_ai eklenen Azure AI hizmetleri tümleştirmeleri, doğrudan veritabanından erişebileceğiniz zengin bir yapay zeka dili özellikleri kümesi sağlar. İşlevler yaklaşım analizi, dil algılama, anahtar tümcecik ayıklama, varlık tanıma ve metin özetlemeyi içerir. Bu özelliklere erişim, Azure AI Dil hizmeti aracılığıyla etkinleştirilir.

Uzantı aracılığıyla erişebileceğiniz tüm Azure AI özelliklerini gözden geçirmek için bkz. PostgreSQL için Azure Veritabanı'nı Azure Bilişsel Hizmetler ile tümleştirme.

Azure AI Dil hizmeti uç noktasını ve anahtarını ayarlama

İşlevlerde olduğu gibi uzantıyı azure_openai kullanarak azure_ai Azure AI hizmetlerine yönelik çağrıları başarıyla gerçekleştirmek için Azure AI Dil hizmeti kaynağınız için uç noktayı ve anahtarı sağlamanız gerekir:

  1. Azure portalında Dil hizmeti kaynağınıza gidin.

  2. Soldaki menüde, Kaynak Yönetimi'nin altında Anahtarlar ve Uç Nokta'yı seçin.

  3. Uç noktanızı ve erişim anahtarınızı kopyalayın. KEY1 veya KEY2 kullanabilirsiniz.

  4. Komut isteminde psql , değerlerinizi yapılandırma tablosuna eklemek için aşağıdaki komutları çalıştırın. {endpoint} ve {api-key} belirteçlerini Azure portalından aldığınız değerlerle değiştirin.

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

Faturaları özetleme

azure_cognitive uzantısının azure_ai işlevlerinin bazı özelliklerini göstermek için, her faturanın özetini oluşturabilirsiniz. Şema, azure_cognitive metni özetlemek için iki işlev sağlar:

  • summarize_abstractive: Soyut özetleme, giriş metnindeki ana kavramları yakalayan ancak aynı sözcükleri kullanamayabilen bir özet oluşturur.
  • summarize_extractive: Ayıklayıcı özetleme, giriş metninden kritik cümleler ayıklayarak bir özet oluşturur.

Azure AI Dil hizmetinin yeni, özgün içerik oluşturma özelliğini kullanmak için işlevini kullanarak summarize_abstractive metin girişinin özetini oluşturursunuz. \df meta komutunu yeniden psql kullanın; bu kez, azure_cognitive.summarize_abstractive işlevine özel olarak bakmak için:

\df azure_cognitive.summarize_abstractive

Argument data types Komutun çıkışındaki \df azure_cognitive.summarize_abstractive özelliği, işlevin beklediği bağımsız değişkenlerin listesini gösterir:

Bağımsız değişken Tür Varsayılan Açıklama
text text Özetlemek için metin girişi.
language text Giriş metninin yazıldığı dilin iki harfli ISO 639-1 gösterimi. İzin verilen değerler için Dil özellikleri için Dil desteği'ne bakın.
timeout_ms integer 3600000 İşlem durdurulduktan sonra milisaniye cinsinden zaman aşımı.
throw_on_error boolean true İşlevin hata durumunda, sarmalama işlemlerinin geri alınmasına yol açacak bir istisna fırlatıp fırlatmayacağını belirten bayrak.
sentence_count integer 3 Oluşturulan özete eklenecek en fazla cümle sayısı.
disable_service_logs boolean false Dil hizmeti günlüklerini devre dışı bırakan ayar. Dil hizmeti, giriş metninizi yalnızca sorun gidermeye izin vermek için 48 saat boyunca günlüğe kaydeder. Bu özelliği giriş true günlüğünü devre dışı bırakmak ve oluşan sorunları araştırma yeteneğimizi sınırlandırabilir. Daha fazla bilgi için Bkz. Bilişsel Hizmetler uyumluluk ve gizlilik notları ve Microsoft Sorumlu Yapay Zeka ilkeleri.

İşlev summarize_abstractive aşağıdaki bağımsız değişkenleri gerektirir: azure_cognitive.summarize_abstractive(text TEXT, language TEXT).

Aşağıdaki sorgu, bill_summaries tablosuna karşı summarize_abstractive işlevini kullanarak kanun taslağı metni için yeni bir tek cümlelik özet oluşturur. Üretken yapay zekanın gücünü doğrudan sorgularınıza dahil etmenizi sağlar.

SELECT
    bill_id,
    azure_cognitive.summarize_abstractive(bill_text, 'en', sentence_count => 1) one_sentence_summary
FROM bill_summaries
WHERE bill_id = '112_hr2873';

Veritabanı tablolarınıza veri yazmak için işlevini de kullanabilirsiniz. bill_summaries Tek cümlelik özetleri veritabanında depolamak için yeni bir sütun eklemek için tabloyu değiştirin:

ALTER TABLE bill_summaries
ADD COLUMN one_sentence_summary TEXT;

Ardından, tabloyu özetlerle güncelleştirin. summarize_abstractive İşlev bir metin dizisi (text[]) döndürür. array_to_string işlevi dönüş değerini dize gösterimine dönüştürür. Aşağıdaki sorguda throw_on_error bağımsız değişken olarak falseayarlanır. Bu ayar, bir hata oluşursa özetleme işleminin devam etmesini sağlar.

UPDATE bill_summaries b
SET one_sentence_summary = array_to_string(azure_cognitive.summarize_abstractive(b.bill_text, 'en', throw_on_error => false, sentence_count => 1), ' ', '')
where one_sentence_summary is NULL;

Çıktıda, uygun özetlemenin oluşturulamadığı geçersiz bir belgeyle ilgili bir uyarı fark edebilirsiniz. Bu uyarı, önceki sorguda throw_on_error ile false olarak ayarlandığında ortaya çıkar. Bu bayrağı varsayılan trueolarak bırakırsanız sorgu başarısız olur ve veritabanına hiçbir özet yazılamaz. Uyarıyı veren kaydı görüntülemek için şu komutu çalıştırın:

SELECT bill_id, one_sentence_summary FROM bill_summaries WHERE one_sentence_summary is NULL;

Ardından, uzantının tablodaki bill_summaries diğer kayıtlar için oluşturduğu yeni, tek cümlelik özetleri azure_ai görüntülemek için tabloyu sorgulayabilirsiniz:

SELECT bill_id, one_sentence_summary FROM bill_summaries LIMIT 5;

Sonuç

Tebrikler! Uzantıyı azure_ai kullanarak büyük dil modellerini ve üretken yapay zeka özelliklerini veritabanınızla tümleştirmeyi öğrendinsiniz.