مشاركة عبر


دمج قدرات Azure الذكاء الاصطناعي في قاعدة بيانات Azure ل PostgreSQL

azure_ai يضيف الملحق القدرة على استخدام نماذج اللغات الكبيرة (LLMs) وإنشاء تطبيقات الذكاء الاصطناعي إنشاء داخل قاعدة بيانات Azure لقاعدة بيانات PostgreSQL من خلال دمج قوة خدمات Azure الذكاء الاصطناعي.

الذكاء الاصطناعي التوليدي هو شكل من أشكال الذكاء الاصطناعي حيث يتم تدريب LLMs على توليد المحتوى الأصلي بناء على إدخال اللغة الطبيعية. باستخدام الملحق azure_ai ، يمكنك استخدام قدرات الذكاء الاصطناعي التوليدية لمعالجة استعلامات اللغة الطبيعية مباشرة من قاعدة البيانات.

تعرض هذه المقالة إضافة إمكانات الذكاء الاصطناعي الغنية إلى قاعدة بيانات Azure لمثيل خادم مرن PostgreSQL باستخدام الملحق azure_ai . يوضح كيف يمكنك دمج كل من Azure OpenAIوخدمة Azure الذكاء الاصطناعي Language في قاعدة البيانات الخاصة بك باستخدام الملحق.

المتطلبات الأساسية

  • اشتراك Azure. أنشئ واحدا مجانا.

  • الوصول الممنوح إلى Azure OpenAI في اشتراك Azure المطلوب. حاليا، يمنح التطبيق حق الوصول إلى هذه الخدمة. يمكنك التقدم بطلب للوصول إلى Azure OpenAI عن طريق إكمال النموذج في وصول محدود لخدمة Azure OpenAI.

  • مورد Azure OpenAI مع text-embedding-ada-002 نشر نموذج (الإصدار 2). يتوفر هذا النموذج حاليا في مناطق معينة فقط. إذا لم يكن لديك مورد، يتم توثيق عملية إنشاء مورد في دليل توزيع موارد Azure OpenAI.

  • مورد لغة الذكاء الاصطناعي Azure. إذا لم يكن لديك مورد Language، يمكنك إنشاء مورد في مدخل Microsoft Azure باتباع الإرشادات المتوفرة في التشغيل السريع للتلخيص. يمكنك استخدام مستوى التسعير المجاني (Free F0) لتجربة الخدمة والترقية لاحقا إلى مستوى مدفوع للإنتاج.

  • قاعدة بيانات Azure لمثيل خادم مرن PostgreSQL في اشتراك Azure الخاص بك. إذا لم يكن لديك هذا المورد، فراجع إنشاء قاعدة بيانات Azure ل PostgreSQL.

الاتصال بقاعدة البيانات باستخدام psql في Azure Cloud Shell

افتح Azure Cloud Shell في مستعرض ويب. حدد Bash كبيئة. إذا تمت مطالبتك، فحدد الاشتراك الذي استخدمته لقاعدة بيانات Azure لقاعدة بيانات PostgreSQL، ثم حدد إنشاء تخزين.

لاسترداد تفاصيل اتصال قاعدة البيانات:

  1. في مدخل Microsoft Azure، انتقل إلى قاعدة بيانات Azure لمثيل الخادم المرن PostgreSQL.

  2. في القائمة اليسرى، ضمن Settings، حدد Connect. انسخ كتلة تفاصيل الاتصال .

  3. الصق خطوط الإعلان المنسخة لمتغيرات البيئة في محطة Azure Cloud Shell الطرفية. {your-password} استبدل الرمز المميز بكلمة المرور التي قمت بتعيينها عند إنشاء قاعدة البيانات.

    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. أدخل الأمر التالي في موجه الأوامر:

    psql
    

تثبيت ملحق azure_ai

