Analizowanie plakatów filmowych w BigQuery za pomocą modeli zdalnych

Analizowanie plakatów filmowych w BigQuery za pomocą modeli zdalnych

Informacje o tym ćwiczeniu (w Codelabs)

subjectOstatnia aktualizacja: mar 10, 2025
account_circleAutorzy: Alicia Williams

1. Wprowadzenie

W tym module dowiesz się, jak używać systemów uczących się BigQuery do wnioskowania z modelami zdalnymi ( modelami Gemini), aby analizować obrazy plakatów filmowych i generować podsumowania filmów na podstawie tych plakatów bezpośrednio w hurtowni danych BigQuery.

3e75cd7cdc8ffcf6.jpeg

Zdjęcie powyżej: przykład obrazów plakatów filmowych, które będziesz analizować.

BigQuery to w pełni zarządzana platforma do analizy danych zintegrowana z AI, która pomaga w maksymalizacji wartości danych. Została zaprojektowana z myślą o wielosilnikowej, wieloformatowej i wielochmurowej architekturze. Jedną z kluczowych funkcji jest uczenie maszynowe w BigQuery do wnioskowania, które umożliwia tworzenie i uruchamianie modeli systemów uczących się za pomocą zapytań GoogleSQL.

Gemini to rodzina modeli generatywnej AI opracowanych przez Google, które są przeznaczone do zastosowań multimodalnych.

Uruchamianie modeli ML za pomocą zapytań GoogleSQL

Zazwyczaj stosowanie ML lub sztucznej inteligencji (AI) na dużych zbiorach danych wymaga rozległej wiedzy z zakresu programowania i platform systemów uczących się. Ogranicza to rozwój rozwiązań do wąskiej grupy specjalistów w każdej firmie. Dzięki uczeniu maszynowemu w BigQuery do wnioskowania użytkownicy SQL mogą wykorzystywać istniejące narzędzia i umiejętności związane z SQL do tworzenia modeli oraz generowania wyników z modeli LLM i interfejsów Cloud AI API.

Wymagania wstępne

Czego się nauczysz

  • Jak skonfigurować środowisko i konto do korzystania z interfejsów API
  • Jak utworzyć połączenie z zasobem Cloud w BigQuery
  • Jak utworzyć zbiór danych i tabelę obiektów w BigQuery dla obrazów plakatów filmowych
  • Jak utworzyć modele zdalne Gemini w BigQuery
  • Jak poprosić model Gemini o streszczenia filmów dla każdego plakatu
  • Jak wygenerować reprezentacje tekstowe dla filmu reprezentowanego przez każdy plakat
  • Jak używać BigQuery VECTOR_SEARCH do dopasowywania obrazów plakatów filmowych do filmów o podobnych treściach w zbiorze danych

Czego potrzebujesz

  • Konto Google Cloud i projekt Google Cloud z włączonymi płatnościami
  • przeglądarka internetowa, np. Chrome;

2. Konfiguracja i wymagania

Konfiguracja środowiska w samodzielnym tempie

  1. Zaloguj się w konsoli Google Cloud i utwórz nowy projekt lub użyj istniejącego. Jeśli nie masz jeszcze konta Gmail ani Google Workspace, musisz je utworzyć.

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • Nazwa projektu to wyświetlana nazwa uczestników tego projektu. Jest to ciąg znaków, którego nie używają interfejsy API Google. Zawsze możesz ją zaktualizować.
  • Identyfikator projektu jest niepowtarzalny we wszystkich projektach Google Cloud i nie można go zmienić (po ustawieniu). Konsola Cloud automatycznie generuje unikalny ciąg znaków. Zwykle nie ma znaczenia, jaki to ciąg. W większości laboratoriów z kodem musisz podać identyfikator projektu (zwykle oznaczony jako PROJECT_ID). Jeśli nie podoba Ci się wygenerowany identyfikator, możesz wygenerować inny losowy. Możesz też spróbować użyć własnego adresu e-mail, aby sprawdzić, czy jest on dostępny. Po wykonaniu tego kroku nie można go zmienić. Pozostanie on na stałe w ramach projektu.
  • Informacyjnie: istnieje jeszcze 3 wartość, numer projektu, której używają niektóre interfejsy API. Więcej informacji o wszystkich 3 wartościach znajdziesz w dokumentacji.
  1. Następnie musisz włączyć rozliczenia w konsoli Cloud, aby korzystać z zasobów i interfejsów API Cloud. Przejście przez ten samouczek nie będzie kosztowne. Aby wyłączyć zasoby i uniknąć obciążenia opłatami po zakończeniu samouczka, możesz usunąć utworzone zasoby lub usunąć projekt. Nowi użytkownicy Google Cloud mogą skorzystać z bezpłatnego okresu próbnego, w którym mają do dyspozycji środki w wysokości 300 USD.

