1. مقدمة
في هذا المختبر، ستتعرّف على كيفية استخدام BigQuery Machine Learning للاستنتاج باستخدام النماذج البعيدة ( نماذج Gemini) من أجل تحليل صور ملصقات الأفلام وإنشاء ملخّصات للأفلام استنادًا إلى الملصقات مباشرةً في مستودع بيانات BigQuery.

في الأعلى: عيّنة من صور ملصقات الأفلام التي ستُحلّلها.
BigQuery هي منصة مُدارة بالكامل لتحليل البيانات وجاهزة للذكاء الاصطناعي، وتساعدك في تحقيق أقصى استفادة من بياناتك، وهي مصمّمة لتكون متوافقة مع محركات متعددة وتنسيقات متعددة والسحابات الإلكترونية المتعددة. إحدى ميزاته الرئيسية هي BigQuery Machine Learning للاستدلال، والتي تتيح لك إنشاء نماذج تعلُّم الآلة (ML) وتشغيلها باستخدام طلبات بحث GoogleSQL.
Gemini هي مجموعة من نماذج الذكاء الاصطناعي التوليدي من تطوير Google، وهي مصمَّمة لحالات الاستخدام المتعدّدة الوسائط.
تنفيذ نماذج تعلُّم الآلة باستخدام طلبات بحث GoogleSQL
عادةً، يتطلّب تنفيذ تعلُّم الآلة أو الذكاء الاصطناعي على مجموعات البيانات الكبيرة قدرًا كبيرًا من البرمجة ومعرفة كافية بأطر عمل تعلُّم الآلة. يؤدي ذلك إلى حصر تطوير الحلول في مجموعة صغيرة من الخبراء داخل كل شركة. باستخدام BigQuery Machine Learning للاستدلال، يمكن لمستخدمي SQL الاستفادة من أدوات ومهارات SQL الحالية لإنشاء نماذج وإنشاء نتائج من النماذج اللغوية الكبيرة وواجهات برمجة التطبيقات من Cloud AI.
المتطلبات الأساسية
- فهم أساسي لوحدة تحكّم Google Cloud
- يُفضّل أن يكون لديك خبرة في استخدام BigQuery
ما ستتعلمه
- كيفية ضبط بيئتك وحسابك لاستخدام واجهات برمجة التطبيقات
- كيفية إنشاء اتصال بمورد على السحابة الإلكترونية في BigQuery
- كيفية إنشاء مجموعة بيانات وجدول عناصر في BigQuery لصور ملصقات الأفلام
- كيفية إنشاء نماذج Gemini البعيدة في BigQuery
- كيفية تقديم طلب إلى نموذج Gemini لتوفير ملخّصات عن الأفلام لكل ملصق
- كيفية إنشاء تضمينات نصية للفيلم الممثّل في كل ملصق
- كيفية استخدام BigQuery
VECTOR_SEARCHلمطابقة صور ملصقات الأفلام مع الأفلام ذات الصلة الوثيقة في مجموعة البيانات
المتطلبات
- حساب Google Cloud ومشروع Google Cloud مع تفعيل الفوترة
- متصفّح ويب، مثل Chrome
2. الإعداد والمتطلبات
إعداد البيئة بالسرعة التي تناسبك
- سجِّل الدخول إلى Google Cloud Console وأنشِئ مشروعًا جديدًا أو أعِد استخدام مشروع حالي. إذا لم يكن لديك حساب على Gmail أو Google Workspace، عليك إنشاء حساب.



