تجزیه و تحلیل پوستر فیلم در BigQuery با مدل های راه دور

تجزیه و تحلیل پوستر فیلم در BigQuery با مدل های راه دور

درباره این codelab

subjectآخرین به‌روزرسانی: مارس ۱۰, ۲۰۲۵
account_circleنویسنده: Alicia Williams

1. مقدمه

در این آزمایشگاه، نحوه استفاده از BigQuery Machine Learning را برای استنتاج با مدل‌های راه دور ( مدل‌های Gemini ) برای تجزیه و تحلیل تصاویر پوستر فیلم و تولید خلاصه‌ای از فیلم‌ها بر اساس پوسترها به طور مستقیم در انبار داده BigQuery خود خواهید آموخت.

3e75cd7cdc8ffcf6.jpeg

تصویر بالا: نمونه ای از تصاویر پوستر فیلم که آنالیز خواهید کرد.

BigQuery یک پلتفرم تجزیه و تحلیل داده کاملاً مدیریت شده و آماده هوش مصنوعی است که به شما کمک می کند تا ارزش داده های خود را به حداکثر برسانید و به صورت چند موتوره، چند فرمت و چند ابری طراحی شده است. یکی از ویژگی های کلیدی آن BigQuery Machine Learning برای استنتاج است که به شما امکان می دهد مدل های یادگیری ماشین (ML) را با استفاده از پرس و جوهای GoogleSQL ایجاد و اجرا کنید.

Gemini یک خانواده از مدل‌های هوش مصنوعی تولید شده توسط گوگل است که برای موارد استفاده چند وجهی طراحی شده است.

اجرای مدل های ML با استفاده از GoogleSQL Queries

معمولاً انجام ML یا هوش مصنوعی (AI) روی مجموعه داده‌های بزرگ نیاز به برنامه‌نویسی و دانش گسترده از چارچوب‌های ML دارد. این امر توسعه راه حل را به گروه کوچکی از متخصصان در هر شرکت محدود می کند. با استفاده از BigQuery Machine Learning برای استنتاج، متخصصان SQL می‌توانند از ابزارها و مهارت‌های SQL موجود برای ساخت مدل‌ها و ایجاد نتایج از LLMها و APIهای هوش مصنوعی ابری استفاده کنند.

پیش نیازها

چیزی که یاد خواهید گرفت

  • چگونه محیط و حساب خود را برای استفاده از API پیکربندی کنید
  • نحوه ایجاد یک اتصال Cloud Resource در BigQuery
  • نحوه ایجاد دیتاست و جدول شی در BigQuery برای تصاویر پوستر فیلم
  • نحوه ایجاد مدل های کنترل از راه دور Gemini در BigQuery
  • چگونه از مدل Gemini بخواهیم خلاصه فیلم را برای هر پوستر ارائه دهد
  • نحوه ایجاد جاسازی متن برای فیلم نمایش داده شده در هر پوستر
  • نحوه استفاده از BigQuery VECTOR_SEARCH برای تطبیق تصاویر پوستر فیلم با فیلم‌های مرتبط نزدیک در مجموعه داده

آنچه شما نیاز دارید

  • یک حساب Google Cloud و پروژه Google Cloud، با فعال بودن صورتحساب
  • یک مرورگر وب مانند کروم

2. راه اندازی و الزامات

تنظیم محیط خود به خود

  1. به Google Cloud Console وارد شوید و یک پروژه جدید ایجاد کنید یا از یک موجود استفاده مجدد کنید. اگر قبلاً یک حساب Gmail یا Google Workspace ندارید، باید یک حساب ایجاد کنید .

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • نام پروژه نام نمایشی برای شرکت کنندگان این پروژه است. این یک رشته کاراکتری است که توسط API های Google استفاده نمی شود. همیشه می توانید آن را به روز کنید.
  • شناسه پروژه در تمام پروژه‌های Google Cloud منحصربه‌فرد است و تغییرناپذیر است (پس از تنظیم نمی‌توان آن را تغییر داد). Cloud Console به طور خودکار یک رشته منحصر به فرد تولید می کند. معمولاً برای شما مهم نیست که چیست. در اکثر کدها، باید شناسه پروژه خود را ارجاع دهید (معمولاً با نام PROJECT_ID شناخته می شود). اگر شناسه تولید شده را دوست ندارید، ممکن است یک شناسه تصادفی دیگر ایجاد کنید. از طرف دیگر، می‌توانید خودتان را امتحان کنید، و ببینید آیا در دسترس است یا خیر. پس از این مرحله نمی توان آن را تغییر داد و در طول مدت پروژه باقی می ماند.
  • برای اطلاع شما، یک مقدار سوم وجود دارد، یک شماره پروژه ، که برخی از API ها از آن استفاده می کنند. در مورد هر سه این مقادیر در مستندات بیشتر بیاموزید.
  1. در مرحله بعد، برای استفاده از منابع Cloud/APIها باید صورتحساب را در کنسول Cloud فعال کنید . اجرا کردن از طریق این کد لبه هزینه زیادی نخواهد داشت. برای خاموش کردن منابع برای جلوگیری از تحمیل صورت‌حساب فراتر از این آموزش، می‌توانید منابعی را که ایجاد کرده‌اید حذف کنید یا پروژه را حذف کنید. کاربران جدید Google Cloud واجد شرایط برنامه آزمایشی رایگان 300 دلاری هستند.