Uruchomienie Cloud Shell

Google Cloud można obsługiwać zdalnie z laptopa, ale w tym przypadku będziesz korzystać z Google Cloud Shell, czyli środowiska wiersza poleceń działającego w chmurze.

W konsoli Google Cloud kliknij ikonę Cloud Shell na pasku narzędzi w prawym górnym rogu:

55efc1aaa7a4d3ad.png

Uzyskanie dostępu do środowiska i połączenie się z nim powinno zająć tylko kilka chwil. Po jego zakończeniu powinno wyświetlić się coś takiego:

7ffe5cbb04455448.png

Ta maszyna wirtualna zawiera wszystkie potrzebne narzędzia dla programistów. Zawiera stały katalog domowy o pojemności 5 GB i działa w Google Cloud, co znacznie poprawia wydajność sieci i uwierzytelnianie. Wszystkie zadania w tym CodeLab możesz wykonać w przeglądarce. Nie musisz niczego instalować.

3. Zanim zaczniesz

Aby pracować z modelami Gemini w BigQuery, musisz wykonać kilka czynności konfiguracyjnych, takich jak włączenie interfejsów API, utworzenie połączenia z zasobem Cloud i przyznanie kontu usługi dla połączenia z zasobem Cloud określonych uprawnień. Te kroki należy wykonać tylko raz na projekt. Opiszemy je w kolejnych sekcjach.

włączyć interfejsy API,

W Cloud Shell sprawdź, czy identyfikator projektu jest skonfigurowany:

gcloud config set project [YOUR-PROJECT-ID]

Ustawianie zmiennej środowiskowej PROJECT_ID:

PROJECT_ID=$(gcloud config get-value project)

Skonfiguruj domyślny region, który ma być używany w przypadku modeli Vertex AI. Dowiedz się więcej o dostępnych lokalizacjach Vertex AI. W tym przykładzie używamy regionu us-central1.

gcloud config set compute/region us-central1

Ustawianie zmiennej środowiskowej REGION:

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

Włącz wszystkie niezbędne usługi:

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

Oczekiwane dane wyjściowe po uruchomieniu wszystkich powyższych poleceń:

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. Tworzenie połączenia z zasobem Cloud

W tym zadaniu utworzysz połączenie z zasobem Cloud, które umożliwi BigQuery dostęp do plików obrazów w Cloud Storage i wybieranie funkcji w Vertex AI.

  1. W Konsoli Google Cloud w Menu nawigacyjnym ( Ikona menu nawigacyjnego) kliknij BigQuery.

68ddff3628a55957.png

  1. Aby utworzyć połączenie, kliknij kolejno + DODAJPołączenia z zewnętrznych źródeł danych.

8b70fdd209f540b6.png

  1. Na liście Typ połączenia wybierz Modele zdalne Vertex AI, funkcje zdalne oraz BigLake (zasób Cloud).
  2. W polu Identyfikator połączenia wpisz gemini_conn.
  3. Jako Typ lokalizacji wybierz Wiele regionów, a następnie w menu wybierz US (Stany Zjednoczone) wiele regionów.
  4. W pozostałych ustawieniach użyj wartości domyślnych.

deb25a1dd65ee9dd.png

  1. Kliknij Utwórz połączenie.
  2. Kliknij PRZEJDŹ DO POŁĄCZENIA.
  3. W panelu Informacje o połączeniu skopiuj identyfikator konta usługi do pliku tekstowego, aby użyć go w następnym zadaniu. Zobaczysz też, że połączenie zostało dodane w sekcji Połączenia zewnętrzne w eksploratorze BigQuery.

5. Przyznawanie uprawnień IAM do konta usługi połączenia

W tym zadaniu przyznasz uprawnienia IAM kontu usługi połączenia z zasobem Cloud za pomocą roli, aby umożliwić mu dostęp do usług Vertex AI.

  1. W konsoli Google Cloud w Menu nawigacyjnym kliknij Administracja.
  2. Kliknij Przyznaj dostęp.
  3. W polu Nowe podmioty zabezpieczeń wpisz wcześniej skopiowany identyfikator konta usługi.
  4. W polu Wybierz rolę wpisz Vertex AI, a następnie wybierz rolę Użytkownik Vertex AI.

