Membuat penyematan dengan ekstensi Azure AI

Selesai

Untuk menjalankan pencarian semantik, Anda harus membandingkan penyematan kueri dengan penyematan item yang dicari. Ekstensi azure_ai untuk Azure Database for PostgreSQL - Flexible Server terintegrasi dengan Azure OpenAI untuk menghasilkan vektor penanaman.

Diagram yang memperlihatkan teks input

Pengantar azure_ai dan Azure OpenAI

Ekstensi fleksibel Azure Database for PostgreSQL untuk Azure AI menyediakan fungsi yang ditentukan pengguna untuk diintegrasikan dengan Microsoft Foundry termasuk Azure OpenAI dan Azure AI Search.

Azure OpenAI Embeddings API menghasilkan vektor penyematan teks input. Gunakan API ini untuk mengatur penyematan untuk semua item yang sedang dicari. azure_ai Skema azure_openai ekstensi memudahkan panggilan API dari SQL untuk menghasilkan penyematan, apakah akan menginisialisasi penyematan item atau membuat penyematan kueri dengan cepat. Penyematan ini kemudian dapat digunakan untuk melakukan pencarian kesamaan vektor, atau dengan kata lain, pencarian semantik.

Menggunakan ekstensi azure_ai dengan Azure OpenAI

Untuk memanggil Azure OpenAI Embeddings API dari PostgreSQL, Anda perlu mengaktifkan & mengonfigurasi azure_ai ekstensi, memberikan akses ke Azure OpenAI, dan menyebarkan model Azure OpenAI. Untuk informasi selengkapnya, lihat dokumentasi Azure OpenAI di Azure Database for PostgreSQL Flexible Server.

Setelah lingkungan siap dan ekstensi masuk dalam daftar yang diizinkan, jalankan SQL berikut ini:

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

Anda juga perlu mengonfigurasi titik akhir & kunci akses sumber daya layanan OpenAI Anda:

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

Setelah azure_ai dan Azure OpenAI dikonfigurasi, mengambil dan menyimpan penyematan dapat dilakukan dengan sederhana melalui pemanggilan fungsi dalam kueri SQL. Dengan asumsi sebuah tabel listings yang memiliki kolom description dan kolom listing_vector, Anda bisa menghasilkan dan menyimpan embedding untuk semua daftar dengan kueri berikut. Ganti {your-deployment-name} dengan Nama penyebaran dari Azure OpenAI Studio untuk model yang Anda buat.

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;

Kolom listing_vector vektor harus memiliki jumlah dimensi yang sama dengan yang dihasilkan model bahasa.

Untuk melihat pengintegrasian dokumen, jalankan kueri berikut:

SELECT listing_vector FROM listings LIMIT 1;

Hasilnya adalah vektor angka titik mengambang. Anda dapat menjalankan \x terlebih dahulu untuk membuat output lebih mudah dibaca.

Membuat penyematan kueri secara dinamis

Setelah Anda memiliki penyematan untuk dokumen yang ingin Anda cari, Anda bisa menjalankan kueri pencarian semantik. Untuk melakukannya, Anda juga perlu membuat embedding untuk teks kueri.

azure_openai Skema azure_ai ekstensi memungkinkan Anda menghasilkan penyematan dalam SQL. Misalnya, untuk menemukan tiga daftar teratas yang teksnya paling semantik mirip dengan kueri "Temukan saya tempat di lingkungan yang dapat dijalani," jalankan SQL berikut:

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;

Operator <=> menghitung jarak kosinus antara kedua vektor, metrik kesamaan semantik. Semakin dekat vektor, semakin semantik serupa; semakin jauh vektor, semakin berbeda secara semantik.

Operator ::vector mengonversi penyematan yang dihasilkan menjadi array vektor PostgreSQL.

Kueri mengembalikan tiga ID dan deskripsi daftar teratas, diberi peringkat dari yang lebih sedikit ke yang lebih berbeda (lebih sedikit serupa).