إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
يوضح لك هذا البرنامج التعليمي العملي كيفية إنشاء تطبيق التوصية باستخدام قاعدة بيانات Azure ل PostgreSQL وAzure OpenAI. التوصيات لها تطبيقات في مجالات مختلفة. يميل مقدمو الخدمات إلى تقديم توصيات للمنتجات والخدمات التي يقدمونها استنادا إلى التاريخ السابق والمعلومات السياقية التي يتم جمعها من العميل والبيئة.
هناك طرق مختلفة لنمذجة أنظمة التوصية. يستكشف هذا البرنامج التعليمي أبسط نموذج: توصية تستند إلى منتج يتوافق مع (على سبيل المثال) عملية شراء سابقة. يستخدم هذا البرنامج التعليمي مجموعة بيانات الوصفة التي يستخدمها البرنامج التعليمي للبحث الدلالي . التوصية هي للوصفات بناء على وصفة أعجب بها العميل أو بحث فيها في الماضي.
المتطلبات الأساسية
- إنشاء حساب OpenAI وطلب الوصول إلى Azure OpenAI.
- منح حق الوصول إلى Azure OpenAI في الاشتراك المطلوب.
- منح أذونات لإنشاء موارد Azure OpenAI ونشر النماذج.
- إنشاء ونشر مورد Azure OpenAI ونموذج. نشر نموذج التضمينات text-embedding-ada-002. انسخ اسم النشر، لأنك تحتاج إليه لإنشاء عمليات تضمين.
تمكين ملحقات azure_ai وpgvector
قبل أن تتمكن من تمكين azure_aipgvector وعلى قاعدة بيانات Azure لمثيل الخادم المرن PostgreSQL، تحتاج إلى إضافتها إلى القائمة المسموح بها. تأكد من إضافتها بشكل صحيح عن طريق تشغيل SHOW azure.extensions;.
ثم يمكنك تثبيت الملحق عن طريق الاتصال بقاعدة البيانات الهدف وتشغيل الأمر CREATE EXTENSION . كرر الأمر بشكل منفصل لكل قاعدة بيانات حيث تريد أن يكون الملحق متوفرا.
CREATE EXTENSION azure_ai;
CREATE EXTENSION vector;
تكوين نقطة نهاية ومفتاح OpenAI
في خدمات Azure الذكاء الاصطناعي، ضمن Resource Management>Keys and Endpoints، يمكنك العثور على نقطة النهاية والمفاتيح لمورد Azure الذكاء الاصطناعي. استخدم نقطة النهاية وأحد المفاتيح لتمكين الملحق azure_ai لاستدعاء نشر النموذج:
select azure_ai.set_setting('azure_openai.endpoint','https://<endpoint>.openai.azure.com');
select azure_ai.set_setting('azure_openai.subscription_key', '<API Key>');
تنزيل البيانات
قم بتنزيل البيانات من Kaggle.
إنشاء الجدول
اتصل بالخادم الخاص بك وأنشئ test قاعدة بيانات. في قاعدة البيانات هذه، استخدم الأمر التالي لإنشاء جدول ستقوم فيه باستيراد البيانات:
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)
);
استيراد البيانات
قم بتعيين متغير البيئة التالي على نافذة العميل لتعيين الترميز إلى UTF-8. هذه الخطوة ضرورية لأن مجموعة البيانات المحددة هذه تستخدم ترميز Windows-1252.
Rem on Windows
Set PGCLIENTENCODING=utf-8;
# on Unix based operating systems
export PGCLIENTENCODING=utf-8
استيراد البيانات إلى الجدول الذي قمت بإنشائه. لاحظ أن مجموعة البيانات هذه تحتوي على صف رأس.
psql -d <database> -h <host> -U <user> -c "\copy recipes FROM <local recipe data file> DELIMITER ',' CSV HEADER"
إضافة عمود لتخزين عمليات التضمين
إضافة عمود تضمين إلى الجدول:
ALTER TABLE recipes ADD COLUMN embedding vector(1536);
إنشاء عمليات تضمين
إنشاء تضمينات لبياناتك باستخدام الملحق azure_ai . يوضح المثال التالي بعض الحقول ويتم تسلسلها.
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;
كرر الأمر حتى لا توجد صفوف أخرى لمعالجتها.
تلميح
اللعب حولها مع LIMIT القيمة. مع قيمة عالية، قد تفشل العبارة في منتصف الطريق بسبب التقييد الذي يفرضه Azure OpenAI. إذا فشلت العبارة، فانتظر لمدة دقيقة واحدة على الأقل وقم بتشغيل الأمر مرة أخرى.
بحث
إنشاء دالة بحث في قاعدة البيانات الخاصة بك للراحة:
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;
الآن ما عليك سوى استدعاء الدالة للبحث عن التوصية:
select out_recipename, out_similarityscore from recommend_recipe(1, 20); -- search for 20 recipe recommendations that closest to recipeId 1
واستكشف النتائج:
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)
المحتوى ذو الصلة
- دمج قاعدة بيانات Azure ل PostgreSQL مع خدمات Azure المعرفية
- دمج قاعدة بيانات Azure ل PostgreSQL مع خدمات التعلم الآلي من Azure
- إنشاء تضمينات متجهات باستخدام Azure OpenAI في قاعدة بيانات Azure ل PostgreSQL
- ملحق Azure الذكاء الاصطناعي في قاعدة بيانات Azure ل PostgreSQL
- الذكاء الاصطناعي التوليدية باستخدام قاعدة بيانات Azure ل PostgreSQL
- إنشاء بحث دلالي باستخدام قاعدة بيانات Azure ل PostgreSQL وAzure OpenAI
- تمكين واستخدام pgvector في قاعدة بيانات Azure ل PostgreSQL