Uzak modellerle BigQuery'de film afişlerini analiz etme

1. Giriş

Bu laboratuvarda, film afişi resimlerini analiz etmek ve doğrudan BigQuery veri ambarında afişlere göre filmlerin özetlerini oluşturmak için uzak modellerle ( Gemini modelleri) çıkarım yapmak üzere BigQuery Makine Öğrenimi'ni nasıl kullanacağınızı öğreneceksiniz.

3e75cd7cdc8ffcf6.jpeg

Yukarıdaki resimde: Analiz edeceğiniz film afişi resimlerinden bir örnek.

BigQuery, verilerinizden en yüksek değeri elde etmenize yardımcı olan, tamamen yönetilen, yapay zeka hazır bir veri analizi platformudur. Çok motorlu, çok biçimli ve çok bulutlu olacak şekilde tasarlanmıştır. Temel özelliklerinden biri, çıkarım için BigQuery Makine Öğrenimi'dir. Bu özellik, GoogleSQL sorgularını kullanarak makine öğrenimi (ML) modelleri oluşturmanıza ve çalıştırmanıza olanak tanır.

Google tarafından geliştirilen Gemini, çok formatlı kullanım alanları için tasarlanmış bir üretken yapay zeka modeli ailesidir.

GoogleSQL sorgularını kullanarak makine öğrenimi modellerini çalıştırma

Genellikle büyük veri kümelerinde makine öğrenimi veya yapay zeka (AI) kullanmak için kapsamlı programlama ve makine öğrenimi çerçeveleri hakkında bilgi sahibi olmanız gerekir. Bu durum, çözüm geliştirmeyi her şirketteki küçük bir uzman grubuyla sınırlandırır. SQL uygulayıcıları, çıkarım için BigQuery makine öğrenimi sayesinde model oluşturmak ve LLM'lerden ve Cloud AI API'lerinden sonuç elde etmek için mevcut SQL araçlarını ve becerilerini kullanabilir.

Ön koşullar

Neler öğreneceksiniz?

  • Ortamınızı ve hesabınızı API'leri kullanacak şekilde yapılandırma
  • BigQuery'de Cloud kaynağı bağlantısı oluşturma
  • Film afişi resimleri için BigQuery'de veri kümesi ve nesne tablosu oluşturma
  • BigQuery'de Gemini uzak modellerini oluşturma
  • Gemini modelinden her poster için film özeti sağlamasını isteme
  • Her posterde temsil edilen film için metin gömmeleri oluşturma
  • Film afişi resimlerini veri kümesindeki benzer filmlerle eşleştirmek için BigQuery VECTOR_SEARCH'yi kullanma

Gerekenler

  • Faturalandırmanın etkin olduğu bir Google Cloud Hesabı ve Google Cloud Projesi
  • Chrome gibi bir web tarayıcısı

2. Kurulum ve Gereksinimler

Kendine ait tempoda ortam oluşturma

  1. Google Cloud Console'da oturum açın ve yeni bir proje oluşturun veya mevcut bir projeyi yeniden kullanın. Gmail veya Google Workspace hesabınız yoksa hesap oluşturmanız gerekir.

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • Proje adı, bu projenin katılımcılarının görünen adıdır. Google API'leri tarafından kullanılmayan bir karakter dizesidir. Dilediğiniz zaman güncelleyebilirsiniz.
  • Proje kimliği, tüm Google Cloud projelerinde benzersizdir ve değiştirilemez (ayarlandıktan sonra değiştirilemez). Cloud Console, benzersiz bir dize otomatik olarak oluşturur. Bu dizenin ne olduğu genellikle önemli değildir. Çoğu kod laboratuvarında proje kimliğinize (genellikle PROJECT_ID olarak tanımlanır) referans vermeniz gerekir. Oluşturulan kimliği beğenmezseniz rastgele başka bir kimlik oluşturabilirsiniz. Alternatif olarak, kendi anahtarınızı deneyerek kullanılabilir olup olmadığını görebilirsiniz. Bu adımdan sonra değiştirilemez ve proje boyunca geçerli kalır.
  • Bazı API'lerin kullandığı üçüncü bir değer (Proje Numarası) olduğunu belirtmek isteriz. Bu değerlerin üçü hakkında daha fazla bilgiyi dokümanlar bölümünde bulabilirsiniz.
  1. Ardından, Cloud kaynaklarını/API'lerini kullanmak için Cloud Console'da faturalandırmayı etkinleştirmeniz gerekir. Bu codelab'i çalıştırmak çok pahalı değildir. Bu eğitimden sonra faturalandırılmamak için kaynakları kapatmak istiyorsanız oluşturduğunuz kaynakları veya projeyi silebilirsiniz. Yeni Google Cloud kullanıcıları 300 ABD doları değerinde ücretsiz deneme programına uygundur.