55ed0ac6cd92aa1e.png

  1. Kliknij Zapisz. W efekcie identyfikator konta usługi zawiera teraz rolę Użytkownik Vertex AI.

6. Utwórz zbiór danych i tabelę obiektów w BigQuery dla obrazów plakatów filmowych.

W tym zadaniu utworzysz zbiór danych dla projektu i w jego ramach tabelę obiektów, w której będą przechowywane obrazy plakatów.

Zbiór danych z obrazami plakatów filmowych użytych w tym samouczku jest przechowywany w publicznym zasobniku Google Cloud Storage: gs://cloud-samples-data/vertex-ai/dataset-management/datasets/classic-movie-posters

Tworzenie zbioru danych

Utwórz zbiór danych, w którym będą przechowywane obiekty bazy danych, w tym tabele i modele używane w tym samouczku.

  1. W konsoli Google Cloud kliknij Menu nawigacyjne ( Ikona menu nawigacyjnego), a następnie wybierz BigQuery.
  2. W panelu Eksplorator obok nazwy projektu kliknij Wyświetl działania ( Ikona menu Więcej), a potem Utwórz zbiór danych.
  3. W panelu Utwórz zbiór danych podaj te informacje:
  • Identyfikator zbioru danych: gemini_demo
  • Typ lokalizacji: wybierz Wiele regionów.
  • Wiele regionów: wybierz US
  1. W pozostałych polach pozostaw wartości domyślne.

9a787006017d5b47.png

  1. Kliknij Utwórz zbiór danych.

W efekcie tworzy się zbiór danych gemini_demo, który jest widoczny w eksploratorze BigQuery pod Twoim projektem.

Tworzenie tabeli obiektów

BigQuery przechowuje nie tylko dane uporządkowane, ale też może uzyskiwać dostęp do danych nieuporządkowanych (np. obrazów plakatów) za pomocą tabel obiektów.

Tworzysz tabelę obiektów, wskazując zasobnik Cloud Storage. Wynikiem jest tabela obiektów zawierająca po jednym wierszu dla każdego obiektu z zasobnika wraz z ścieżką w Cloud Storage i metadanymi.

Aby utworzyć tabelę obiektów, użyjesz zapytania SQL.

  1. Kliknij +, aby utworzyć nowe zapytanie SQL.
  2. W edytorze zapytań wklej zapytanie poniżej.
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. Wykonaj zapytanie. W rezultacie do zbioru danych gemini_demo zostanie dodana tabela obiektów movie_posters, która zostanie załadowana z URI (lokalizacja w Cloud Storage) każdego obrazu plakatu filmu.
  2. W Eksploratorze kliknij movie_posters i sprawdź schemat oraz szczegóły. Możesz użyć zapytania do tabeli, aby przejrzeć konkretne rekordy.

7. Tworzenie modelu zdalnego Gemini w BigQuery

Po utworzeniu tabeli obiektów możesz z nią pracować. W tym zadaniu utworzysz model zdalny dla Gemini 1.5 Flash, aby udostępnić go w BigQuery.

Tworzenie modelu zdalnego Gemini 1.5 Flash

  1. Kliknij +, aby utworzyć nowe zapytanie SQL.
  2. W edytorze zapytań wklej poniższe zapytanie i go uruchom.
CREATE OR REPLACE MODEL `gemini_demo.gemini_1_5_flash`
REMOTE WITH CONNECTION
`us.gemini_conn`
OPTIONS
(endpoint = 'gemini-1.5-flash')

W efekcie tworzy się model gemini_1_5_flash, który jest dodawany do zbioru danych gemini_demo w sekcji Modele.

  1. W Eksploratorze kliknij model gemini_1_5_flash i sprawdź szczegóły.

8. promptowanie modelu Gemini w celu podania podsumowania filmu dla każdego plakatu;

W tym zadaniu użyjesz utworzonego przed chwilą zdalnego modelu Gemini, aby przeanalizować obrazy plakatów filmowych i wygenerować podsumowania dotyczące każdego filmu.

Żądania do modelu możesz wysyłać, używając funkcji ML.GENERATE_TEXT, która odwołuje się do modelu w parametrach.