يمكنك استخدام الملحق azure_ai لدمج Azure OpenAI وAzure Cognitive Services في قاعدة البيانات الخاصة بك. لمزيد من المعلومات، راجع إنشاء تضمينات المتجهات باستخدام Azure OpenAI في قاعدة بيانات Azure ل PostgreSQL.

لتمكين الملحق في قاعدة البيانات الخاصة بك:

  1. أضف الملحق إلى قائمة السماح، كما هو موضح في السماح بالملحقات.

  2. في قاعدة البيانات التي تخطط لاستخدام azure_ai الملحق فيها، قم بتثبيت الملحق كما هو موضح في إنشاء الملحقات.

فحص الكائنات في ملحق azure_ai

يمكن أن توفر مراجعة الكائنات التي azure_ai يحتوي عليها الملحق فهما أفضل للقدرات التي يقدمها. يمكنك استخدام \dx الأمر التعريفي من psql موجه الأوامر لسرد العناصر في الملحق:

\dx+ azure_ai

يظهر إخراج الأمر التعريفي أن الملحق azure_ai ينشئ ثلاثة مخططات، ووظائف متعددة معرفة من قبل المستخدم (UDFs)، والعديد من الأنواع المركبة في قاعدة البيانات. يصف الجدول التالي المخططات التي يضيفها الملحق:

مخطط ‏‏الوصف
azure_ai يوفر المخطط الأساسي حيث يوجد جدول التكوين وUDFs للتفاعل معه.
azure_openai يحتوي على UDFs التي تمكن استدعاء نقطة نهاية Azure OpenAI.
azure_cognitive يوفر UDFs والأنواع المركبة المتعلقة بدمج قاعدة البيانات مع خدمات Azure المعرفية.

ترتبط جميع الدوال والأنواع بأحد المخططات. لمراجعة الوظائف المعرفة في azure_ai المخطط، استخدم \df الأمر meta.. حدد المخطط الذي يجب عرض وظائفه. الأوامر \x auto قبل \df الأمر تشغيل العرض الموسع وإيقاف تشغيله تلقائيا، لتسهيل عرض الإخراج من الأمر في Azure Cloud Shell.

\x auto
\df+ azure_ai.*

استخدم الدالة azure_ai.set_setting() لتعيين نقطة النهاية والقيم الهامة لخدمات Azure الذكاء الاصطناعي. يقبل مفتاحا والقيمة لتعيينه. azure_ai.get_setting() توفر الدالة طريقة لاسترداد القيم التي قمت بتعيينها باستخدام الدالة set_setting() . يقبل مفتاح الإعداد الذي تريد عرضه. لكلتا الطريقتين، يجب أن يكون المفتاح واحدا مما يلي:

مفتاح ‏‏الوصف
azure_openai.endpoint نقطة نهاية Azure OpenAI المدعومة (على سبيل المثال، https://example.openai.azure.com).
azure_openai.subscription_key مفتاح اشتراك لمورد Azure OpenAI.
azure_cognitive.endpoint نقطة نهاية الخدمات المعرفية المدعومة (على سبيل المثال، https://example.cognitiveservices.azure.com).
azure_cognitive.subscription_key مفتاح اشتراك لمورد الخدمات المعرفية.

هام

نظرا إلى تخزين معلومات الاتصال لخدمات Azure الذكاء الاصطناعي، بما في ذلك مفاتيح واجهة برمجة التطبيقات، في جدول تكوين في قاعدة البيانات، azure_ai يحدد الملحق دورا يسمى azure_ai_settings_manager للمساعدة في ضمان حماية هذه المعلومات والوصول إليها فقط للمستخدمين الذين لديهم هذا الدور. يتيح هذا الدور قراءة وكتابة الإعدادات المتعلقة بالملحق.

يمكن فقط للمستخدمين الخارقين وأعضاء azure_ai_settings_manager الدور استدعاء azure_ai.get_setting() الدالتين و azure_ai.set_setting() . في قاعدة بيانات Azure ل PostgreSQL، يكون azure_ai_settings_manager لجميع المستخدمين المسؤولين الدور.

إنشاء تضمينات متجهات باستخدام Azure OpenAI

azure_ai يتيح مخطط الملحق azure_openai استخدام Azure OpenAI لإنشاء تضمينات متجه للقيم النصية. باستخدام هذا المخطط، يمكنك إنشاء تضمينات باستخدام Azure OpenAI مباشرة من قاعدة البيانات لإنشاء تمثيلات متجهة لنص الإدخال. يمكن بعد ذلك استخدام هذه التمثيلات في عمليات البحث عن تشابه المتجهات واستهلاكها بواسطة نماذج التعلم الآلي.

التضمينات هي تقنية لاستخدام نماذج التعلم الآلي لتقييم مدى قرب المعلومات ذات الصلة. تسمح هذه التقنية بتحديد العلاقات والتشابهات بين البيانات بكفاءة، بحيث يمكن للخوارزميات تحديد الأنماط وإجراء تنبؤات دقيقة.

تعيين نقطة نهاية ومفتاح Azure OpenAI

قبل استخدام azure_openai الدوال، قم بتكوين الملحق باستخدام نقطة نهاية خدمة Azure OpenAI والمفتاح:

  1. في مدخل Microsoft Azure، انتقل إلى مورد Azure OpenAI. في القائمة اليسرى، ضمن Resource Management، حدد Keys and Endpoint.

  2. انسخ نقطة النهاية ومفتاح الوصول. يمكنك استخدام إما KEY1 أو KEY2. يسمح لك وجود مفتاحين دائما بتدوير المفاتيح وإعادة إنشائها بأمان دون التسبب في تعطيل الخدمة.

  3. في الأمر التالي، استبدل {endpoint} الرموز المميزة و {api-key} بالقيم التي قمت باستردادها من مدخل Microsoft Azure. ثم قم بتشغيل الأوامر من psql موجه الأوامر لإضافة القيم إلى جدول التكوين.

    SELECT azure_ai.set_setting('azure_openai.endpoint','{endpoint}');
    SELECT azure_ai.set_setting('azure_openai.subscription_key', '{api-key}');
    
  4. تحقق من الإعدادات المكتوبة في جدول التكوين:

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

الملحق azure_ai متصل الآن بحساب Azure OpenAI الخاص بك وجاهز لإنشاء تضمينات المتجهات.

قم بتعبئة قاعدة البيانات مع بيانات نموذجية

تستخدم هذه المقالة مجموعة فرعية صغيرة من مجموعة بيانات BillSum لتوفير بيانات نصية نموذجية لإنشاء المتجهات. توفر مجموعة البيانات هذه قائمة بفواتير الولايات المتحدة في الكونغرس وكاليفورنيا. يمكنك تنزيل الملف الذي bill_sum_data.csv يحتوي على هذه البيانات من مستودع GitHub لعينات Azure.

لاستضافة نموذج البيانات في قاعدة البيانات، أنشئ جدولا باسم 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
);

باستخدام الأمر PostgreSQL COPY من psql موجه الأوامر، قم بتحميل نموذج البيانات من ملف CSV إلى bill_summaries الجدول. حدد أن الصف الأول من ملف CSV هو صف رأس.

\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'

تمكين دعم المتجهات

يمكنك استخدام الملحق azure_ai لإنشاء تضمينات لنص الإدخال. لتمكين المتجهات التي تم إنشاؤها ليتم تخزينها جنبا إلى جنب مع بقية البيانات في قاعدة البيانات، يجب تثبيت الملحق pgvector . اتبع الإرشادات الواردة في الوثائق حول تمكين دعم المتجهات في قاعدة البيانات الخاصة بك.

مع إضافة دعم المتجه إلى قاعدة البيانات، أضف عمودا جديدا إلى bill_summaries الجدول باستخدام vector نوع البيانات لتخزين التضمينات داخل الجدول. text-embedding-ada-002 ينتج النموذج متجهات ذات 1536 بعدا، لذلك يجب عليك تحديد 1536 حجم المتجه.

ALTER TABLE bill_summaries
ADD COLUMN bill_vector vector(1536);

إنشاء ناقلات وتخزينها

bill_summaries الجدول جاهز الآن لتخزين التضمينات. باستخدام الدالة azure_openai.create_embeddings() ، يمكنك إنشاء متجهات للحقل bill_text وإدراجها في العمود الذي تم إنشاؤه bill_vector حديثا في bill_summaries الجدول.

قبل استخدام الدالة create_embeddings() ، قم بتشغيل الأمر التالي لفحصها ومراجعة الوسيطات المطلوبة:

\df+ azure_openai.*

Argument data types تكشف الخاصية \df+ azure_openai.* في إخراج الأمر قائمة الوسيطات التي تتوقعها الدالة:

الوسيطة نوع الإعداد الافتراضي ‏‏الوصف
deployment_name text اسم النشر في مدخل Microsoft Azure الذكاء الاصطناعي Foundry الذي يحتوي على text-embeddings-ada-002 النموذج.
input text نص الإدخال المستخدم لإنشاء التضمينات.
timeout_ms integer 3600000 المهلة بالمللي ثانية، وبعد ذلك يتم إيقاف العملية.
throw_on_error boolean true العلامة التي تشير إلى ما إذا كان يجب على الدالة، عند الخطأ، طرح استثناء يؤدي إلى العودة إلى الحالة السابقة لمعاملات الالتفاف.

الوسيطة deployment_name الأولى هي القيمة، التي تم تعيينها عند نشر نموذج التضمين في حساب Azure OpenAI الخاص بك. لاسترداد هذه القيمة:

  1. انتقل إلى مورد Azure OpenAI في مدخل Microsoft Azure.

  2. في القائمة اليسرى، ضمن Resource Management، حدد Model deployments لفتح مدخل Azure الذكاء الاصطناعي Foundry.

  3. في مدخل Azure الذكاء الاصطناعي Foundry، حدد Deployments. في جزء Deployments ، انسخ قيمة Deployment name المقترنة text-embedding-ada-002 بنشر النموذج.

لقطة شاشة لتضمين عمليات النشر لتكامل الذكاء الاصطناعي.

باستخدام هذه المعلومات، قم بتشغيل استعلام لتحديث كل سجل في bill_summaries الجدول. إدراج تضمينات المتجهات التي تم إنشاؤها للحقل bill_text في bill_vector العمود باستخدام الدالة azure_openai.create_embeddings() . استبدل {your-deployment-name} بقيمة Deployment name التي نسختها من جزء Deployments في مدخل Microsoft Azure الذكاء الاصطناعي Foundry. ثم شغَّل الأمر التالي:

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

قم بتشغيل الاستعلام التالي لعرض التضمين الذي تم إنشاؤه للسجل الأول في الجدول. يمكنك تشغيل \x أولا إذا كان من الصعب قراءة الإخراج.

SELECT bill_vector FROM bill_summaries LIMIT 1;

كل تضمين هو متجه من أرقام الفاصلة العائمة. ترتبط المسافة بين تضمينين في مساحة الخط المتجه بالتشابه الدلالي بين إدخالين بالتنسيق الأصلي.

تشابه المتجهات هو طريقة لقياس مدى تشابه عنصرين من خلال تمثيلهما كخطوط متجهة. المتجهات هي سلسلة من الأرقام. غالبا ما يتم استخدامها لإجراء عمليات بحث عبر LLMs.

يتم حساب تشابه المتجهات عادة من خلال مقاييس المسافة، مثل:

  • مسافة إقليدية: تقيس مسافة الخط المستقيم بين خطين متجهين في الفضاء n-الأبعاد.
  • تشابه جيب التمام: يقيس جيب التمام للزاوية بين خطين متجهين.

تمكين البحث الأكثر كفاءة vector عبر الحقل عن طريق إنشاء فهرس عبر bill_summaries مسافة جيب التمام والعالم الصغير القابل للتنقل الهرمي (HNSW). يسمح pgvector HNSW باستخدام أحدث الخوارزميات المستندة إلى الرسم البياني لتقريب أقرب استعلامات الجوار.

CREATE INDEX ON bill_summaries USING hnsw (bill_vector vector_cosine_ops);

مع كل شيء الآن في مكانه، أنت مستعد لتنفيذ استعلام بحث تشابه جيب التمام مقابل قاعدة البيانات.

في الاستعلام التالي، يتم إنشاء التضمينات لسؤال إدخال ثم تحويلها إلى صفيف متجه (::vector). يسمح صفيف المتجه بمقارنة السؤال مع المتجهات المخزنة في bill_summaries الجدول.

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;

يستخدم <=> الاستعلام عامل تشغيل المتجه. يمثل عامل التشغيل هذا عامل تشغيل مسافة جيب التمام المستخدم لحساب المسافة بين خطين متجهين في مساحة متعددة الأبعاد.

دمج خدمات Azure المعرفية

توفر عمليات تكامل خدمات Azure الذكاء الاصطناعي المضمنة azure_cognitive في مخطط azure_ai الملحق مجموعة غنية من ميزات اللغة الذكاء الاصطناعي التي يمكنك الوصول إليها مباشرة من قاعدة البيانات. تتضمن الوظائف تحليل المشاعر، واكتشاف اللغة، واستخراج العبارة الرئيسية، والتعرف على الكيان، وتلخيص النص. يتم تمكين الوصول إلى هذه الإمكانات من خلال خدمة Azure الذكاء الاصطناعي Language.

لمراجعة قدرات Azure الذكاء الاصطناعي الكاملة التي يمكنك الوصول إليها من خلال الملحق، راجع دمج قاعدة بيانات Azure ل PostgreSQL مع خدمات Azure المعرفية.

تعيين نقطة نهاية خدمة Azure الذكاء الاصطناعي Language والمفتاح

كما هو الحال مع azure_openai الوظائف، لإجراء مكالمات بنجاح مقابل خدمات Azure الذكاء الاصطناعي باستخدام azure_ai الملحق، يجب توفير نقطة النهاية ومفتاح لمورد خدمة لغة Azure الذكاء الاصطناعي:

  1. في مدخل Microsoft Azure، انتقل إلى مورد خدمة اللغة.

  2. في القائمة اليسرى، ضمن Resource Management، حدد Keys and Endpoint.

  3. انسخ نقطة النهاية ومفتاح الوصول. يمكنك استخدام إما KEY1 أو KEY2.

  4. في psql موجه الأوامر، قم بتشغيل الأوامر التالية لإضافة القيم إلى جدول التكوين. {endpoint} استبدل الرموز المميزة و {api-key} بالقيم التي قمت باستردادها من مدخل Microsoft Azure.

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

تلخيص الفواتير

لتوضيح بعض قدرات azure_cognitive وظائف الملحق azure_ai ، يمكنك إنشاء ملخص لكل فاتورة. azure_cognitive يوفر المخطط دالتين لتلخيص النص:

  • summarize_abstractive: ينتج عن التلخيص التجريدي ملخصا يلتقط المفاهيم الرئيسية من نص الإدخال ولكنه قد لا يستخدم كلمات متطابقة.
  • summarize_extractive: يقوم التلخيص الاستخراجي بتجميع ملخص عن طريق استخراج الجمل الهامة من نص الإدخال.

لاستخدام قدرة خدمة Azure الذكاء الاصطناعي Language على إنشاء محتوى أصلي جديد، يمكنك استخدام الدالة summarize_abstractive لإنشاء ملخص لإدخال النص. \df استخدم الأمر التعريفي من psql مرة أخرى، هذه المرة للنظر على وجه التحديد في الدالةazure_cognitive.summarize_abstractive:

\df azure_cognitive.summarize_abstractive

Argument data types تكشف الخاصية \df azure_cognitive.summarize_abstractive في إخراج الأمر قائمة الوسيطات التي تتوقعها الدالة:

الوسيطة نوع الإعداد الافتراضي ‏‏الوصف
text text إدخال نص لتلخيصه.
language text تمثيل ISO 639-1 من حرفين للغة التي تتم كتابة نص الإدخال بها. للحصول على القيم المسموح بها، تحقق من دعم اللغة لميزات اللغة.
timeout_ms integer 3600000 المهلة بالمللي ثانية، وبعد ذلك يتم إيقاف العملية.
throw_on_error boolean true العلامة التي تشير إلى ما إذا كان يجب على الدالة، عند الخطأ، طرح استثناء يؤدي إلى العودة إلى الحالة السابقة لمعاملات الالتفاف.
sentence_count integer 3 الحد الأقصى لعدد الجمل التي يجب تضمينها في الملخص الذي تم إنشاؤه.
disable_service_logs boolean false الإعداد الذي يعطل سجلات خدمة اللغة. تسجل خدمة Language نص الإدخال لمدة 48 ساعة فقط للسماح باستكشاف الأخطاء وإصلاحها. يؤدي تعيين هذه الخاصية إلى true تعطيل تسجيل الإدخال وقد يحد من قدرتنا على التحقيق في المشكلات التي تحدث. لمزيد من المعلومات، راجع ملاحظات التوافق مع الخدمات المعرفية والخصوصيةومبادئ الذكاء الاصطناعي المسؤولة من Microsoft.

تتطلب الدالة summarize_abstractive الوسيطات التالية: azure_cognitive.summarize_abstractive(text TEXT, language TEXT).

يستخدم الاستعلام التالي مقابل bill_summaries الجدول الدالة summarize_abstractive لإنشاء ملخص جديد من جملة واحدة لنص الفاتورة. يسمح لك بدمج قوة الذكاء الاصطناعي التوليدية مباشرة في استعلاماتك.

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

يمكنك أيضا استخدام الدالة لكتابة البيانات في جداول قاعدة البيانات. bill_summaries تعديل الجدول لإضافة عمود جديد لتخزين ملخصات الجملة الواحدة في قاعدة البيانات:

ALTER TABLE bill_summaries
ADD COLUMN one_sentence_summary TEXT;

بعد ذلك، قم بتحديث الجدول بالملخصات. ترجع summarize_abstractive الدالة صفيف نص (text[]). array_to_string تحول الدالة القيمة المرجعة إلى تمثيل السلسلة الخاصة بها. في الاستعلام التالي، يتم تعيين الوسيطة throw_on_error إلى false. يسمح هذا الإعداد لمتابعة عملية التلخيص في حالة حدوث خطأ.

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;

في الإخراج، قد تلاحظ تحذيرا حول مستند غير صالح تعذر إنشاء تلخيص مناسب له. ينتج عن هذا التحذير من الإعداد throw_on_error إلى false في الاستعلام السابق. إذا تركت هذه العلامة إلى الافتراضي true، فسيفشل الاستعلام، ولن تتم كتابة أي ملخصات إلى قاعدة البيانات. لعرض السجل الذي ألقى التحذير، قم بتشغيل هذا الأمر:

SELECT bill_id, one_sentence_summary FROM bill_summaries WHERE one_sentence_summary is NULL;

يمكنك بعد ذلك الاستعلام عن bill_summaries الجدول لعرض ملخصات الجملة الواحدة الجديدة التي azure_ai ينشئها الملحق للسجلات الأخرى في الجدول:

SELECT bill_id, one_sentence_summary FROM bill_summaries LIMIT 5;

الخاتمة

تهانينا! لقد تعلمت للتو كيفية استخدام الملحق azure_ai لدمج نماذج اللغات الكبيرة وقدرات الذكاء الاصطناعي التوليدية في قاعدة البيانات الخاصة بك.