Cloud Shell را راه اندازی کنید

در حالی که Google Cloud را می توان از راه دور از لپ تاپ شما کار کرد، در این کد لبه از Google Cloud Shell استفاده خواهید کرد، یک محیط خط فرمان که در Cloud اجرا می شود.

از Google Cloud Console ، روی نماد Cloud Shell در نوار ابزار بالا سمت راست کلیک کنید:

55efc1aaa7a4d3ad.png

تهیه و اتصال به محیط فقط چند لحظه طول می کشد. وقتی تمام شد، باید چیزی شبیه به این را ببینید:

7ffe5cbb04455448.png

این ماشین مجازی با تمام ابزارهای توسعه که شما نیاز دارید بارگذاری شده است. این یک فهرست اصلی 5 گیگابایتی دائمی را ارائه می دهد و در Google Cloud اجرا می شود و عملکرد و احراز هویت شبکه را تا حد زیادی افزایش می دهد. تمام کارهای شما در این کد لبه را می توان در یک مرورگر انجام داد. شما نیازی به نصب چیزی ندارید.

3. قبل از شروع

چند مرحله راه‌اندازی برای کار با مدل‌های Gemini در BigQuery وجود دارد، از جمله فعال کردن APIها، ایجاد یک اتصال منبع Cloud، و اعطای مجوزهای خاص به حساب سرویس برای اتصال منبع Cloud. این مراحل برای هر پروژه یک بار است و در چند بخش بعدی به آن پرداخته خواهد شد.

API ها را فعال کنید

در داخل Cloud Shell، مطمئن شوید که ID پروژه شما تنظیم شده است:

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 Resource ایجاد کنید