Analizować obrazy za pomocą modelu Gemini 1.5 Flash

  1. Utwórz i uruchom nowe zapytanie za pomocą tego polecenia 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)));

Gdy zapytanie jest wykonywane, BigQuery wysyła prompt do modelu Gemini dla każdego wiersza tabeli obiektów, łącząc obraz z określonym promptem statycznym. W efekcie zostanie utworzona tabela movie_posters_results.

  1. Teraz wyświetlimy wyniki. Utwórz i uruchom nowe zapytanie za pomocą tego polecenia SQL:
SELECT * FROM `gemini_demo.movie_posters_results`

Wynikiem są wiersze z plakatem każdego filmu z wartością URI (lokalizacja w Cloud Storage obrazu plakatu filmu) oraz wynik JSON zawierający tytuł filmu i rok jego wydania z modelu Gemini 1.5 Flash.

Możesz wyświetlić te wyniki w bardziej czytelnej formie, używając kolejnego zapytania. To zapytanie używa SQL do wyodrębniania tytułu filmu i roku jego wydania z tych odpowiedzi i umieszczania ich w nowych kolumnach.

  1. Utwórz i uruchom nowe zapytanie za pomocą tego polecenia 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 )

W efekcie zostanie utworzona tabela movie_posters_result_formatted.

  1. Aby zobaczyć utworzone wiersze, możesz wysłać do tabeli zapytanie opisane poniżej.
SELECT * FROM `gemini_demo.movie_posters_results_formatted`

Zwróć uwagę, że wyniki w kolumnie URI pozostają takie same, ale dane w formacie JSON są teraz konwertowane do kolumn titleyear w każdym wierszu.

Wysyłanie promptów do modelu Gemini 1.5 Flash w celu uzyskania podsumowań filmów

A co, jeśli chcesz uzyskać więcej informacji o każdym z tych filmów, np. ich tekstowe streszczenia? Ten przypadek użycia generowania treści doskonale nadaje się do modelu LLM, takiego jak model Gemini 1.5 Flash.

  1. Możesz użyć Gemini 1.5 Flash, aby wyświetlić podsumowanie filmu dla każdego plakatu. Aby to zrobić, uruchom to zapytanie:
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));    

Zwróć uwagę na pole ml_generate_text_llm_result w wynikach, które zawiera krótkie podsumowanie filmu.

9. Generowanie wektorów tekstu za pomocą modelu zdalnego

Teraz możesz złączać utworzone przez siebie uporządkowane dane z innymi uporządkowanymi danymi w swoim magazynie danych. Publiczny zbiór danych IMDB dostępny w BigQuery zawiera obszerną ilość informacji o filmach, w tym oceny widzów i niektóre przykładowe opinie użytkowników. Te dane mogą pomóc Ci dokładniej przeanalizować plakaty filmowe i zrozumieć, jak te filmy były odbierane.

Aby złączyć dane, potrzebujesz klucza. W takim przypadku tytuły filmów wygenerowane przez model Gemini mogą nie być idealnie zgodne z tytułami w zbiorze danych IMDB.

W tym zadaniu wygenerujesz tekstowe zagęszczenia tytułów i lat filmów z obu zbiorów danych, a następnie użyjesz odległości między tymi zagęszczeniami, aby połączyć najbliższy tytuł IMDB z tytułami plakatów filmowych ze swojego nowo utworzonego zbioru danych.

Tworzenie modelu zdalnego

Aby wygenerować ukryte reprezentacje tekstu, musisz utworzyć nowy model zdalny wskazujący na punkt końcowy text-multilingual-embedding-002.

  1. Utwórz i uruchom nowe zapytanie za pomocą tego polecenia SQL:
CREATE OR REPLACE MODEL `gemini_demo.text_embedding`
REMOTE WITH CONNECTION
`us.gemini_conn`
OPTIONS
(endpoint = 'text-multilingual-embedding-002')

W efekcie tworzy się model text_embedding, który pojawia się w eksploratorze pod zbiorem danych gemini_demo.

Generowanie wektorów tekstowych dla tytułu i roku powiązanych z plakatami

Teraz użyjesz tego modelu zdalnego za pomocą funkcji ML.GENERATE_EMBEDDING, aby utworzyć osadzenie dla każdego tytułu i roku plakatu filmu.

  1. Utwórz i uruchom nowe zapytanie za pomocą tego polecenia 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)));

