Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Ekstensi ini azure_ai menambahkan kemampuan untuk menggunakan model bahasa besar (LLM) dan membangun aplikasi AI generatif dalam database Azure Database for PostgreSQL dengan mengintegrasikan kekuatan layanan Azure AI.
AI generatif adalah bentuk kecerdasan buatan di mana LLM dilatih untuk menghasilkan konten asli berdasarkan input bahasa alami. Dengan menggunakan azure_ai ekstensi, Anda dapat menggunakan kemampuan AI generatif untuk memproses kueri bahasa alami langsung dari database.
Artikel ini menampilkan penambahan kemampuan AI yang kaya ke instans server fleksibel Azure Database for PostgreSQL dengan menggunakan azure_ai ekstensi. Ini menunjukkan bagaimana Anda dapat mengintegrasikan Azure OpenAI dan layanan Bahasa Azure AI ke dalam database Anda dengan menggunakan ekstensi.
Prasyarat
Sebuah langganan Azure. Buat akun gratis.
Akses yang diberikan ke Azure OpenAI dalam langganan Azure yang diinginkan. Saat ini, aplikasi memberikan akses ke layanan ini. Anda dapat mengajukan permohonan akses ke Azure OpenAI dengan melengkapi formulir dalam Akses terbatas untuk Layanan Azure OpenAI.
Sumber daya Azure OpenAI dengan model
text-embedding-ada-002versi 2 yang telah disebarkan. Model ini saat ini hanya tersedia di wilayah tertentu. Jika Anda tidak memiliki sumber daya, proses untuk membuatnya didokumentasikan dalam panduan penyebaran sumber daya Azure OpenAI.Sumber daya Bahasa Azure AI. Jika Anda tidak memiliki sumber daya Bahasa, Anda dapat membuatnya di portal Microsoft Azure dengan mengikuti instruksi yang disediakan dalam mulai cepat untuk ringkasan. Anda dapat menggunakan tingkat harga gratis (
Free F0) untuk mencoba layanan dan meningkatkannya nanti ke tingkat berbayar untuk produksi.Instans server fleksibel Azure Database for PostgreSQL di langganan Azure Anda. Jika Anda tidak memiliki sumber daya ini, lihat Membuat Azure Database for PostgreSQL.
Menyambungkan ke database dengan menggunakan psql di Azure Cloud Shell
Buka Azure Cloud Shell di browser web. Pilih Bash sebagai lingkungan. Jika diminta, pilih langganan yang Anda gunakan untuk database Azure Database for PostgreSQL Anda, lalu pilih Buat penyimpanan.
Untuk mengambil detail koneksi database:
Di portal Microsoft Azure, buka instans server fleksibel Azure Database for PostgreSQL Anda.
Di menu sebelah kiri, di bawah Pengaturan, pilih Sambungkan. Salin blok Detail sambungan.
Tempelkan baris deklarasi yang disalin untuk variabel lingkungan ke terminal Azure Cloud Shell.
{your-password}Ganti token dengan kata sandi yang Anda tetapkan saat membuat database.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}"Sambungkan ke database Anda dengan menggunakan alat baris perintah psql. Masukkan perintah berikut pada prompt:
psql
Menginstal ekstensi azure_ai
Anda dapat menggunakan azure_ai ekstensi untuk mengintegrasikan Azure OpenAI dan Azure Cognitive Services ke dalam database Anda. Untuk informasi selengkapnya, lihat Membuat penyematan vektor dengan Azure OpenAI di Azure Database for PostgreSQL.
Untuk mengaktifkan ekstensi di database Anda:
Tambahkan ekstensi ke daftar izin Anda, seperti yang dijelaskan dalam Izinkan ekstensi.
Dalam database tempat Anda berencana menggunakan
azure_aiekstensi, instal ekstensi seperti yang dijelaskan dalam Membuat ekstensi.
Memeriksa objek di ekstensi azure_ai
Meninjau objek yang dikandung azure_ai ekstensi dapat memberikan pemahaman yang lebih baik tentang kemampuan yang ditawarkannya. Anda dapat menggunakan \dx meta-command dari prompt perintah psql untuk mencantumkan objek dalam ekstensi.
\dx+ azure_ai
Output meta-command menunjukkan bahwa azure_ai ekstensi membuat tiga skema, beberapa fungsi yang ditentukan pengguna (UDF), dan beberapa jenis komposit dalam database. Tabel berikut ini menjelaskan skema yang ditambahkan ekstensi:
| Skema | Deskripsi |
|---|---|
azure_ai |
Menyediakan skema utama tempat tabel konfigurasi dan UDF untuk berinteraksi dengannya berada. |
azure_openai |
Berisi UDF yang memungkinkan panggilan titik akhir Azure OpenAI. |
azure_cognitive |
Menyediakan UDF dan jenis komposit yang terkait dengan integrasi database dengan Azure Cognitive Services. |
Fungsi dan jenis semuanya terkait dengan salah satu skema. Untuk meninjau fungsi yang ditentukan dalam azure_ai skema, gunakan \df meta-command. Tentukan skema yang fungsinya harus ditampilkan. Perintah \x auto sebelum perintah \df secara otomatis mengaktifkan dan menonaktifkan tampilan yang diperluas untuk memudahkan melihat output perintah di Azure Cloud Shell.
\x auto
\df+ azure_ai.*
azure_ai.set_setting() Gunakan fungsi untuk mengatur titik akhir dan nilai penting untuk layanan Azure AI. Ini menerima kunci dan nilai untuk menetapkannya. Fungsi azure_ai.get_setting() menyediakan cara untuk mengambil nilai yang Anda tetapkan dengan fungsi set_setting(). Ini menerima kunci pengaturan yang ingin Anda lihat. Untuk kedua metode, kunci harus salah satu dari yang berikut:
| Kunci | Deskripsi |
|---|---|
azure_openai.endpoint |
Titik akhir Azure OpenAI yang didukung (misalnya, https://example.openai.azure.com). |
azure_openai.subscription_key |
Kunci langganan untuk sumber daya Azure OpenAI. |
azure_cognitive.endpoint |
Titik akhir Cognitive Services yang didukung (misalnya, https://example.cognitiveservices.azure.com). |
azure_cognitive.subscription_key |
Kunci langganan untuk sumber daya Cognitive Services. |
Penting
Karena informasi koneksi untuk layanan Azure AI, termasuk kunci API, disimpan dalam tabel konfigurasi dalam database, ekstensi menentukan peran yang disebut azure_ai untuk membantu memastikan bahwa informasi ini dilindungi dan hanya dapat diakses oleh pengguna yang memiliki peran tersebutazure_ai_settings_manager. Peran ini memungkinkan pembacaan dan penulisan pengaturan yang terkait dengan ekstensi.
Hanya superuser dan anggota peran yang azure_ai_settings_manager dapat memanggil azure_ai.get_setting() fungsi dan azure_ai.set_setting() . Di Azure Database for PostgreSQL, semua pengguna admin memiliki peran azure_ai_settings_manager.
Membuat penyematan vektor dengan Azure OpenAI
azure_ai Skema azure_openai ekstensi memungkinkan penggunaan Azure OpenAI untuk membuat penyematan vektor untuk nilai teks. Dengan menggunakan skema ini, Anda dapat menghasilkan penyematan dengan Azure OpenAI langsung dari database untuk membuat representasi vektor teks input. Representasi ini kemudian dapat digunakan dalam pencarian kesamaan vektor dan digunakan oleh model pembelajaran mesin.
Penyematan adalah teknik menggunakan model pembelajaran mesin untuk mengevaluasi seberapa dekat informasi terkait. Teknik ini memungkinkan identifikasi hubungan dan kesamaan yang efisien antara data, sehingga algoritma dapat mengidentifikasi pola dan membuat prediksi yang akurat.
Mengatur titik akhir dan kunci Azure OpenAI
Sebelum Anda menggunakan azure_openai fungsi, konfigurasikan ekstensi dengan titik akhir dan kunci layanan Azure OpenAI Anda:
Di portal Microsoft Azure, buka sumber daya Azure OpenAI Anda. Di menu sebelah kiri, di bawah Manajemen Sumber Daya, pilih Kunci dan Titik Akhir.
Salin titik akhir dan kunci akses Anda. Anda dapat menggunakan
KEY1atauKEY2. Selalu miliki dua kunci akan memungkinkan Anda untuk merotasi dan membuat kunci dengan aman tanpa menyebabkan layanan terganggu.Dalam perintah berikut, ganti
{endpoint}token dan{api-key}dengan nilai yang Anda ambil dari portal Microsoft Azure. Kemudian jalankan perintah daripsqlcommand prompt untuk menambahkan nilai Anda ke tabel konfigurasi.SELECT azure_ai.set_setting('azure_openai.endpoint','{endpoint}'); SELECT azure_ai.set_setting('azure_openai.subscription_key', '{api-key}');Verifikasi pengaturan yang ditulis dalam tabel konfigurasi:
SELECT azure_ai.get_setting('azure_openai.endpoint'); SELECT azure_ai.get_setting('azure_openai.subscription_key');
azure_ai Ekstensi sekarang terhubung ke akun Azure OpenAI Anda dan siap untuk menghasilkan penyematan vektor.
Mengisi database dengan data sampel
Artikel ini menggunakan subset kecil himpunan data BillSum untuk menyediakan data teks sampel untuk menghasilkan vektor. Himpunan data ini menyediakan daftar RUU kongres Amerika Serikat dan RUU negara bagian California. Anda dapat mengunduh bill_sum_data.csv file yang berisi data ini dari repositori GitHub untuk sampel Azure.
Untuk menghosting data sampel dalam database, buat tabel bernama bill_summaries:
CREATE TABLE bill_summaries
(
id bigint PRIMARY KEY,
bill_id text,
bill_text text,
summary text,
title text,
text_len bigint,
sum_len bigint
);
Dengan menggunakan perintah PostgreSQL COPY dari psql prompt perintah, muat data sampel dari file CSV ke bill_summaries dalam tabel. Tentukan bahwa baris pertama file CSV adalah baris header.
\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'
Mengaktifkan dukungan vektor
Anda dapat menggunakan azure_ai ekstensi untuk menghasilkan penyematan untuk teks input. Untuk mengaktifkan vektor yang dihasilkan disimpan bersama sisa data Anda dalam database, Anda harus menginstal pgvector ekstensi. Ikuti panduan dalam dokumentasi tentang mengaktifkan dukungan vektor di database Anda.
Dengan dukungan vektor ditambahkan ke database Anda, tambahkan kolom baru ke bill_summaries tabel dengan menggunakan vector tipe data untuk menyimpan penyematan dalam tabel. Model ini text-embedding-ada-002 menghasilkan vektor dengan 1.536 dimensi, jadi Anda harus menentukan 1536 sebagai ukuran vektor.
ALTER TABLE bill_summaries
ADD COLUMN bill_vector vector(1536);
Membuat dan menyimpan vektor
Tabel bill_summaries sekarang siap untuk menyimpan penyematan. Dengan menggunakan fungsi azure_openai.create_embeddings(), Anda membuat vektor untuk bidang bill_text dan menyisipkannya ke dalam kolom bill_vector yang baru dibuat dalam tabel bill_summaries.
Sebelum Anda menggunakan create_embeddings() fungsi , jalankan perintah berikut untuk memeriksanya dan tinjau argumen yang diperlukan:
\df+ azure_openai.*
Properti Argument data types dalam output \df+ azure_openai.* perintah mengungkapkan daftar argumen yang diharapkan fungsi:
| Argumen | Jenis | Bawaan | Deskripsi |
|---|---|---|---|
deployment_name |
text |
Nama penyebaran di portal Azure AI Foundry yang berisi model text-embeddings-ada-002. |
|
input |
text |
Teks input yang digunakan untuk membuat penyematan. | |
timeout_ms |
integer |
3600000 |
Waktu habis dalam milidetik, setelah itu operasi dihentikan. |
throw_on_error |
boolean |
true |
Penanda yang menunjukkan apakah fungsi harus menghasilkan pengecualian pada kesalahan, yang berakibat pada pengulangan transaksi pengemasan. |
Argumen pertama adalah nilai deployment_name, yang ditentukan ketika model embedding Anda diterapkan di akun Azure OpenAI Anda. Untuk mengambil nilai ini:
Buka sumber daya Azure OpenAI Anda di portal Azure.
Di menu sebelah kiri, di bawah Manajemen Sumber Daya, pilih Penyebaran model untuk membuka portal Azure AI Foundry.
Di portal Azure AI Foundry, pilih Penyebaran. Pada panel Penyebaran , salin nilai Nama penyebaran yang terkait dengan
text-embedding-ada-002penyebaran model.
Dengan menggunakan informasi ini, jalankan kueri untuk memperbarui setiap rekaman dalam bill_summaries tabel. Sisipkan penyematan vektor yang dihasilkan untuk bidang bill_text ke dalam kolom bill_vector dengan menggunakan fungsi azure_openai.create_embeddings(). Ganti {your-deployment-name} dengan nilai Nama penyebaran yang Anda salin dari panel Penyebaran portal Azure AI Foundry. Kemudian, jalankan perintah berikut:
UPDATE bill_summaries b
SET bill_vector = azure_openai.create_embeddings('{your-deployment-name}', b.bill_text);
Jalankan kueri berikut untuk menampilkan penyematan yang dihasilkan untuk rekaman pertama dalam tabel. Anda dapat menjalankan \x terlebih dahulu jika output sulit dibaca.
SELECT bill_vector FROM bill_summaries LIMIT 1;
Setiap penyematan adalah vektor angka titik mengambang. Jarak antara dua penyematan dalam ruang vektor berkorelasi dengan kesamaan semantik antara dua input dalam format asli.
Melakukan pencarian kesamaan vektor
Kesamaan vektor adalah metode untuk mengukur seberapa mirip dua item dengan mewakilinya sebagai vektor. Vektor adalah serangkaian angka. Mereka sering digunakan untuk melakukan pencarian melalui LLM.
Kesamaan vektor umumnya dihitung melalui metrik jarak, seperti:
- Jarak euclidean: Mengukur jarak garis lurus antara dua vektor di ruang n-dimensi.
- Kesamaan kosinus: Mengukur kosinus sudut antara dua vektor.
Aktifkan pencarian yang lebih efisien pada bidang vector dengan membuat indeks pada bill_summaries menggunakan jarak kosinus dan Hierarchical Navigable Small World (HNSW). HNSW memungkinkan pgvector untuk menggunakan algoritma berbasis grafik terbaru untuk perkiraan kueri tetangga terdekat.
CREATE INDEX ON bill_summaries USING hnsw (bill_vector vector_cosine_ops);
Dengan semua yang ada sekarang, Anda siap untuk menjalankan kueri pencarian kesamaan kosinus terhadap database.
Dalam kueri berikut, penyematan dihasilkan untuk pertanyaan input lalu ditransmisikan ke array vektor (::vector). Array vektor memungkinkan pertanyaan dibandingkan dengan vektor yang disimpan dalam bill_summaries tabel.
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;
Kueri menggunakan <=>operator vektor. Operator ini mewakili operator jarak kosinus yang digunakan untuk menghitung jarak antara dua vektor dalam ruang multidmensional.
Mengintegrasikan Azure Cognitive Services
Integrasi layanan Azure AI yang disertakan dalam azure_cognitive skema azure_ai ekstensi menyediakan serangkaian fitur bahasa AI yang kaya yang dapat Anda akses langsung dari database. Fungsionalitasnya termasuk analisis sentimen, deteksi bahasa, ekstraksi frasa kunci, pengenalan entitas, dan ringkasan teks. Akses ke kemampuan ini diaktifkan melalui layanan Bahasa Azure AI.
Untuk meninjau kemampuan Azure AI lengkap yang dapat Anda akses melalui ekstensi, lihat Mengintegrasikan Azure Database for PostgreSQL dengan Azure Cognitive Services.
Mengatur titik akhir dan kunci layanan Bahasa Azure AI
Seperti halnya azure_openai fungsi, untuk berhasil melakukan panggilan terhadap layanan Azure AI dengan menggunakan azure_ai ekstensi, Anda harus menyediakan titik akhir dan kunci untuk sumber daya layanan Bahasa Azure AI Anda:
Di portal Microsoft Azure, buka sumber daya layanan Bahasa Anda.
Di menu sebelah kiri, di bawah Manajemen Sumber Daya, pilih Kunci dan Titik Akhir.
Salin titik akhir dan kunci akses Anda. Anda dapat menggunakan
KEY1atauKEY2.psqlDi prompt perintah, jalankan perintah berikut untuk menambahkan nilai Anda ke tabel konfigurasi.{endpoint}Ganti token dan{api-key}dengan nilai yang Anda ambil dari portal Microsoft Azure.SELECT azure_ai.set_setting('azure_cognitive.endpoint','{endpoint}'); SELECT azure_ai.set_setting('azure_cognitive.subscription_key', '{api-key}');
Meringkas tagihan
Untuk menunjukkan beberapa kemampuan fungsi ekstensi azure_cognitive, Anda dapat menghasilkan ringkasan setiap tagihan.
azure_cognitive Skema menyediakan dua fungsi untuk meringkas teks:
-
summarize_abstractive: Ringkasan abstraktif menghasilkan ringkasan yang menangkap konsep utama dari teks input tetapi mungkin tidak menggunakan kata-kata yang identik. -
summarize_extractive: Ringkasan ekstraktif menyusun ringkasan dengan mengekstrak kalimat penting dari teks input.
Untuk menggunakan kemampuan layanan Bahasa Azure AI untuk menghasilkan konten asli baru, Anda menggunakan summarize_abstractive fungsi untuk membuat ringkasan input teks. Gunakan meta-command dari \df lagi, kali ini untuk melihat fungsi psql secara khusus:
\df azure_cognitive.summarize_abstractive
Properti Argument data types dalam output \df azure_cognitive.summarize_abstractive perintah mengungkapkan daftar argumen yang diharapkan fungsi:
| Argumen | Jenis | Bawaan | Deskripsi |
|---|---|---|---|
text |
text |
Masukkan teks untuk dirangkum. | |
language |
text |
Representasi ISO 639-1 dua huruf dari bahasa tempat teks input ditulis. Untuk nilai yang diizinkan, periksa Dukungan bahasa untuk fitur Bahasa. | |
timeout_ms |
integer |
3600000 |
Waktu habis dalam milidetik, setelah itu operasi dihentikan. |
throw_on_error |
boolean |
true |
Penanda yang menunjukkan apakah fungsi harus menghasilkan pengecualian pada kesalahan, yang berakibat pada pengulangan transaksi pengemasan. |
sentence_count |
integer |
3 |
Jumlah maksimum kalimat untuk disertakan dalam ringkasan yang dihasilkan. |
disable_service_logs |
boolean |
false |
Pengaturan yang menonaktifkan log layanan Bahasa. Layanan Bahasa mencatat teks input Anda selama 48 jam hanya untuk memungkinkan masalah pemecahan masalah. Mengatur properti ini untuk true menonaktifkan pengelogan input dan mungkin membatasi kemampuan kami untuk menyelidiki masalah yang terjadi. Untuk informasi selengkapnya, lihat catatan kepatuhan dan privasi Cognitive Services dan prinsip Microsoft Responsible AI. |
Fungsi ini summarize_abstractive memerlukan argumen berikut: azure_cognitive.summarize_abstractive(text TEXT, language TEXT).
Kueri berikut terhadap bill_summaries tabel menggunakan summarize_abstractive fungsi untuk menghasilkan ringkasan satu kalimat baru untuk teks tagihan. Ini memungkinkan Anda untuk menggabungkan kekuatan AI generatif langsung ke dalam kueri Anda.
SELECT
bill_id,
azure_cognitive.summarize_abstractive(bill_text, 'en', sentence_count => 1) one_sentence_summary
FROM bill_summaries
WHERE bill_id = '112_hr2873';
Anda juga dapat menggunakan fungsi untuk menulis data ke dalam tabel database Anda.
bill_summaries Ubah tabel untuk menambahkan kolom baru untuk menyimpan ringkasan satu kalimat dalam database:
ALTER TABLE bill_summaries
ADD COLUMN one_sentence_summary TEXT;
Selanjutnya, perbarui tabel dengan ringkasan. Fungsi summarize_abstractive mengembalikan array teks (text[]). Fungsi mengonversi array_to_string nilai pengembalian ke representasi stringnya. Dalam kueri berikut, throw_on_error argumen diatur ke false. Pengaturan ini memungkinkan proses ringkasan dilanjutkan jika terjadi kesalahan.
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;
Dalam output, Anda mungkin melihat peringatan tentang dokumen yang tidak valid di mana ringkasan yang sesuai tidak dapat dihasilkan. Peringatan ini disebabkan oleh pengaturan throw_on_error menjadi false dalam kueri sebelumnya. Jika Anda membiarkan bendera tersebut ke default true, kueri akan gagal, dan tidak ada ringkasan yang akan ditulis ke database. Untuk melihat rekaman yang melemparkan peringatan, jalankan perintah ini:
SELECT bill_id, one_sentence_summary FROM bill_summaries WHERE one_sentence_summary is NULL;
Anda kemudian dapat mengkueri bill_summaries tabel untuk menampilkan ringkasan satu kalimat baru yang azure_ai dihasilkan ekstensi untuk rekaman lain dalam tabel:
SELECT bill_id, one_sentence_summary FROM bill_summaries LIMIT 5;
Kesimpulan
Selamat! Anda baru saja mempelajari cara menggunakan azure_ai ekstensi untuk mengintegrasikan model bahasa besar dan kemampuan AI generatif ke dalam database Anda.