- اسم المشروع هو الاسم المعروض للمشاركين في هذا المشروع. وهي سلسلة أحرف لا تستخدمها Google APIs. ويمكنك تعديلها في أي وقت.
- رقم تعريف المشروع هو معرّف فريد في جميع مشاريع Google Cloud ولا يمكن تغييره بعد ضبطه. تنشئ Cloud Console تلقائيًا سلسلة فريدة، ولا يهمّك عادةً ما هي. في معظم دروس البرمجة، عليك الرجوع إلى رقم تعريف مشروعك (يُشار إليه عادةً باسم
PROJECT_ID). إذا لم يعجبك رقم التعريف الذي تم إنشاؤه، يمكنك إنشاء رقم تعريف عشوائي آخر. يمكنك بدلاً من ذلك تجربة اسم مستخدم من اختيارك ومعرفة ما إذا كان متاحًا. لا يمكن تغيير هذا الخيار بعد هذه الخطوة وسيظل ساريًا طوال مدة المشروع. - للعلم، هناك قيمة ثالثة، وهي رقم المشروع، تستخدمها بعض واجهات برمجة التطبيقات. يمكنك الاطّلاع على مزيد من المعلومات عن كل هذه القيم الثلاث في المستندات.
- بعد ذلك، عليك تفعيل الفوترة في Cloud Console لاستخدام موارد/واجهات برمجة تطبيقات Cloud. لن تكلفك تجربة هذا الدرس التطبيقي حول الترميز الكثير، إن وُجدت أي تكلفة على الإطلاق. لإيقاف الموارد وتجنُّب تحمّل تكاليف تتجاوز هذا البرنامج التعليمي، يمكنك حذف الموارد التي أنشأتها أو حذف المشروع. يمكن لمستخدمي Google Cloud الجدد الاستفادة من برنامج الفترة التجريبية المجانية بقيمة 300 دولار أمريكي.
بدء Cloud Shell
على الرغم من إمكانية تشغيل Google Cloud عن بُعد من الكمبيوتر المحمول، ستستخدم في هذا الدرس العملي Google Cloud Shell، وهي بيئة سطر أوامر تعمل في السحابة الإلكترونية.
من Google Cloud Console، انقر على رمز Cloud Shell في شريط الأدوات أعلى يسار الصفحة:

لن يستغرق توفير البيئة والاتصال بها سوى بضع لحظات. عند الانتهاء، من المفترض أن يظهر لك ما يلي:

يتم تحميل هذه الآلة الافتراضية مزوّدة بكل أدوات التطوير التي ستحتاج إليها. توفّر هذه الخدمة دليلًا منزليًا ثابتًا بسعة 5 غيغابايت، وتعمل على Google Cloud، ما يؤدي إلى تحسين أداء الشبكة والمصادقة بشكل كبير. يمكن إكمال جميع المهام في هذا الدرس العملي ضمن المتصفّح. لست بحاجة إلى تثبيت أي تطبيق.
3- قبل البدء
هناك بضع خطوات إعداد للعمل مع نماذج Gemini في BigQuery، بما في ذلك تفعيل واجهات برمجة التطبيقات وإنشاء عملية ربط بمورد Cloud ومنح حساب الخدمة لعملية الربط بمورد Cloud أذونات معيّنة. هذه الخطوات تتم لمرة واحدة لكل مشروع، وسنتناولها في الأقسام القليلة التالية.
تفعيل واجهات برمجة التطبيقات
داخل Cloud Shell، تأكَّد من إعداد رقم تعريف مشروعك:
gcloud config set project [YOUR-PROJECT-ID]
ضبط متغيّر البيئة PROJECT_ID:
PROJECT_ID=$(gcloud config get-value project)
اضبط منطقتك التلقائية لاستخدامها مع نماذج Vertex AI. مزيد من المعلومات حول المواقع الجغرافية التي تتوفّر فيها Vertex AI في المثال الذي نستخدمه، نختار المنطقة us-central1.
gcloud config set compute/region us-central1
ضبط متغيّر البيئة REGION:
REGION=$(gcloud config get-value compute/region)
فعِّل جميع الخدمات اللازمة:
gcloud services enable bigqueryconnection.googleapis.com \
aiplatform.googleapis.com
الناتج المتوقّع بعد تنفيذ جميع الأوامر أعلاه:
student@cloudshell:~ (test-project-001-402417)$ gcloud config set project test-project-001-402417
Updated property [core/project].
student@cloudshell:~ (test-project-001-402417)$ PROJECT_ID=$(gcloud config get-value project)
Your active configuration is: [cloudshell-14650]
student@cloudshell:~ (test-project-001-402417)$
student@cloudshell:~ (test-project-001-402417)$ gcloud services enable bigqueryconnection.googleapis.com \
aiplatform.googleapis.com
Operation "operations/acat.p2-4470404856-1f44ebd8-894e-4356-bea7-b84165a57442" finished successfully.
4. إنشاء عملية ربط بمورد على السحابة الإلكترونية
في هذه المهمة، ستنشئ عملية ربط بمورد على السحابة الإلكترونية، ما يتيح لـ BigQuery الوصول إلى ملفات الصور في Cloud Storage وإجراء طلبات إلى Vertex AI.
- في Google Cloud Console، من قائمة التنقّل (
)، انقر على BigQuery.

