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.
Tutorial langsung ini menunjukkan kepada Anda cara membuat aplikasi pemberi rekomendasi dengan menggunakan Azure Database for PostgreSQL dan Azure OpenAI. Rekomendasi dapat diterapkan di berbagai domain. Penyedia layanan cenderung memberikan rekomendasi untuk produk dan layanan yang mereka tawarkan berdasarkan riwayat sebelumnya dan informasi kontekstual yang dikumpulkan dari pelanggan dan lingkungan.
Ada berbagai cara untuk memodelkan sistem rekomendasi. Tutorial ini mengeksplorasi bentuk paling sederhana: rekomendasi berdasarkan produk yang sesuai dengan (misalnya) pembelian sebelumnya. Tutorial ini menggunakan himpunan data resep yang digunakan tutorial untuk pencarian semantik . Rekomendasi diberikan untuk resep yang didasarkan pada resep yang disukai atau dicari oleh pelanggan di masa lalu.
Prasyarat
- Buat akun OpenAI dan minta akses ke Azure OpenAI.
- Berikan akses ke Azure OpenAI dalam langganan yang diinginkan.
- Berikan izin untuk membuat sumber daya Azure OpenAI dan untuk menyebarkan model.
- Membuat dan menyebarkan sumber daya Azure OpenAI dan model. Terapkan model embedding text-embedding-ada-002. Salin nama deploisinya, karena Anda memerlukannya untuk membuat embedding.
Mengaktifkan ekstensi azure_ai dan pgvector
Sebelum dapat mengaktifkan azure_ai dan pgvector pada instans server fleksibel Azure Database for PostgreSQL, Anda perlu menambahkannya ke daftar yang diizinkan. Pastikan bahwa mereka ditambahkan dengan benar dengan menjalankan SHOW azure.extensions;.
Kemudian Anda dapat menginstal ekstensi dengan menyambungkan ke database target Anda dan menjalankan perintah CREATE EXTENSION . Ulangi perintah secara terpisah untuk setiap database tempat Anda ingin ekstensi tersedia.
CREATE EXTENSION azure_ai;
CREATE EXTENSION vector;
Mengonfigurasi titik akhir dan kunci OpenAI
Di layanan Azure AI, di bawah Kunci Manajemen >dan Titik Akhir, Anda dapat menemukan titik akhir dan kunci untuk sumber daya Azure AI Anda. Gunakan titik akhir dan salah satu kunci untuk mengaktifkan azure_ai ekstensi untuk memanggil penyebaran model:
select azure_ai.set_setting('azure_openai.endpoint','https://<endpoint>.openai.azure.com');
select azure_ai.set_setting('azure_openai.subscription_key', '<API Key>');
Mengunduh data
Unduh data dari Kaggle.
Membuat tabel
Sambungkan ke server Anda dan buat test database. Dalam database tersebut, gunakan perintah berikut untuk membuat tabel tempat Anda akan mengimpor data:
CREATE TABLE public.recipes(
rid integer NOT NULL,
recipe_name text,
prep_time text,
cook_time text,
total_time text,
servings integer,
yield text,
ingredients text,
directions text,
rating real,
url text,
cuisine_path text,
nutrition text,
timing text,
img_src text,
PRIMARY KEY (rid)
);
Impor data
Atur variabel lingkungan berikut pada jendela klien untuk mengatur pengodean ke UTF-8. Langkah ini diperlukan karena himpunan data khusus ini menggunakan pengodean Windows-1252.
Rem on Windows
Set PGCLIENTENCODING=utf-8;
# on Unix based operating systems
export PGCLIENTENCODING=utf-8
Impor data ke dalam tabel yang Anda buat. Perhatikan bahwa himpunan data ini berisi baris header.
psql -d <database> -h <host> -U <user> -c "\copy recipes FROM <local recipe data file> DELIMITER ',' CSV HEADER"
Menambahkan kolom untuk menyimpan penyematan
Tambahkan kolom penyematan ke tabel:
ALTER TABLE recipes ADD COLUMN embedding vector(1536);
Hasilkan penyematan
Buat embedding untuk data Anda dengan menggunakan ekstensi azure_ai. Contoh berikut mem-vektorisasi beberapa bidang dan digabungkan.
WITH ro AS (
SELECT ro.rid
FROM
recipes ro
WHERE
ro.embedding is null
LIMIT 500
)
UPDATE
recipes r
SET
embedding = azure_openai.create_embeddings('text-embedding-ada-002', r.recipe_name||' '||r.cuisine_path||' '||r.ingredients||' '||r.nutrition||' '||r.directions)
FROM
ro
WHERE
r.rid = ro.rid;
Ulangi perintah hingga tidak ada lagi baris yang akan diproses.
Petunjuk / Saran
Bermain-main dengan nilainya LIMIT . Dengan nilai yang tinggi, pernyataan mungkin gagal di pertengahan proses karena pembatasan yang diberlakukan oleh Azure OpenAI. Jika pernyataan gagal, tunggu setidaknya satu menit dan jalankan perintah lagi.
Cari
Buat fungsi pencarian di database Anda untuk kenyamanan:
create function
recommend_recipe(sampleRecipeId int, numResults int)
returns table(
out_recipeName text,
out_nutrition text,
out_similarityScore real)
as $$
declare
queryEmbedding vector(1536);
sampleRecipeText text;
begin
sampleRecipeText := (select
recipe_name||' '||cuisine_path||' '||ingredients||' '||nutrition||' '||directions
from
recipes where rid = sampleRecipeId);
queryEmbedding := (azure_openai.create_embeddings('text-embedding-ada-002',sampleRecipeText));
return query
select
distinct r.recipe_name,
r.nutrition,
(r.embedding <=> queryEmbedding)::real as score
from
recipes r
order by score asc limit numResults; -- cosine distance
end $$
language plpgsql;
Sekarang cukup panggil fungsi untuk mencari rekomendasi:
select out_recipename, out_similarityscore from recommend_recipe(1, 20); -- search for 20 recipe recommendations that closest to recipeId 1
Dan jelajahi hasilnya:
out_recipename | out_similarityscore
---------------------------------------+---------------------
Apple Pie by Grandma Ople | 0
Easy Apple Pie | 0.05137232
Grandma's Iron Skillet Apple Pie | 0.054287136
Old Fashioned Apple Pie | 0.058492836
Apple Hand Pies | 0.06449003
Apple Crumb Pie | 0.07290977
Old-Fashioned Apple Dumplings | 0.078374185
Fried Apple Pies | 0.07918481
Apple Pie Filling | 0.084320426
Apple Turnovers | 0.08576391
Dutch Apple Pie with Oatmeal Streusel | 0.08779895
Apple Crisp - Perfect and Easy | 0.09170883
Delicious Cinnamon Baked Apples | 0.09384012
Easy Apple Crisp with Pie Filling | 0.09477234
Jump Rope Pie | 0.09503954
Easy Apple Strudel | 0.095167875
Apricot Pie | 0.09634114
Easy Apple Crisp with Oat Topping | 0.09708358
Baked Apples | 0.09826993
Pear Pie | 0.099974394
(20 rows)
Konten terkait
- Mengintegrasikan Azure Database for PostgreSQL dengan Azure Cognitive Services
- Mengintegrasikan Azure Database for PostgreSQL dengan layanan Azure Machine Learning
- Membuat penyematan vektor dengan Azure OpenAI di Azure Database for PostgreSQL
- Ekstensi Azure AI di Azure Database for PostgreSQL
- AI Generatif dengan Azure Database for PostgreSQL
- Membuat pencarian semantik dengan Azure Database for PostgreSQL dan Azure OpenAI
- Mengaktifkan dan menggunakan pgvector di Azure Database for PostgreSQL