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ınızda afişlere dayalı olarak filmlerin özetlerini oluşturmak için uzak modellerle ( Gemini modelleri) çıkarım yapmak üzere BigQuery Machine Learning'i nasıl kullanacağınızı öğreneceksiniz.

3e75cd7cdc8ffcf6.jpeg

Yukarıda gösterilen: Analiz edeceğiniz film posteri resimlerinin bir örneği.

BigQuery, verilerinizden en iyi şekilde yararlanmanıza yardımcı olan, tamamen yönetilen ve yapay zekaya hazır bir veri analizi platformudur. Çok motorlu, çok formatlı ve çok bulutlu olacak şekilde tasarlanmıştır. Çıkarım için BigQuery Machine Learning, temel özelliklerinden biridir. 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 işlemleri gerçekleştirmek için kapsamlı programlama ve makine öğrenimi çerçeveleri hakkında bilgi gerekir. Bu durum, çözüm geliştirmeyi her şirketteki küçük bir uzman grubuyla sınırlar. Çıkarım için BigQuery Machine Learning ile SQL uzmanları, modeller oluşturmak ve LLM'lerden ve Cloud AI API'lerinden sonuçlar üretmek için mevcut SQL araçlarını ve becerilerini kullanabilir.

Ön koşullar

Neler öğreneceksiniz?

  • API'leri kullanmak için ortamınızı ve hesabınızı yapılandırma
  • BigQuery'de Cloud Resource bağlantısı oluşturma
  • Film posteri resimleri için BigQuery'de veri kümesi ve nesne tablosu oluşturma
  • BigQuery'de Gemini Remote Models oluşturma
  • Gemini modeline her poster için film özeti sağlaması yönünde nasıl istem gireceğiniz
  • Her posterde gösterilen film için metin yerleştirmeleri oluşturma
  • BigQuery VECTOR_SEARCH kullanarak film afişi resimlerini veri kümesindeki yakından ilişkili filmlerle eşleştirme

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

Yönlendirmesiz ortam kurulumu

  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.pnga99b7ace416376c4.png5e3ff691252acf41.png

  • Proje adı, bu projenin katılımcıları için görünen addı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 sabittir (ayarlandıktan sonra değiştirilemez). Cloud Console otomatik olarak benzersiz bir dize oluşturur. Genellikle bu dizenin ne olduğuyla ilgilenmezsiniz. Çoğu codelab'de proje kimliğinize (genellikle PROJECT_ID olarak tanımlanır) başvurmanız gerekir. Oluşturulan kimliği beğenmezseniz başka bir rastgele kimlik oluşturabilirsiniz. Dilerseniz kendi adınızı deneyerek kullanılabilir olup olmadığını kontrol edebilirsiniz. Bu adım tamamlandıktan sonra değiştirilemez ve proje süresince geçerli kalır.
  • Bazı API'lerin kullandığı üçüncü bir değer olan Proje Numarası da vardır. Bu üç değer hakkında daha fazla bilgiyi belgelerde bulabilirsiniz.
  1. Ardından, Cloud kaynaklarını/API'lerini kullanmak için Cloud Console'da faturalandırmayı etkinleştirmeniz gerekir. Bu codelab'i tamamlamak çok fazla zamanınızı almaz. Bu eğitimin ötesinde faturalandırılmayı önlemek için kaynakları kapatmak üzere oluşturduğunuz kaynakları veya projeyi silebilirsiniz. Yeni Google Cloud kullanıcıları 300 ABD doları değerinde ücretsiz deneme programından yararlanabilir.

Cloud Shell'i başlatma

Google Cloud, dizüstü bilgisayarınızdan uzaktan çalıştırılabilir ancak bu codelab'de 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ın temel hazırlığı ve bağlantı kurulması yalnızca birkaç dakikanızı alır. İşlem tamamlandığında aşağıdakine benzer bir sonuç görürsünüz:

7ffe5cbb04455448.png

Bu sanal makine, ihtiyaç duyacağınız tüm geliştirme araçlarıyla birlikte gelir. 5 GB boyutunda kalıcı bir ana dizin sunar ve Google Cloud üzerinde çalışır. Bu sayede ağ performansı ve kimlik doğrulama önemli ölçüde güçlenir. Bu codelab'deki tüm çalışmalarınızı tarayıcıda yapabilirsiniz. Herhangi 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 tek seferliktir 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]

Ortam değişkenini ayarlayın PROJECT_ID:

PROJECT_ID=$(gcloud config get-value project)

Vertex AI modellerinde kullanılacak 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ölgesi kullanılmaktadır.

gcloud config set compute/region us-central1

Ortam değişkenini ayarlayın REGION:

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 görüntü dosyalarına erişmesini ve Vertex AI'a çağrı yapmasını sağlayan bir Cloud Resource bağlantısı oluşturacaksınız.

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

68ddff3628a55957.png

  1. Bağlantı oluşturmak için + EKLE'yi ve 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 Kaynağı) seçeneğini belirleyin.
  2. Bağlantı Kimliği alanına bağlantınız için gemini_conn girin.
  3. Konum türü olarak Çoklu bölge'yi seçin ve açılır listeden ABD çoklu bölgeyi belirleyin.
  4. Diğer ayarlar için varsayılan değerleri kullanın.

deb25a1dd65ee9dd.png

  1. Bağlantı oluştur'u tıklayın.
  2. BAĞLANTIYA GİT'i tıklayın.
  3. Bağlantı bilgileri bölmesinde, hizmet hesabı kimliğini bir metin dosyasına kopyalayın. Bu kimlik, sonraki görevde kullanılacaktır. Ayrıca, bağlantının BigQuery Explorer'daki projenizin Harici Bağlantılar bölümüne eklendiğini de 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şmesini sağlarsınız.

  1. Google Cloud Console'daki gezinme menüsünde IAM & Admin'i (IAM ve Yönetici) tıklayın.
  2. Erişim İzni Ver'i tıklayın.
  3. New principals (Yeni ana hesaplar) alanına, daha önce kopyaladığınız hizmet hesabı kimliğini girin.
  4. Rol seçin alanına Vertex AI yazın ve 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ısı rolünü içerir.

6. Film posteri resimleri için BigQuery'de veri kümesi ve nesne tablosu oluşturma

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

Bu eğitimde kullanılan film posteri resimlerinin veri kümesi, herkese açık bir Google Cloud Storage paketinde depolanı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 de 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ında İş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: ABD'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 tutmakla kalmaz, aynı zamanda nesne tabloları aracılığıyla yapılandırılmamış verilere (ör. poster resimleri) de erişebilir.

Bir Cloud Storage paketini işaret ederek nesne tablosu oluşturursunuz. Oluşturulan nesne tablosunda, paketteki her nesne için depolama yolu ve meta verileriyle birlikte 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, movie_posters adlı bir nesne tablosu gemini_demo veri kümesine eklenir ve her bir film posteri resminin URI (Cloud Storage konumu) ile yüklenir.
  2. Gezgin'de movie_posters simgesini tıklayın ve şemayı ile 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 onunla çalışmaya başlayabilirsiniz. Bu görevde, Gemini 1.5 Flash için BigQuery'de kullanılabilir hâle getirmek üzere uzak bir model oluşturacaksınız.

Gemini 1.5 Flash uzaktan modelini oluşturma

  1. Yeni SQL sorgusu oluşturmak için + simgesini tıklayın.
  2. Sorgu düzenleyicide aşağıdaki sorguyu yapıştırıp uygulayı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. Explorer'da 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 posteri resimlerini analiz etmek ve her film için özetler 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.

Görüntüleri Gemini 1.5 Flash modeliyle 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, nesne tablosunun her satırı için Gemini modelinden istemde bulunur 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 posteri için URI (film posteri resminin Cloud Storage konumu) içeren satırlar ve Gemini 1.5 Flash modelinden alınan film başlığı ile filmin yayınlandığı yılı içeren bir JSON sonucu elde edilir.

Bu sonuçları daha kolay okunabilir bir şekilde almak için sonraki sorguyu kullanabilirsiniz. Bu sorgu, film başlığını ve yayın yılını bu yanıtlardan yeni sütunlara çekmek 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 aşağıdaki sorguyla tabloyu sorgulayabilirsiniz.
SELECT * FROM `gemini_demo.movie_posters_results_formatted`

URI sütun sonuçlarının aynı kaldığını ancak JSON'ın 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 özetleri sağlamasını isteme

Bu filmlerin her biri hakkında biraz daha fazla bilgi, örneğin her filmin metin özetini almak istediğinizi varsayalım. Bu içerik oluşturma kullanım alanı, Gemini 1.5 Flash gibi bir LLM modeli için idealdir.

  1. Aşağıdaki sorguyu çalıştırarak her poster için film özeti sağlamak üzere Gemini 1.5 Flash'i 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çların ml_generate_text_llm_result alanına dikkat edin. Bu alanda filmin kısa bir özeti yer alır.