- لإنشاء عملية ربط، انقر على + إضافة، ثمّ انقر على عمليات الربط بمصادر البيانات الخارجية.

- في قائمة "نوع الاتصال"، اختَر نماذج ووظائف Vertex AI البعيدة وBigLake (مورد على السحابة الإلكترونية).
- في حقل "معرّف الاتصال"، أدخِل gemini_conn للاتصال.
- بالنسبة إلى نوع الموقع الجغرافي، اختَر نطاق جغرافي متعدد المناطق، ثم اختَر النطاق الجغرافي المتعدد الولايات المتحدة من القائمة المنسدلة.
- استخدِم القيم التلقائية للإعدادات الأخرى.

- انقر على إنشاء ربط.
- انقر على الانتقال إلى صفحة الربط.
- في لوحة "معلومات الاتصال"، انسخ رقم تعريف حساب الخدمة إلى ملف نصي لاستخدامه في المهمة التالية. سيظهر لك أيضًا أنّه تمّت إضافة الربط ضمن قسم "عمليات الربط الخارجية" في مشروعك في "مستكشف BigQuery".
5- منح أذونات "إدارة الهوية وإمكانية الوصول" لحساب خدمة الربط
في هذه المهمة، ستمنح حساب الخدمة الخاص باتصال "موارد السحابة" أذونات "إدارة الهوية وإمكانية الوصول" (IAM) من خلال دور، وذلك لتمكينه من الوصول إلى خدمات Vertex AI.
- في Google Cloud Console، انقر على قائمة التنقّل، ثم على إدارة الهوية وإمكانية الوصول.
- انقر على منح إذن الوصول.
- في حقل المشرفون الجدد، أدخِل رقم تعريف حساب الخدمة الذي نسخته سابقًا.
- في حقل "اختيار دور"، أدخِل Vertex AI، ثم اختَر دور مستخدم Vertex AI.

- انقر على حفظ. والنتيجة هي أنّ رقم تعريف حساب الخدمة يتضمّن الآن دور "مستخدم Vertex AI".
6. إنشاء مجموعة البيانات وجدول العناصر في BigQuery لصور ملصقات الأفلام
في هذه المهمة، ستنشئ مجموعة بيانات للمشروع وجدول عناصر ضمنها لتخزين صور الملصقات.
يتم تخزين مجموعة بيانات صور ملصقات الأفلام المستخدَمة في هذا البرنامج التعليمي في حزمة Google Cloud Storage عامة: gs://cloud-samples-data/vertex-ai/dataset-management/datasets/classic-movie-posters
إنشاء مجموعة بيانات
عليك إنشاء مجموعة بيانات لتخزين عناصر قاعدة البيانات، بما في ذلك الجداول والنماذج، المستخدَمة في هذا البرنامج التعليمي.
- في Google Cloud Console، انقر على قائمة التنقّل (
)، ثمّ انقر على BigQuery. - في لوحة المستكشف، بجانب اسم مشروعك، انقر على عرض الإجراءات (
)، ثم انقر على إنشاء مجموعة بيانات. - في لوحة إنشاء مجموعة بيانات، أدخِل المعلومات التالية:
- معرّف مجموعة البيانات: gemini_demo
- نوع الموقع الجغرافي: اختَر مناطق متعدّدة
- مناطق متعدّدة: اختَر الولايات المتحدة
- اترك الحقول الأخرى على إعداداتها التلقائية.