Cloud Shell'i başlatma

Google Cloud, dizüstü bilgisayarınızdan uzaktan çalıştırılabilir. Ancak bu kod laboratuvarında, Cloud'da çalışan bir komut satırı ortamı olan Google Cloud Shell'i kullanacaksınız.

Google Cloud Console'da, sağ üstteki araç çubuğunda Cloud Shell simgesini tıklayın:

55efc1aaa7a4d3ad.png

Ortam sağlanıp bağlantı kurulabilmesi için birkaç saniye beklemeniz gerekir. İşlem tamamlandığında aşağıdakine benzer bir ekran görürsünüz:

7ffe5cbb04455448.png

Bu sanal makinede ihtiyacınız olan tüm geliştirme araçları yüklüdür. 5 GB boyutunda kalıcı bir ana dizin sunar ve Google Cloud üzerinde çalışır. Bu sayede ağ performansını ve kimlik doğrulamayı büyük ölçüde iyileştirir. Bu codelab'deki tüm çalışmalarınızı tarayıcıda yapabilirsiniz. Hiçbir şey yüklemeniz gerekmez.

3. Başlamadan önce

BigQuery'de Gemini modelleriyle çalışmak için API'leri etkinleştirme, Cloud kaynak bağlantısı oluşturma ve Cloud kaynak bağlantısı için hizmet hesabına belirli izinler verme gibi birkaç kurulum adımı vardır. Bu adımlar proje başına bir kez uygulanır ve sonraki birkaç bölümde ele alınacaktır.

API'leri etkinleştirme

Cloud Shell'de proje kimliğinizin ayarlandığından emin olun:

gcloud config set project [YOUR-PROJECT-ID]

PROJECT_ID ortam değişkenini ayarlama:

PROJECT_ID=$(gcloud config get-value project)

Vertex AI modelleri için varsayılan bölgenizi yapılandırın. Vertex AI'ın kullanılabildiği yerler hakkında daha fazla bilgi edinin. Örnekte us-central1 bölgesini kullanıyoruz.

gcloud config set compute/region us-central1

REGION ortam değişkenini ayarlama:

REGION=$(gcloud config get-value compute/region)

Gerekli tüm hizmetleri etkinleştirin:

gcloud services enable bigqueryconnection.googleapis.com \
                       aiplatform.googleapis.com

Yukarıdaki tüm komutlar çalıştırıldıktan sonra beklenen çıkış:

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. Bulut kaynağı bağlantısı oluşturma

Bu görevde, BigQuery'nin Cloud Storage'daki resim dosyalarına erişmesine ve Vertex AI'ya çağrı yapmasına olanak tanıyan bir Cloud Resource bağlantısı oluşturacaksınız.

  1. Google Cloud Console'da Gezinme menüsünde ( Gezinme menüsü simgesi) BigQuery'yi tıklayın.

68ddff3628a55957.png

  1. Bağlantı oluşturmak için + EKLE'yi, ardından Harici veri kaynaklarına bağlantılar'ı tıklayın.

8b70fdd209f540b6.png

  1. Bağlantı türü listesinde Vertex AI uzak modelleri, uzak işlevler ve BigLake (Cloud Resource)'ı seçin.
  2. Bağlantı kimliği alanına bağlantınız için gemini_conn yazın.
  3. Konum türü için Çoklu bölge'yi, ardından açılır menüden ABD çoklu bölgesini seçin.
  4. Diğer ayarlar için varsayılanları kullanın.

deb25a1dd65ee9dd.png

  1. Bağlantı oluştur'u tıklayın.
  2. BAĞLANTILAR'A GİT'i tıklayın.
  3. Bağlantı bilgileri bölmesinde, hizmet hesabı kimliğini bir sonraki görevde kullanmak için bir metin dosyasına kopyalayın. Ayrıca, bağlantının BigQuery Explorer'da projenizin Harici Bağlantılar bölümüne eklendiğini görürsünüz.

5. Bağlantının hizmet hesabına IAM izinleri verme

Bu görevde, Cloud Resource bağlantısının hizmet hesabına bir rol aracılığıyla IAM izinleri vererek Vertex AI hizmetlerine erişmesine olanak tanırsınız.

  1. Google Cloud Console'un Gezinme menüsünde IAM ve Yönetici'yi tıklayın.
  2. Erişim İzni Ver'i tıklayın.
  3. Yeni yöneticiler alanına, daha önce kopyaladığınız hizmet hesabı kimliğini girin.
  4. Rol seçin alanına Vertex AI yazın ve ardından Vertex AI Kullanıcısı rolünü seçin.