W efekcie tworzy się tabela movie_poster_results_embeddings zawierająca wskaźniki zastępcze dla treści tekstowych złączonych w każdym wierszu tabeli gemini_demo.movie_posters_results_formatted.

  1. Wyniki zapytania możesz wyświetlić, używając nowego zapytania:
SELECT * FROM `gemini_demo.movie_posters_results_embeddings`

Tutaj możesz zobaczyć wstępną reprezentację (wektory reprezentowane przez liczby) każdego filmu wygenerowanego przez model.

Generowanie wektorów tekstowych dla podzbioru zbioru danych IMDB

Utworzysz nowy widok danych z publicznego zbioru danych IMDB, który zawiera tylko filmy wydane przed 1935 r. (znany okres czasu filmów z plakatów).

  1. Utwórz i uruchom nowe zapytanie za pomocą tego polecenia 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)

W efekcie powstaje nowy widok zawierający listę różnych identyfikatorów filmów, tytułów i lat premiery z tabeli bigquery-public-data.imdb.reviews dla wszystkich filmów w zbiorze danych wydanych przed 1935 r.

  1. Teraz utwórz wektory dla podzbioru filmów z IMDB, korzystając z procesu podobnego do tego z poprzedniej sekcji. Utwórz i uruchom nowe zapytanie za pomocą tego polecenia 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
= '' );

Wynikiem zapytania jest tabela zawierająca uczenie maszynowe dla zawartości tekstowej tabeli gemini_demo.imdb_movies.

Teraz możesz złączyć obie tabele za pomocą funkcji VECTOR_SEARCH.

  1. Utwórz i uruchom nowe zapytanie za pomocą tego polecenia 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');

Zapytanie używa funkcji VECTOR_SEARCH, aby znaleźć najbliższego sąsiada w tabeli gemini_demo.imdb_movies_embeddings dla każdego wiersza w tabeli gemini_demo.movie_posters_results_embeddings. Najbliższy sąsiad jest znajdowany za pomocą miary odległości cosinusa, która określa, jak podobne są 2 wektory dystrybucyjne.

Za pomocą tego zapytania można znaleźć film najbardziej podobny do każdego z filmów zidentyfikowanych przez model Gemini 1.5 Flash na podstawie plakatów filmowych. Za pomocą tego zapytania możesz na przykład znaleźć najbliższe dopasowanie do filmu „Au Secours!” w publicznym zbiorze danych IMDB, który zawiera odniesienie do tego filmu pod angielskim tytułem „Help!”.

  1. Utwórz i wykonaj nowe zapytanie, aby złączyć dodatkowe informacje o ocenianiu filmów dostępne w publicznym zbiorze danych 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

To zapytanie jest podobne do poprzedniego. Nadal używa specjalnych reprezentacji numerycznych zwanych wektorowymi reprezentacjami, aby znajdować filmy podobne do danego plakatu. Łączy ona jednak także średnią ocenę i liczbę głosów dla każdego filmu z najbliższego sąsiedztwa z osobnej tabeli w publicznym zbiorze danych IMDB.

10. Gratulacje

Gratulujemy ukończenia ćwiczenia. Udało Ci się utworzyć w BigQuery tabelę obiektów dla obrazów plakatów, utworzyć zdalny model Gemini, użyć tego modelu do analizowania obrazów i podać podsumowania filmów, wygenerować tekstowe osadki tytułów filmów i użyć tych osadzonych danych do dopasowywania obrazów plakatów filmów do powiązanych tytułów filmów w zbiorze danych IMDB.

Omówione zagadnienia

  • Jak skonfigurować środowisko i konto do korzystania z interfejsów API
  • Jak utworzyć połączenie z zasobem Cloud w BigQuery
  • Jak utworzyć zbiór danych i tabelę obiektów w BigQuery dla obrazów plakatów filmowych
  • Jak utworzyć modele zdalne Gemini w BigQuery
  • Jak poprosić model Gemini o streszczenia filmów dla każdego plakatu
  • Jak wygenerować reprezentacje tekstowe dla filmu reprezentowanego przez każdy plakat
  • Jak używać BigQuery VECTOR_SEARCH do dopasowywania obrazów plakatów filmowych do filmów o podobnych treściach w zbiorze danych

Kolejne kroki / Więcej informacji

11. Ankieta

Jak będziesz korzystać z tego samouczka?