در این کار، یک اتصال Cloud Resource ایجاد می‌کنید که BigQuery را قادر می‌سازد تا به فایل‌های تصویری در Cloud Storage دسترسی داشته باشد و با Vertex AI تماس بگیرد.

  1. در Google Cloud Console، در منوی ناوبری ( نماد منوی پیمایش ، روی BigQuery کلیک کنید.

68ddff3628a55957.png

  1. برای ایجاد یک اتصال، روی + ADD کلیک کنید و سپس روی اتصال به منابع داده خارجی کلیک کنید.

8b70fdd209f540b6.png

  1. در لیست نوع اتصال، مدل‌های کنترل از راه دور Vertex AI، توابع راه دور و BigLake (منبع ابر) را انتخاب کنید.
  2. در قسمت Connection ID، gemini_conn را برای اتصال خود وارد کنید.
  3. برای نوع مکان ، Multi-region را انتخاب کنید و سپس از منوی کشویی، US multi-region را انتخاب کنید.
  4. از تنظیمات پیش فرض برای سایر تنظیمات استفاده کنید.

deb25a1dd65ee9dd.png

  1. روی ایجاد اتصال کلیک کنید.
  2. روی GO TO CONNECTION کلیک کنید.
  3. در صفحه اطلاعات اتصال، شناسه حساب سرویس را برای استفاده در کار بعدی در یک فایل متنی کپی کنید. همچنین خواهید دید که اتصال در قسمت External Connections پروژه شما در BigQuery Explorer اضافه شده است.

5. مجوزهای IAM را به حساب سرویس اتصال اعطا کنید

در این کار، از طریق یک نقش، به حساب سرویس اتصال منبع ابری مجوز IAM اعطا می‌کنید تا آن را قادر به دسترسی به خدمات Vertex AI کنید.

  1. در کنسول Google Cloud، در منوی پیمایش ، روی IAM & Admin کلیک کنید.
  2. روی Grant Access کلیک کنید.
  3. در قسمت New principals ، شناسه حساب سرویس را که قبلاً کپی کرده اید وارد کنید.
  4. در قسمت Select a role، Vertex AI را وارد کنید و سپس Vertex AI User role را انتخاب کنید.

55ed0ac6cd92aa1e.png

  1. روی ذخیره کلیک کنید. نتیجه این است که شناسه حساب سرویس اکنون شامل نقش Vertex AI User است.

6. برای تصاویر پوستر فیلم، مجموعه داده و جدول شی را در BigQuery ایجاد کنید

در این کار، شما یک مجموعه داده برای پروژه و یک جدول شی در آن ایجاد می کنید تا تصاویر پوستر را ذخیره کنید.

مجموعه داده تصاویر پوستر فیلم مورد استفاده در این آموزش در یک سطل عمومی Google Cloud Storage ذخیره می شود: gs://cloud-samples-data/vertex-ai/dataset-management/datasets/classic-movie-posters

یک مجموعه داده ایجاد کنید

شما یک مجموعه داده برای ذخیره اشیاء پایگاه داده، از جمله جداول و مدل های مورد استفاده در این آموزش ایجاد خواهید کرد.

  1. در کنسول Google Cloud، منوی ناوبری ( نماد منوی پیمایش )، و سپس BigQuery را انتخاب کنید.
  2. در پانل اکسپلورر ، در کنار نام پروژه خود، View actions را انتخاب کنید ( نماد منوی بیشتر )، و سپس ایجاد مجموعه داده را انتخاب کنید.
  3. در صفحه ایجاد مجموعه داده ، اطلاعات زیر را وارد کنید:
  • شناسه مجموعه داده: gemini_demo
  • نوع مکان: Multi-region را انتخاب کنید
  • چند منطقه: ایالات متحده را انتخاب کنید
  1. سایر فیلدها را در حالت پیش فرض خود بگذارید.

9a787006017d5b47.png

  1. روی ایجاد مجموعه داده کلیک کنید.

نتیجه این است که مجموعه داده gemini_demo ایجاد شده و در زیر پروژه شما در BigQuery Explorer فهرست شده است.

جدول شی را ایجاد کنید

BigQuery نه تنها داده های ساخت یافته را نگه می دارد، بلکه می تواند به داده های بدون ساختار (مانند تصاویر پوستر) از طریق جداول شی نیز دسترسی داشته باشد.

شما با اشاره به یک سطل Cloud Storage یک جدول شی ایجاد می کنید و جدول شی به دست آمده دارای یک ردیف برای هر شی از سطل با مسیر ذخیره سازی و ابرداده آن است.

برای ایجاد جدول شی از یک کوئری SQL استفاده می کنید.

  1. برای ایجاد پرس و جوی جدید SQL روی + کلیک کنید.
  2. در ویرایشگر پرس و جو، پرس و جو را در زیر قرار دهید.
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/*']
  );
  1. پرس و جو را اجرا کنید. نتیجه یک جدول شیء movie_posters است که به مجموعه داده gemini_demo اضافه شده و با URI (محل ذخیره سازی ابری) هر تصویر پوستر فیلم بارگذاری می شود.
  2. در Explorer روی movie_posters کلیک کنید و طرح و جزئیات را بررسی کنید. برای بررسی سوابق خاص از جدول پرس و جو کنید.

7. مدل کنترل از راه دور Gemini را در BigQuery ایجاد کنید

اکنون که جدول شی ایجاد شده است، می توانید کار با آن را شروع کنید. در این کار، یک مدل از راه دور برای Gemini 1.5 Flash ایجاد می کنید تا آن را در BigQuery در دسترس قرار دهید.

مدل Gemini 1.5 Flash از راه دور را ایجاد کنید

  1. برای ایجاد پرس و جوی جدید SQL روی + کلیک کنید.
  2. در ویرایشگر پرس و جو، پرس و جو را در زیر قرار دهید و آن را اجرا کنید.
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 اضافه شده است.

  1. در اکسپلورر روی مدل gemini_1_5_flash کلیک کنید و جزئیات را بررسی کنید.

8. مدل Gemini را به ارائه خلاصه فیلم برای هر پوستر بخواهید

در این کار، از مدل کنترل از راه دور Gemini که به تازگی ایجاد کرده اید، برای تجزیه و تحلیل تصاویر پوستر فیلم و ایجاد خلاصه برای هر فیلم استفاده خواهید کرد.

می‌توانید با استفاده از تابع ML.GENERATE_TEXT ، درخواست‌ها را به مدل ارسال کنید و به مدل در پارامترها ارجاع دهید.

تصاویر را با مدل فلش جمینی 1.5 آنالیز کنید

  1. یک کوئری جدید با عبارت 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 ایجاد می شود.

  1. حالا بیایید نتایج را مشاهده کنیم. یک کوئری جدید با عبارت SQL زیر ایجاد و اجرا کنید:
SELECT * FROM `gemini_demo.movie_posters_results`

نتیجه، ردیف‌هایی برای هر پوستر فیلم با URI (محل ذخیره‌سازی ابری تصویر پوستر فیلم) و یک نتیجه JSON شامل عنوان فیلم و سال انتشار فیلم از مدل Gemini 1.5 Flash است.

با استفاده از پرس و جو بعدی می توانید این نتایج را به روشی خواناتر برای انسان بازیابی کنید. این پرس و جو از SQL برای بیرون کشیدن عنوان فیلم و انتشار سال از این پاسخ ها در ستون های جدید استفاده می کند.

  1. یک کوئری جدید با عبارت 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 ایجاد می شود.

  1. برای دیدن ردیف های ایجاد شده می توانید جدول را با پرس و جو زیر پرس و جو کنید.
SELECT * FROM `gemini_demo.movie_posters_results_formatted`

توجه کنید که چگونه نتایج ستون URI یکسان باقی می‌ماند، اما JSON اکنون به ستون‌های title و year برای هر ردیف تبدیل می‌شود.

برای ارائه خلاصه فیلم از مدل فلش Gemini 1.5 درخواست کنید

اگر بخواهید کمی اطلاعات بیشتری در مورد هر یک از این فیلم ها داشته باشید، خلاصه متنی از هر یک از فیلم ها را بگویید؟ این مورد استفاده از تولید محتوا برای یک مدل LLM مانند مدل Gemini 1.5 Flash مناسب است.

  1. شما می توانید از 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 اشاره می کند.

  1. یک کوئری جدید با عبارت 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 برای ایجاد یک جاسازی برای هر عنوان پوستر فیلم و سال استفاده خواهید کرد.

  1. یک کوئری جدید با عبارت 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 به هم پیوسته‌اند.

  1. با استفاده از کوئری جدید زیر می توانید نتایج پرس و جو را مشاهده کنید:
SELECT * FROM `gemini_demo.movie_posters_results_embeddings`

در اینجا جاسازی‌ها (بردارهایی که با اعداد نشان داده می‌شوند) را برای هر فیلم تولید شده توسط مدل مشاهده می‌کنید.

برای زیرمجموعه ای از مجموعه داده های IMDB، جاسازی های متنی ایجاد کنید

شما یک نمای جدید از داده ها از مجموعه داده های عمومی IMDB ایجاد خواهید کرد که فقط شامل فیلم هایی است که قبل از سال 1935 منتشر شده اند (دوره زمانی مشخص فیلم ها از تصاویر پوستر).

  1. یک کوئری جدید با عبارت 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 است.

  1. اکنون با استفاده از فرآیندی مشابه بخش قبل، جاسازی هایی را برای زیرمجموعه فیلم ها از 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 است.

اکنون می توانید با استفاده از تابع VECTOR_SEARCH به دو جدول بپیوندید.

  1. یک کوئری جدید با عبارت 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!" اشاره می کند.

  1. برای پیوستن به برخی اطلاعات اضافی در مورد رتبه‌بندی فیلم‌ها در مجموعه داده عمومی 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 استفاده کردید.

آنچه را پوشش داده ایم

  • چگونه محیط و حساب خود را برای استفاده از API پیکربندی کنید
  • نحوه ایجاد یک اتصال Cloud Resource در BigQuery
  • نحوه ایجاد دیتاست و جدول شی در BigQuery برای تصاویر پوستر فیلم
  • نحوه ایجاد مدل های کنترل از راه دور Gemini در BigQuery
  • چگونه از مدل Gemini بخواهیم خلاصه فیلم را برای هر پوستر ارائه دهد
  • نحوه ایجاد جاسازی متن برای فیلم نمایش داده شده در هر پوستر
  • نحوه استفاده از BigQuery VECTOR_SEARCH برای تطبیق تصاویر پوستر فیلم با فیلم‌های مرتبط نزدیک در مجموعه داده

مراحل بعدی / بیشتر بدانید

11. نظرسنجی

چگونه از این آموزش استفاده خواهید کرد؟