55ed0ac6cd92aa1e.png

  1. Kaydet'i tıklayın. Sonuç olarak, hizmet hesabı kimliği artık Vertex AI kullanıcı rolünü içerir.

6. Film afişi resimleri için BigQuery'de veri kümesini ve nesne tablosunu oluşturma

Bu görevde, proje için bir veri kümesi ve poster resimlerini depolamak üzere bu veri kümesinin içinde bir nesne tablosu oluşturacaksınız.

Bu eğitimde kullanılan film afişi resimlerinin veri kümesi, herkese açık bir Google Cloud Storage paketinde depolanmıştır: gs://cloud-samples-data/vertex-ai/dataset-management/datasets/classic-movie-posters

Veri kümesi oluşturma

Bu eğitimde kullanılan tablolar ve modeller dahil olmak üzere veritabanı nesnelerini depolamak için bir veri kümesi oluşturacaksınız.

  1. Google Cloud Console'da Gezinme menüsünü ( Gezinme menüsü simgesi) ve ardından BigQuery'yi seçin.
  2. Gezgin panelinde, proje adınızın yanından İşlemleri göster'i ( Diğer menüsü simgesi) ve ardından Veri kümesi oluştur'u seçin.
  3. Veri kümesi oluştur bölmesinde aşağıdaki bilgileri girin:
  • Veri kümesi kimliği: gemini_demo
  • Konum türü: Çoklu bölge'yi seçin.
  • Çoklu bölge: US'yi seçin
  1. Diğer alanları varsayılan değerlerinde bırakın.

9a787006017d5b47.png

  1. Veri Kümesi Oluştur'u tıklayın.

Sonuç olarak gemini_demo veri kümesi oluşturulur ve BigQuery Explorer'da projenizin altında listelenir.

Nesne tablosunu oluşturma

BigQuery yalnızca yapılandırılmış verileri tutmaz, aynı zamanda nesne tabloları aracılığıyla yapılandırılmamış verilere (ör. poster resimleri) de erişebilir.

Bir Cloud Storage paketini işaretleyerek nesne tablosu oluşturursunuz. Oluşturulan nesne tablosunda, paketteki her nesne için depolama yolu ve meta verisi içeren bir satır bulunur.

Nesne tablosunu oluşturmak için bir SQL sorgusu kullanacaksınız.

  1. Yeni SQL sorgusu oluşturmak için + simgesini tıklayın.
  2. Sorgu düzenleyiciye aşağıdaki sorguyu yapıştırın.
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. Sorguyu çalıştırın. Sonuç olarak, gemini_demo veri kümesine eklenen ve her film afişi resminin URI (Cloud Storage konumu) ile yüklenen bir movie_posters nesne tablosu elde edilir.
  2. Gezgin'de movie_posters simgesini tıklayın ve şemayı ve ayrıntıları inceleyin. Belirli kayıtları incelemek için tabloyu sorgulayabilirsiniz.

7. BigQuery'de Gemini uzak modelini oluşturma

Nesne tablosu oluşturulduğuna göre artık bu tabloyla çalışmaya başlayabilirsiniz. Bu görevde, BigQuery'de kullanılabilmesi için Gemini 1.5 Flash için uzak bir model oluşturacaksınız.

Gemini 1.5 Flash uzaktan kumanda modelini oluşturma

  1. Yeni SQL sorgusu oluşturmak için + simgesini tıklayın.
  2. Sorgu düzenleyiciye aşağıdaki sorguyu yapıştırın ve çalıştırın.
CREATE OR REPLACE MODEL `gemini_demo.gemini_1_5_flash`
REMOTE WITH CONNECTION `us.gemini_conn`
OPTIONS (endpoint = 'gemini-1.5-flash')

Sonuç olarak gemini_1_5_flash modeli oluşturulur ve modeller bölümünde gemini_demo veri kümesine eklendiğini görürsünüz.

  1. Gezgin'de gemini_1_5_flash modelini tıklayın ve ayrıntıları inceleyin.

8. Gemini modelinden her poster için film özeti sağlamasını isteme

Bu görevde, film afişi resimlerini analiz etmek ve her film için özet oluşturmak üzere az önce oluşturduğunuz Gemini uzak modelini kullanacaksınız.

Parametrelerde modele referans vererek ML.GENERATE_TEXT işlevini kullanarak modele istek gönderebilirsiniz.

Gemini 1.5 Flash modeliyle görüntüleri analiz etme

  1. Aşağıdaki SQL ifadesiyle yeni bir sorgu oluşturup çalıştırın:
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)));