- انقر على إنشاء مجموعة بيانات.
والنتيجة هي إنشاء مجموعة البيانات gemini_demo وإدراجها ضمن مشروعك في "مستكشف BigQuery".
إنشاء جدول الكائنات
لا يحتوي BigQuery على بيانات منظَّمة فقط، بل يمكنه أيضًا الوصول إلى بيانات غير منظَّمة (مثل صور الملصقات) من خلال جداول العناصر.
يمكنك إنشاء جدول عناصر من خلال الإشارة إلى حزمة Cloud Storage، وسيتضمّن جدول العناصر الناتج صفًا لكل عنصر من الحزمة مع مسار التخزين والبيانات الوصفية.
لإنشاء جدول الكائنات، عليك استخدام طلب بحث SQL.
- انقر على + لإنشاء استعلام SQL جديد.
- في محرّر طلب البحث، الصِق طلب البحث أدناه.
CREATE OR REPLACE EXTERNAL TABLE
`gemini_demo.movie_posters`
WITH CONNECTION `us.gemini_conn`
OPTIONS (
object_metadata = 'SIMPLE',
uris = ['gs://cloud-samples-data/vertex-ai/dataset-management/datasets/classic-movie-posters/*']
);
- نفِّذ الاستعلام. والنتيجة هي جدول عناصر
movie_postersتمت إضافته إلى مجموعة بياناتgemini_demoوتم تحميله باستخدامURI(موقع Cloud Storage) لكل صورة من صور ملصقات الأفلام. - في "المستكشف"، انقر على
movie_postersوراجِع المخطط والتفاصيل. يمكنك الاستعلام عن الجدول لمراجعة سجلات معيّنة.
7. إنشاء نموذج Gemini عن بُعد في BigQuery
بعد إنشاء جدول العناصر، يمكنك البدء في استخدامه. في هذه المهمة، ستنشئ نموذجًا عن بُعد لـ Gemini 1.5 Flash لإتاحته في BigQuery.
إنشاء نموذج Gemini 1.5 Flash عن بُعد
- انقر على + لإنشاء استعلام SQL جديد.
- في محرّر طلب البحث، ألصِق طلب البحث أدناه وشغِّله.
CREATE OR REPLACE MODEL `gemini_demo.gemini_1_5_flash`
REMOTE WITH CONNECTION `us.gemini_conn`
OPTIONS (endpoint = 'gemini-1.5-flash')
النتيجة هي إنشاء نموذج gemini_1_5_flash وإضافته إلى مجموعة بيانات gemini_demo في قسم النماذج.
- في "المستكشف"، انقر على نموذج
gemini_1_5_flashوراجِع التفاصيل.
8. طلب ملخّصات عن الأفلام من نموذج Gemini لكل ملصق
في هذه المهمة، ستستخدم نموذج Gemini البعيد الذي أنشأته للتو لتحليل صور ملصقات الأفلام وإنشاء ملخّصات لكل فيلم.
يمكنك إرسال طلبات إلى النموذج باستخدام الدالة ML.GENERATE_TEXT، مع الإشارة إلى النموذج في المَعلمات.
تحليل الصور باستخدام نموذج Gemini 1.5 Flash
- أنشئ طلب بحث جديدًا ونفِّذه باستخدام عبارة SQL التالية:
CREATE OR REPLACE TABLE
`gemini_demo.movie_posters_results` AS (
SELECT
uri,
ml_generate_text_llm_result
FROM
ML.GENERATE_TEXT( MODEL `gemini_demo.gemini_1_5_flash`,
TABLE `gemini_demo.movie_posters`,
STRUCT( 0.2 AS temperature,
'For the movie represented by this poster, what is the movie title and year of release? Answer in JSON format with two keys: title, year. title should be string, year should be integer. Do not use JSON decorators.' AS PROMPT,
TRUE AS FLATTEN_JSON_OUTPUT)));
عند تنفيذ طلب البحث، يطلب BigQuery من نموذج Gemini لكل صف في جدول العناصر، مع دمج الصورة مع الطلب الثابت المحدّد. والنتيجة هي إنشاء الجدول movie_posters_results.
- لنطّلع الآن على النتائج. أنشئ طلب بحث جديدًا ونفِّذه باستخدام عبارة SQL التالية:
SELECT * FROM `gemini_demo.movie_posters_results`
تكون النتيجة عبارة عن صفوف لكل ملصق فيلم مع URI (موقع صورة ملصق الفيلم في Cloud Storage) ونتيجة JSON تتضمّن عنوان الفيلم وسنة إصداره من نموذج Gemini 1.5 Flash.
يمكنك استرداد هذه النتائج بطريقة أسهل للقراءة باستخدام طلب البحث التالي. يستخدم هذا الاستعلام SQL لاستخراج عنوان الفيلم وسنة إصداره من هذه الردود إلى أعمدة جديدة.
- أنشئ طلب بحث جديدًا ونفِّذه باستخدام عبارة SQL التالية:
CREATE OR REPLACE TABLE
`gemini_demo.movie_posters_results_formatted` AS (
SELECT
uri,
JSON_VALUE(ml_generate_text_llm_result, "$.title") AS title,
JSON_VALUE(ml_generate_text_llm_result, "$.year") AS year
FROM
`gemini_demo.movie_posters_results` results )
والنتيجة هي إنشاء الجدول movie_posters_result_formatted.
- يمكنك طلب البحث في الجدول باستخدام الاستعلام أدناه للاطّلاع على الصفوف التي تم إنشاؤها.
SELECT * FROM `gemini_demo.movie_posters_results_formatted`
لاحظ كيف تظل نتائج العمود URI كما هي، ولكن يتم الآن تحويل JSON إلى العمودين title وyear لكل صف.
طلب ملخّصات أفلام من نموذج 1.5 Flash في Gemini
ماذا لو أردت الحصول على المزيد من المعلومات حول كل فيلم من هذه الأفلام، مثل ملخّص نصي لكل فيلم؟ تُعدّ حالة استخدام إنشاء المحتوى هذه مثالية لنموذج لغوي كبير مثل Gemini 1.5 Flash.
- يمكنك استخدام Gemini 1.5 Flash لتقديم ملخّصات للأفلام لكل ملصق من خلال تنفيذ طلب البحث أدناه:
SELECT
uri,
title,
year,
prompt,
ml_generate_text_llm_result
FROM
ML.GENERATE_TEXT( MODEL `gemini_demo.gemini_1_5_flash`,
(
SELECT
CONCAT('Provide a short summary of movie titled ',title, ' from the year ',year,'.') AS prompt,
uri,
title,
year
FROM
`gemini_demo.movie_posters_results_formatted`
LIMIT
20 ),
STRUCT(0.2 AS temperature,
TRUE AS FLATTEN_JSON_OUTPUT));
لاحظ الحقل ml_generate_text_llm_result في النتائج، فهو يتضمّن ملخّصًا قصيرًا للفيلم.
9- إنشاء تضمينات نصية باستخدام نموذج عن بُعد
يمكنك الآن دمج البيانات المنظَّمة التي أنشأتها مع بيانات منظَّمة أخرى في مستودع البيانات. تحتوي مجموعة البيانات العامة IMDB المتوفّرة في BigQuery على قدر كبير من المعلومات حول الأفلام، بما في ذلك تقييمات المشاهدين وبعض عيّنات مراجعات المستخدمين الحرة أيضًا. يمكن أن تساعدك هذه البيانات في تعميق تحليلك لملصقات الأفلام وفهم كيفية إدراك هذه الأفلام.
لدمج البيانات، ستحتاج إلى مفتاح. في هذه الحالة، قد لا تتطابق عناوين الأفلام التي أنشأها نموذج Gemini تمامًا مع العناوين في مجموعة بيانات IMDB.
في هذه المهمة، ستنشئ تضمينات نصية لعناوين الأفلام وسنوات إنتاجها من مجموعتَي البيانات، ثم تستخدم المسافة بين هذه التضمينات لربط عنوان IMDB الأقرب بعناوين ملصقات الأفلام من مجموعة البيانات التي أنشأتها حديثًا.
إنشاء النموذج عن بُعد
لإنشاء تضمينات النص، عليك إنشاء نموذج بعيد جديد يشير إلى نقطة النهاية text-multilingual-embedding-002.
- أنشئ طلب بحث جديدًا ونفِّذه باستخدام عبارة SQL التالية:
CREATE OR REPLACE MODEL `gemini_demo.text_embedding`
REMOTE WITH CONNECTION `us.gemini_conn`
OPTIONS (endpoint = 'text-multilingual-embedding-002')
والنتيجة هي إنشاء النموذج text_embedding وظهوره في المستكشف أسفل مجموعة البيانات gemini_demo.
إنشاء تضمينات نصية للعنوان والسنة المرتبطَين بالملصقات
ستستخدم الآن هذا النموذج البعيد مع الدالة ML.GENERATE_EMBEDDING لإنشاء تضمين لكل عنوان وملصق فيلم وسنة.
- أنشئ طلب بحث جديدًا ونفِّذه باستخدام عبارة SQL التالية:
CREATE OR REPLACE TABLE
`gemini_demo.movie_posters_results_embeddings` AS (
SELECT
*
FROM
ML.GENERATE_EMBEDDING(
MODEL `gemini_demo.text_embedding`,
(
SELECT
CONCAT('The movie titled ', title, ' from the year ', year,'.') AS content,
title,
year,
uri
FROM
`gemini_demo.movie_posters_results_formatted` ),
STRUCT(TRUE AS flatten_json_output)));
والنتيجة هي إنشاء جدول movie_poster_results_embeddings يحتوي على التضمينات الخاصة بالمحتوى النصي الذي تم ربطه لكل صف من جدول gemini_demo.movie_posters_results_formatted.
- يمكنك الاطّلاع على نتائج طلب البحث باستخدام طلب البحث الجديد أدناه:
SELECT * FROM `gemini_demo.movie_posters_results_embeddings`
يمكنك هنا الاطّلاع على التضمينات (المتجهات الممثّلة بأرقام) لكل فيلم أنشأه النموذج.
إنشاء تضمينات نصية لمجموعة فرعية من مجموعة بيانات IMDB
ستنشئ طريقة عرض جديدة للبيانات من مجموعة بيانات IMDB عامة لا تحتوي إلا على الأفلام التي تم إصدارها قبل عام 1935 (الفترة الزمنية المعروفة للأفلام من صور الملصقات).
- أنشئ طلب بحث جديدًا ونفِّذه باستخدام عبارة SQL التالية:
CREATE OR REPLACE VIEW
`gemini_demo.imdb_movies` AS (
WITH
reviews AS (
SELECT
reviews.movie_id AS movie_id,
title.primary_title AS title,
title.start_year AS year,
reviews.review AS review
FROM
`bigquery-public-data.imdb.reviews` reviews
LEFT JOIN
`bigquery-public-data.imdb.title_basics` title
ON
reviews.movie_id = title.tconst)
SELECT
DISTINCT(movie_id),
title,
year
FROM
reviews
WHERE
year < 1935)
والنتيجة هي طريقة عرض جديدة تحتوي على قائمة بمعرّفات الأفلام وأسمائها وسنة إصدارها المختلفة من الجدول bigquery-public-data.imdb.reviews لجميع الأفلام في مجموعة البيانات التي تم إصدارها قبل عام 1935.
- ستنشئ الآن تضمينات لمجموعة فرعية من الأفلام من قاعدة بيانات IMDB باستخدام عملية مشابهة للعملية الموضّحة في القسم السابق. أنشئ طلب بحث جديدًا ونفِّذه باستخدام عبارة SQL التالية:
CREATE OR REPLACE TABLE
`gemini_demo.imdb_movies_embeddings` AS (
SELECT
*
FROM
ML.GENERATE_EMBEDDING( MODEL `gemini_demo.text_embedding`,
(
SELECT
CONCAT('The movie titled ', title, ' from the year ', year,'.') AS content,
title,
year,
movie_id
FROM
`gemini_demo.imdb_movies` ),
STRUCT(TRUE AS flatten_json_output) )
WHERE
ml_generate_embedding_status = '' );
نتيجة طلب البحث هي جدول يحتوي على التضمينات الخاصة بالمحتوى النصي لجدول gemini_demo.imdb_movies.
مطابقة صور ملصقات الأفلام مع قاعدة بيانات IMDB movie_id باستخدام BigQuery VECTOR_SEARCH
يمكنك الآن دمج الجدولَين باستخدام الدالة VECTOR_SEARCH.
- أنشئ طلب بحث جديدًا ونفِّذه باستخدام عبارة SQL التالية:
SELECT
query.uri AS poster_uri,
query.title AS poster_title,
query.year AS poster_year,
base.title AS imdb_title,
base.year AS imdb_year,
base.movie_id AS imdb_movie_id,
distance
FROM
VECTOR_SEARCH( TABLE `gemini_demo.imdb_movies_embeddings`,
'ml_generate_embedding_result',
TABLE `gemini_demo.movie_posters_results_embeddings`,
'ml_generate_embedding_result',
top_k => 1,
distance_type => 'COSINE');
يستخدم طلب البحث الدالة VECTOR_SEARCH للعثور على أقرب عنصر مجاور في الجدول gemini_demo.imdb_movies_embeddings لكل صف في الجدول gemini_demo.movie_posters_results_embeddings. يتم العثور على أقرب عنصر مجاور باستخدام مقياس مسافة جيب التمام الذي يحدّد مدى تشابه عمليتَي تضمين.
يمكن استخدام طلب البحث هذا للعثور على الفيلم الأكثر تشابهًا في مجموعة بيانات IMDB لكل فيلم حدّده Gemini 1.5 Flash في ملصقات الأفلام. على سبيل المثال، يمكنك استخدام طلب البحث هذا للعثور على أقرب تطابق للفيلم "Au Secours!" في مجموعة البيانات العامة IMDB التي تشير إلى هذا الفيلم بعنوانه باللغة الإنجليزية "Help!".
- أنشئ طلب بحث جديدًا ونفِّذه لدمج بعض المعلومات الإضافية حول تقييمات الأفلام المقدَّمة في مجموعة البيانات العلنية الخاصة بقاعدة بيانات الأفلام على الإنترنت (IMDB):
SELECT
query.uri AS poster_uri,
query.title AS poster_title,
query.year AS poster_year,
base.title AS imdb_title,
base.year AS imdb_year,
base.movie_id AS imdb_movie_id,
distance,
imdb.average_rating,
imdb.num_votes
FROM
VECTOR_SEARCH( TABLE `gemini_demo.imdb_movies_embeddings`,
'ml_generate_embedding_result',
TABLE `gemini_demo.movie_posters_results_embeddings`,
'ml_generate_embedding_result',
top_k => 1,
distance_type => 'COSINE') DATA
LEFT JOIN
`bigquery-public-data.imdb.title_ratings` imdb
ON
base.movie_id = imdb.tconst
ORDER BY
imdb.average_rating DESC
هذا الاستعلام مشابه للاستعلام السابق. ولا يزال يستخدم تمثيلات رقمية خاصة تُعرف باسم "متّجهات التضمين" للعثور على أفلام مشابهة لملصق فيلم معيّن. ومع ذلك، يربط أيضًا متوسط التقييم وعدد الأصوات لكل فيلم من الأفلام الأقرب من جدول منفصل من مجموعة بيانات IMDB العامة.
10. تهانينا
تهانينا على إكمال هذا الدرس العملي. لقد أنشأت بنجاح جدول عناصر لصور الملصقات في BigQuery، وأنشأت نموذج Gemini عن بُعد، واستخدمت النموذج لطلب تحليل الصور من نموذج Gemini وتقديم ملخّصات للأفلام، وأنشأت تضمينات نصية لعناوين الأفلام، واستخدمت هذه التضمينات لمطابقة صور ملصقات الأفلام مع عنوان الفيلم ذي الصلة في مجموعة بيانات IMDB.
المواضيع التي تناولناها
- كيفية ضبط بيئتك وحسابك لاستخدام واجهات برمجة التطبيقات
- كيفية إنشاء اتصال بمورد على السحابة الإلكترونية في BigQuery
- كيفية إنشاء مجموعة بيانات وجدول عناصر في BigQuery لصور ملصقات الأفلام
- كيفية إنشاء نماذج Gemini البعيدة في BigQuery
- كيفية تقديم طلب إلى نموذج Gemini لتوفير ملخّصات عن الأفلام لكل ملصق
- كيفية إنشاء تضمينات نصية للفيلم الممثّل في كل ملصق
- كيفية استخدام BigQuery
VECTOR_SEARCHلمطابقة صور ملصقات الأفلام مع الأفلام ذات الصلة الوثيقة في مجموعة البيانات
الخطوات التالية / مزيد من المعلومات