Uzak modellerle BigQuery'de film afişlerini analiz etme

1. Giriş

Bu laboratuvarda, film posteri resimlerini analiz etmek ve posterlere göre filmlerin özetlerini doğrudan BigQuery veri ambarınızda oluşturmak için uzak modellerle ( Gemini modelleri) çıkarım yapmak üzere BigQuery Machine Learning'i kullanmayı öğreneceksiniz.

3e75cd7cdc8ffcf6.jpeg

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

BigQuery, verilerinizden en iyi şekilde yararlanmanıza yardımcı olan, tümüyle yönetilen ve yapay zekaya hazır bir veri analizi platformudur. Çok motorlu, çok formatlı ve çoklu bulut 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'i kullanan SQL uzmanları, model oluşturmak ve LLM'lerden ve Cloud AI API'lerinden sonuç ü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 uzak modellerini oluşturma
  • Gemini modeline her poster için film özeti sağlaması yönünde istem girme
  • Her posterde gösterilen film için metin yerleştirmeleri oluşturma
  • BigQuery VECTOR_SEARCH kullanarak film posteri 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.png

a99b7ace416376c4.png

5e3ff691252acf41.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. Bu bilgiyi istediğiniz zaman güncelleyebilirsiniz.
  • Proje kimliği, tüm Google Cloud projelerinde benzersizdir ve sabittir (ayarlandıktan sonra değiştirilemez). Cloud Console, benzersiz bir dizeyi otomatik olarak 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 neredeyse hiç maliyetli değildir. 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ğlanması 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ını içerir. 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'da ç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 Connection hizmet hesabına bir rol aracılığıyla IAM izinleri vererek Vertex AI hizmetlerine erişmesini sağlarsınız.

  1. Google Cloud Console'un 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ı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.
  • Çok bölgeli: 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 bir 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üzenleyicide 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 nesne tablosu gemini_demo veri kümesine eklenir ve her 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 ç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 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 resmi 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 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ütunundaki sonuçları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 modeli gibi bir LLM modeli için mükemmeldir.

  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ı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 modeli ML.GENERATE_EMBEDDING işleviyle birlikte 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 tablosunun her satırı için birleştirilmiş metin içeriğinin yerleştirmelerini içeren gemini_demo.movie_posters_results_formatted tablosu oluşturulur.

  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ılları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 herkese açık 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 afişine 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 IMDB veri kümesindeki film posteri resimlerini 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 uzak modellerini oluşturma
  • Gemini modeline her poster için film özeti sağlaması yönünde istem girme
  • Her posterde gösterilen film için metin yerleştirmeleri oluşturma
  • BigQuery VECTOR_SEARCH kullanarak film posteri 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