Sorgu çalıştırıldığında BigQuery, Gemini modeline nesne tablosunun her satırı için istem gönderir ve görüntüyü belirtilen statik istemle birleştirir. Sonuç olarak movie_posters_results tablosu oluşturulur.

  1. Şimdi sonuçları görüntüleyelim. Aşağıdaki SQL ifadesiyle yeni bir sorgu oluşturup çalıştırın:
SELECT * FROM `gemini_demo.movie_posters_results`

Sonuç olarak, her film afişi için URI (film afişi resminin Cloud Storage konumu) içeren satırlar ve Gemini 1.5 Flash modelinden filmin başlığını ve yayınlandığı yılı içeren bir JSON sonucu elde edilir.

Bu sonuçları, aşağıdaki sorguyu kullanarak daha kolay okunabilir bir şekilde alabilirsiniz. Bu sorgu, film başlığını ve gösterim yılını bu yanıtlardan yeni sütunlara almak için SQL'i kullanır.

  1. Aşağıdaki SQL ifadesiyle yeni bir sorgu oluşturup çalıştırın:
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 )

Sonuç olarak movie_posters_result_formatted tablosu oluşturulur.

  1. Oluşturulan satırları görmek için tabloyu aşağıdaki sorguyla sorgulayabilirsiniz.
SELECT * FROM `gemini_demo.movie_posters_results_formatted`

URI sütunu sonuçlarının aynı kaldığını ancak JSON'un artık her satır için title ve year sütunlarına dönüştürüldüğünü fark edin.

Gemini 1.5 Flash modelinden film özeti isteğinde bulunma

Bu filmlerin her biri hakkında biraz daha bilgi edinmek isterseniz (ör. her filmin metin özetini) ne olur? Bu içerik üretme kullanım alanı, Gemini 1.5 Flash modeli gibi bir LLM modeli için mükemmeldir.

  1. Aşağıdaki sorguyu çalıştırarak her afiş için film özeti sağlamak üzere Gemini 1.5 Flash'ı kullanabilirsiniz:
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));     

Sonuçlardaki ml_generate_text_llm_result alanına dikkat edin. Bu alan, filmin kısa bir özetini içerir.

9. Uzak model kullanarak metin gömmeleri oluşturma

Artık oluşturduğunuz yapılandırılmış verileri deponuzdaki diğer yapılandırılmış verilerle birleştirebilirsiniz. BigQuery'de bulunan herkese açık IMDB veri kümesi, izleyiciler tarafından verilen puanlar ve bazı örnek serbest biçimli kullanıcı yorumları da dahil olmak üzere filmlerle ilgili zengin miktarda bilgi içerir. Bu veriler, film afişleriyle ilgili analizinizi derinleştirmenize ve bu filmlerin nasıl algılandığını anlamanıza yardımcı olabilir.

Verileri birleştirmek için bir anahtara ihtiyacınız vardır. Bu durumda, Gemini modeli tarafından oluşturulan film adları IMDB veri kümesindeki adlarla tam olarak eşleşmeyebilir.

Bu görevde, her iki veri kümesinden de film başlıklarının ve yıllarının metin embeddings'lerini oluşturacak, ardından en yakın IMDB başlığını yeni oluşturduğunuz veri kümesindeki film afişi başlıklarıyla birleştirmek için bu embeddings'ler arasındaki mesafeyi kullanacaksınız.

Uzak modeli oluşturma

Metin yerleştirmelerini oluşturmak için text-multilingual-embedding-002 uç noktasını işaret eden yeni bir uzak model oluşturmanız gerekir.

  1. Aşağıdaki SQL ifadesiyle yeni bir sorgu oluşturup çalıştırın:
CREATE OR REPLACE MODEL `gemini_demo.text_embedding`
REMOTE WITH CONNECTION `us.gemini_conn`
OPTIONS (endpoint = 'text-multilingual-embedding-002')

Sonuç olarak text_embedding modeli oluşturulur ve gezginde gemini_demo veri kümesinin altında görünür.

Posterlerle ilişkili başlık ve yıl için metin yerleştirilmesi oluşturma

Artık bu uzak modeli, her film afişi başlığı ve yılı için bir yerleşik oluşturmak üzere ML.GENERATE_EMBEDDING işleviyle kullanacaksınız.

  1. Aşağıdaki SQL ifadesiyle yeni bir sorgu oluşturup çalıştırın:
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)));

