1. مقدمة
في هذا البرنامج التدريبي، ستتعرّف على كيفية استخدام التعلم الآلي في BigQuery للاستنتاج باستخدام النماذج البعيدة ( نماذج Gemini) لتحليل صور ملصقات الأفلام وإنشاء ملخّصات للأفلام استنادًا إلى الملصقات مباشرةً في مستودع بيانات BigQuery.
الصورة أعلاه: نموذج لصور ملصقات الأفلام التي ستحلّلها
BigQuery هي منصّة تحليل بيانات مُدارة بالكامل ومتوافقة مع الذكاء الاصطناعي تساعدك في تحقيق أقصى قيمة من بياناتك، وهي مصمّمة لتكون متعددة المحرّكات ومتعددة التنسيقات ومتعددة السحب الإلكترونية. ومن أهم ميزاته تعلُّم الآلة في BigQuery للاستنتاج، ما يتيح لك إنشاء نماذج تعلُّم الآلة وتشغيلها باستخدام طلبات بحث GoogleSQL.
Gemini هي مجموعة من نماذج الذكاء الاصطناعي التوليدي التي طوّرتها Google وهي مصمّمة لحالات الاستخدام المتعدّدة الوسائط.
تشغيل نماذج تعلُّم الآلة باستخدام طلبات بحث GoogleSQL
عادةً ما يتطلّب تنفيذ تعلُّم الآلة أو الذكاء الاصطناعي (AI) على مجموعات بيانات كبيرة معرفة واسعة بالبرمجة وأُطر عمل تعلُّم الآلة. ويؤدي ذلك إلى حصر تطوير الحلول بمجموعة صغيرة من الخبراء في كل شركة. باستخدام ميزة "الاستنتاج من خلال الذكاء الاصطناعي" في BigQuery، يمكن لمستخدِمي لغة الاستعلامات البنيوية (SQL) استخدام أدوات SQL ومهاراتها الحالية لإنشاء النماذج، وإنشاء النتائج من النماذج اللغوية الكبيرة وواجهات برمجة التطبيقات لتكنولوجيات الذكاء الاصطناعي من Google Cloud.
المتطلبات الأساسية
- فهم أساسي لوحدة تحكّم Google Cloud
- يُفضَّل أن يكون لديك خبرة في استخدام BigQuery.
ما ستتعرّف عليه
- كيفية ضبط بيئتك وحسابك لاستخدام واجهات برمجة التطبيقات
- كيفية إنشاء اتصال بمورد Cloud في BigQuery
- كيفية إنشاء مجموعة بيانات وجدول عناصر في BigQuery لصور ملصقات الأفلام
- كيفية إنشاء النماذج البعيدة في Gemini في BigQuery
- كيفية توجيه نموذج Gemini لتقديم ملخصات للأفلام لكل ملصق
- كيفية إنشاء embeddings نصية للفيلم المعروض في كل ملصق
- كيفية استخدام BigQuery
VECTOR_SEARCH
لمطابقة صور ملصقات الأفلام مع الأفلام ذات الصلة بشكل وثيق في مجموعة البيانات
المتطلبات
- حساب Google Cloud ومشروع Google Cloud مفعَّلَين للفوترة
- متصفح ويب، مثل Chrome
2. الإعداد والمتطلبات
إعداد البيئة حسب السرعة التي تناسبك
- سجِّل الدخول إلى Google Cloud Console وأنشئ مشروعًا جديدًا أو أعِد استخدام مشروع حالي. إذا لم يكن لديك حساب على Gmail أو Google Workspace، عليك إنشاء حساب.
- اسم المشروع هو الاسم المعروض للمشاركين في هذا المشروع. وهي سلسلة أحرف لا تستخدمها واجهات برمجة تطبيقات Google. ويمكنك تعديلها في أي وقت.
- يكون معرّف المشروع فريدًا في جميع مشاريع 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. إنشاء اتصال بمورد في السحابة الإلكترونية
في هذه المهمة، ستنشئ عملية ربط بمورد في Cloud، ما يتيح لخدمة BigQuery الوصول إلى ملفات الصور في Cloud Storage وإجراء مكالمات إلى Vertex AI.
- في Google Cloud Console، من قائمة التنقّل (
)، انقر على BigQuery.
- لإنشاء اتصال، انقر على + إضافة، ثمّ انقر على عمليات الربط بمصادر بيانات خارجية.
- في قائمة "نوع الاتصال"، اختَر نماذج Vertex AI البعيدة والدوالّ البعيدة وBigLake (مورد السحابة الإلكترونية).
- في حقل "معرّف الاتصال"، أدخِل gemini_conn للاتصال.
- بالنسبة إلى نوع الموقع الجغرافي، اختَر مناطق متعدّدة، ثمّ اختَر مناطق متعدّدة في الولايات المتحدة من القائمة المنسدلة.
- استخدِم الإعدادات التلقائية للإعدادات الأخرى.
- انقر على إنشاء اتصال.
- انقر على الانتقال إلى عملية الربط.
- في لوحة "معلومات الاتصال"، انسخ رقم تعريف حساب الخدمة إلى ملف نصي لاستخدامه في المهمة التالية. ستلاحظ أيضًا أنّه تمت إضافة عملية الربط ضمن قسم "عمليات الربط الخارجية" في مشروعك في "مستكشف BigQuery".
5- منح أذونات إدارة الهوية وإمكانية الوصول إلى حساب الخدمة الخاص بالربط
في هذه المهمة، ستمنح أذونات إدارة الهوية وإمكانية الوصول (IAM) لحساب الخدمة الخاص بربط الموارد في السحابة الإلكترونية، من خلال دور، لتتمكّن من الوصول إلى خدمات Vertex AI.
- في وحدة تحكّم Google Cloud، انقر على المشرف وإدارة الهوية وإمكانية الوصول في قائمة التنقّل.
- انقر على منح إذن الوصول.
- في حقل العناصر الجديدة، أدخِل رقم تعريف حساب الخدمة الذي نسخته سابقًا.
- في حقل "اختيار دور"، أدخِل 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 Explorer.
إنشاء جدول الكائنات
لا تحتفظ أداة 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 لإتاحته في 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
(الموقع في "مساحة التخزين في السحابة الإلكترونية" لصورة ملصق الفيلم) ونتيجة 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
لكل صف.
طلب تقديم ملخصات الأفلام من نموذج Gemini 1.5 Flash
ماذا لو أردت الحصول على مزيد من المعلومات عن كل فيلم من هذه الأفلام، مثلاً ملخّص نصي لكل فيلم؟ إنّ حالة الاستخدام هذه لإنشاء المحتوى مثالية لنموذج لغوي كبير، مثل نموذج 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 وتقديم ملخّصات للأفلام، وإنشاء embeddings نصية لعناوين الأفلام، واستخدام هذه الembeddings لمطابقة صور ملصقات الأفلام مع عنوان الفيلم ذي الصلة في مجموعة بيانات IMDB.
المواضيع التي تناولناها
- كيفية ضبط بيئتك وحسابك لاستخدام واجهات برمجة التطبيقات
- كيفية إنشاء اتصال بمورد Cloud في BigQuery
- كيفية إنشاء مجموعة بيانات وجدول عناصر في BigQuery لصور ملصقات الأفلام
- كيفية إنشاء النماذج البعيدة في Gemini في BigQuery
- كيفية توجيه نموذج Gemini لتقديم ملخصات للأفلام لكل ملصق
- كيفية إنشاء embeddings نصية للفيلم المعروض في كل ملصق
- كيفية استخدام BigQuery
VECTOR_SEARCH
لمطابقة صور ملصقات الأفلام مع الأفلام ذات الصلة بشكل وثيق في مجموعة البيانات
الخطوات التالية / مزيد من المعلومات