9. Uzak model kullanarak metin yerleştirmeleri 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 IMDB herkese açık veri kümesi, filmler hakkında zengin bilgiler içerir. Bu bilgiler arasında izleyicilerin verdiği puanlar ve bazı örnek serbest biçimli kullanıcı yorumları da yer alır. Bu veriler, film posterleriyle 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 başlıkları, IMDB veri kümesindeki başlıklarla tam olarak eşleşmeyebilir.

Bu görevde, her iki veri kümesindeki film başlıklarının ve yılların metin yerleştirmelerini oluşturacak, ardından bu yerleştirmeler arasındaki mesafeyi kullanarak en yakın IMDB başlığını yeni oluşturduğunuz veri kümesindeki film posteri başlıklarıyla birleştireceksiniz.

Uzak modeli oluşturma

Metin yerleştirmelerini oluşturmak için text-multilingual-embedding-002 uç noktasına 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 gemini_demo veri kümesinin altındaki gezginde görünür.

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

Artık her bir film posteri başlığı ve yılı için yerleştirme oluşturmak üzere bu uzak modelini 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, movie_poster_results_embeddings tablosu oluşturulur. Bu tabloda, gemini_demo.movie_posters_results_formatted tablosunun her satırı için birleştirilmiş metin içeriğinin yerleştirmeleri bulunur.

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

Burada, model tarafından oluşturulan her film için yerleştirmeleri (sayılarla gösterilen vektörler) görürsünüz.

IMDB veri kümesinin bir alt kümesi için metin gömmeleri oluşturma

Yalnızca 1935'ten önce yayınlanan filmleri (afiş resimlerindeki filmlerin bilinen zaman aralığı) içeren herkese açık bir IMDB veri kümesinden yeni bir veri görünümü oluşturacaksınız.

  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ümesindeki 1935'ten önce yayınlanan tüm filmler için bigquery-public-data.imdb.reviews tablosundan alınan farklı film kimliklerinin, başlıkların ve yayınlanma yılının listelendiği yeni bir görünüm elde edilir.

  1. Şimdi, önceki bölüme benzer bir işlem kullanarak IMDB'deki filmlerin 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ğine ait yerleştirmeleri 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, VECTOR_SEARCH işlevini kullanarak gemini_demo.movie_posters_results_embeddings tablosundaki her satır için gemini_demo.imdb_movies_embeddings tablosunda en yakın komşuyu bulur. En yakın komşu, iki yerleştirmenin ne kadar benzer olduğunu belirleyen kosinüs uzaklığı metriği kullanılarak bulunur.

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

  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 benziyor. Belirli bir film posterine benzer filmleri bulmak için hâlâ vektör yerleştirmeleri adı verilen özel sayısal temsiller kullanılır. Ancak, IMDB kamu veri kümesindeki ayrı bir tablodan en yakın komşu filmlerin her biri için ortalama puan ve oy sayısını da birleştirir.

10. Tebrikler

Codelab'i tamamladığınız için tebrik ederiz. BigQuery'de poster resimleriniz için başarıyla bir nesne tablosu oluşturdunuz, uzak bir Gemini modeli oluşturdunuz, modeli kullanarak Gemini modeline resimleri analiz etmesi ve film özetleri sağlaması için istem gönderdiniz, film başlıkları için metin yerleştirmeleri oluşturdunuz ve bu yerleştirmeleri kullanarak film posteri resimlerini IMDB veri kümesindeki ilgili film başlığıyla eşleştirdiniz.

İşlediğimiz konular

  • API'leri kullanmak için ortamınızı ve hesabınızı yapılandırma
  • BigQuery'de Cloud Resource bağlantısı oluşturma
  • Film posteri resimleri için BigQuery'de veri kümesi ve nesne tablosu oluşturma
  • BigQuery'de Gemini Remote Models oluşturma
  • Gemini modeline her poster için film özeti sağlaması yönünde nasıl istem gireceğiniz
  • Her posterde gösterilen film için metin yerleştirmeleri oluşturma
  • BigQuery VECTOR_SEARCH kullanarak film afişi resimlerini veri kümesindeki yakından ilişkili filmlerle eşleştirme

Sonraki adımlar / daha fazla bilgi

11. Anket

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

Sadece okuyun Okuyun ve alıştırmaları tamamlayın