Sonuç olarak, gemini_demo.movie_posters_results_formatted tablosunun her satırı için birleştirilen metin içeriğinin yerleştirilmesini içeren movie_poster_results_embeddings tablosu oluşturulur.

  1. Sorgunun sonuçlarını aşağıdaki yeni sorguyu kullanarak görüntüleyebilirsiniz:
SELECT * FROM `gemini_demo.movie_posters_results_embeddings`

Burada, model tarafından oluşturulan her filmin yerleştirmelerini (sayılarla temsil edilen vektörler) görürsünüz.

IMDB veri kümesinin bir alt kümesi için metin yerleştirmeleri oluşturma

Herkese açık bir IMDB veri kümesinden yalnızca 1935'ten önce yayınlanan filmleri (afiş resimlerinden filmlerin bilinen dönemi) içeren yeni bir veri görünümü oluşturursunuz.

  1. Aşağıdaki SQL ifadesiyle yeni bir sorgu oluşturup çalıştırın:
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)

Sonuç olarak, veri kümesinde 1935'ten önce yayınlanan tüm filmler için bigquery-public-data.imdb.reviews tablosundaki farklı film kimliklerinin, başlıklarının ve yayınlanma yıllarının listesini içeren yeni bir görünüm elde edilir.

  1. Şimdi, önceki bölüme benzer bir işlem kullanarak IMDB'deki film alt kümesi için yerleştirmeler oluşturacaksınız. Aşağıdaki SQL ifadesiyle yeni bir sorgu oluşturup çalıştırın:
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 = '' );

Sorgunun sonucu, gemini_demo.imdb_movies tablosunun metin içeriğinin yerleştirilmelerini içeren bir tablodur.

Artık VECTOR_SEARCH işlevini kullanarak iki tabloyu birleştirebilirsiniz.

  1. Aşağıdaki SQL ifadesiyle yeni bir sorgu oluşturup çalıştırın:
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');

Sorgu, gemini_demo.movie_posters_results_embeddings tablosundaki her satır için gemini_demo.imdb_movies_embeddings tablosundaki en yakın komşuyu bulmak üzere VECTOR_SEARCH işlevini kullanır. En yakın komşu, iki yerleştirmenin ne kadar benzer olduğunu belirleyen kosinüs uzaklığı metriği kullanılarak bulunur.

Bu sorgu, film afişlerinde Gemini 1.5 Flash tarafından tanımlanan filmlerin her biri için IMDB veri kümesinde en benzer filmi bulmak amacıyla kullanılabilir. Örneğin, IMDB herkese açık veri kümesinde "Au Secours!" filmiyle en yakın eşleşmeyi bulmak için bu sorguyu kullanabilirsiniz. Bu sorgu, filme İngilizce başlığı olan "Help!" ile referans verir.

  1. IMDB herkese açık veri kümesinde sağlanan film derecelendirmeleriyle ilgili bazı ek bilgileri birleştirmek için yeni bir sorgu oluşturup çalıştırın:
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

Bu sorgu, önceki sorguya benzer. Belirli bir film afişiyle benzer filmleri bulmak için vektör yerleştirmeler adı verilen özel sayısal gösterimleri kullanmaya devam eder. Ancak, IMDB'nin herkese açık veri kümesinden ayrı bir tablodaki her bir en yakın komşu filmin ortalama puanını ve oy sayısını da birleştirir.

10. Tebrikler

Codelab'i tamamladığınız için tebrikler. BigQuery'de poster resimleriniz için başarılı bir şekilde bir nesne tablosu oluşturdunuz, uzak bir Gemini modeli oluşturdunuz, Gemini modelini resimleri analiz etmeye ve film özetleri sağlamaya teşvik etmek için modeli kullandınız, film başlıkları için metin yerleştirmeleri oluşturdunuz ve bu yerleştirmeleri kullanarak film afişi resimlerini IMDB veri kümesindeki ilgili film başlığıyla eşleştirdiniz.

Ele aldığımız konular

  • Ortamınızı ve hesabınızı API'leri kullanacak şekilde yapılandırma
  • BigQuery'de Cloud kaynağı bağlantısı oluşturma
  • Film afişi resimleri için BigQuery'de veri kümesi ve nesne tablosu oluşturma
  • BigQuery'de Gemini uzak modellerini oluşturma
  • Gemini modelinden her poster için film özeti sağlamasını isteme
  • Her posterde temsil edilen film için metin gömmeleri oluşturma
  • Film afişi resimlerini veri kümesindeki benzer filmlerle eşleştirmek için BigQuery VECTOR_SEARCH'yi kullanma

Sonraki adımlar / Daha fazla bilgi

11. Anket

Bu eğitimi nasıl kullanacaksınız?

Yalnızca okuyun Okuyun ve alıştırmaları tamamlayın