Filmplakate in BigQuery mithilfe von Remote-Modellen analysieren

1. Einführung

In diesem Lab lernen Sie, wie Sie BigQuery Machine Learning für Inferenzen mit Remote-Modellen ( Gemini-Modellen) verwenden, um Bilder von Filmplakaten zu analysieren und Zusammenfassungen der Filme basierend auf den Plakaten direkt in Ihrem BigQuery-Data Warehouse zu erstellen.

3e75cd7cdc8ffcf6.jpeg

Oben abgebildet: Eine Auswahl der Filmplakate, die Sie analysieren werden.

BigQuery ist eine vollständig verwaltete, KI-fähige Datenanalyseplattform, mit der Sie die Wertschöpfung aus Daten maximieren können. Sie ist als Multi-Engine-, Multi-Format- und Multi-Cloud-Plattform konzipiert. Ein zentrales Feature ist BigQuery Machine Learning für Inferenzen. Damit können Sie ML-Modelle (Machine Learning) mithilfe von GoogleSQL-Abfragen erstellen und ausführen.

Gemini ist eine Reihe von auf generativer KI basierenden Modellen, die von Google entwickelt wurden und auf multimodale Anwendungsfälle ausgelegt sind.

ML-Modelle mit GoogleSQL-Abfragen ausführen

Normalerweise erfordert die Anwendung von ML oder künstlicher Intelligenz (KI) für große Datasets umfangreiche Programmier- und ML-Framework-Kenntnisse. Das beschränkt die Entwicklung von Lösungen in den meisten Unternehmen auf einen kleinen Personenkreis. Mit BigQuery Machine Learning für Inferenzen können SQL-Anwender vorhandene SQL-Tools und ‑Fertigkeiten nutzen, um Modelle zu erstellen und Ergebnisse aus LLMs und Cloud AI APIs zu generieren.

Voraussetzungen

Lerninhalte

  • Umgebung und Konto für die Verwendung von APIs konfigurieren
  • Cloud-Ressourcenverbindung in BigQuery erstellen
  • Dataset und Objekttabelle in BigQuery für Bilder von Filmplakaten erstellen
  • Gemini-Remote-Modelle in BigQuery erstellen
  • Prompts an das Gemini-Modell senden, um für jedes Plakat eine Zusammenfassung des Films zu generieren
  • Texteinbettungen für die auf den Plakaten abgebildeten Filme erstellen
  • Mit BigQuery VECTOR_SEARCH Bilder von Filmplakaten mit ähnlichen Filmen im Dataset abgleichen

Voraussetzungen

  • Ein Google Cloud-Konto und ein Google Cloud-Projekt mit aktivierter Abrechnung
  • Ein Webbrowser wie Chrome

2. Einrichtung und Anforderungen

Umgebung zum selbstbestimmten Lernen einrichten

  1. Melden Sie sich in der Google Cloud Console an und erstellen Sie ein neues Projekt oder verwenden Sie ein vorhandenes. Wenn Sie noch kein Gmail- oder Google Workspace-Konto haben, müssen Sie eines erstellen.

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • Der Projektname ist der Anzeigename für die Teilnehmer dieses Projekts. Es handelt sich um einen String, der nicht von Google APIs verwendet wird. Sie können sie jederzeit aktualisieren.
  • Die Projekt-ID ist für alle Google Cloud-Projekte eindeutig und unveränderlich (kann nach dem Festlegen nicht mehr geändert werden). In der Cloud Console wird automatisch ein eindeutiger String generiert. Normalerweise ist es nicht wichtig, wie dieser String aussieht. In den meisten Codelabs müssen Sie auf Ihre Projekt-ID verweisen (in der Regel als PROJECT_ID angegeben). Wenn Ihnen die generierte ID nicht gefällt, können Sie eine andere zufällige ID generieren. Alternativ können Sie es mit einem eigenen Namen versuchen und sehen, ob er verfügbar ist. Sie kann nach diesem Schritt nicht mehr geändert werden und bleibt für die Dauer des Projekts bestehen.
  • Zur Information: Es gibt einen dritten Wert, die Projektnummer, die von einigen APIs verwendet wird. Weitere Informationen zu diesen drei Werten
  1. Als Nächstes müssen Sie die Abrechnung in der Cloud Console aktivieren, um Cloud-Ressourcen/-APIs zu verwenden. Die Durchführung dieses Codelabs kostet wenig oder gar nichts. Wenn Sie Ressourcen herunterfahren möchten, um Kosten zu vermeiden, die über diese Anleitung hinausgehen, können Sie die erstellten Ressourcen oder das Projekt löschen. Neue Google Cloud-Nutzer können am kostenlosen Testzeitraum mit einem Guthaben von 300$ teilnehmen.

Cloud Shell starten

Während Sie Google Cloud von Ihrem Laptop aus per Fernzugriff nutzen können, wird in diesem Codelab Google Cloud Shell verwendet, eine Befehlszeilenumgebung, die in der Cloud ausgeführt wird.

Klicken Sie in der Google Cloud Console rechts oben in der Symbolleiste auf das Cloud Shell-Symbol:

55efc1aaa7a4d3ad.png

Die Bereitstellung und Verbindung mit der Umgebung sollte nur wenige Augenblicke dauern. Anschließend sehen Sie in etwa Folgendes:

7ffe5cbb04455448.png

Diese virtuelle Maschine verfügt über sämtliche Entwicklertools, die Sie benötigen. Sie bietet ein Basisverzeichnis mit 5 GB nichtflüchtigem Speicher und läuft in Google Cloud, was die Netzwerkleistung und Authentifizierung erheblich verbessert. Alle Aufgaben in diesem Codelab können in einem Browser ausgeführt werden. Sie müssen nichts installieren.

3. Hinweis

Für die Arbeit mit Gemini-Modellen in BigQuery sind einige Einrichtungsschritte erforderlich, darunter das Aktivieren von APIs, das Erstellen einer Cloud-Ressourcenverbindung und das Erteilen bestimmter Berechtigungen für das Dienstkonto für die Cloud-Ressourcenverbindung. Diese Schritte sind einmalig pro Projekt und werden in den nächsten Abschnitten behandelt.

APIs aktivieren

Prüfen Sie in Cloud Shell, ob Ihre Projekt-ID eingerichtet ist:

gcloud config set project [YOUR-PROJECT-ID]

Legen Sie die Umgebungsvariable PROJECT_ID fest:

PROJECT_ID=$(gcloud config get-value project)

Konfigurieren Sie die Standardregion, die für die Vertex AI-Modelle verwendet werden soll. Weitere Informationen zu verfügbaren Standorten für Vertex AI In diesem Beispiel verwenden wir die Region us-central1.

gcloud config set compute/region us-central1

Legen Sie die Umgebungsvariable REGION fest:

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

Aktivieren Sie alle erforderlichen Dienste:

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

Erwartete Ausgabe nach Ausführung aller oben genannten Befehle:

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-Ressourcenverbindung erstellen

In dieser Aufgabe erstellen Sie eine Cloud-Ressourcenverbindung, mit der BigQuery auf Bilddateien in Cloud Storage zugreifen und Vertex AI aufrufen kann.

  1. Klicken Sie in der Google Cloud Console im Navigationsmenü ( Symbol für Navigationsmenü) auf BigQuery.

68ddff3628a55957.png

  1. Klicken Sie auf + HINZUFÜGEN und dann auf Verbindungen zu externen Datenquellen, um eine Verbindung zu erstellen.

8b70fdd209f540b6.png

  1. Wählen Sie in der Liste „Verbindungstyp“ die Option Vertex AI-Remote-Modelle, Remote-Funktionen und BigLake (Cloud-Ressource) aus.
  2. Geben Sie für Ihre Verbindung im Feld „Verbindungs-ID“ gemini_conn ein.
  3. Wählen Sie als Standorttyp die Option Multiregional und dann USA (multiregional) aus.
  4. Verwenden Sie für die anderen Optionen jeweils die Standardeinstellung.

deb25a1dd65ee9dd.png

  1. Klicken Sie auf Verbindung erstellen.
  2. Klicken Sie auf ZUR VERBINDUNG.
  3. Kopieren Sie aus dem Bereich „Verbindungsinformationen“ die Dienstkonto-ID in eine Textdatei. Sie werden sie für die nächste Aufgabe benötigen. Die Verbindung ist ebenfalls im BigQuery Explorer Ihres Projekts im Abschnitt „Externe Verbindungen“ zu finden.

5. Dem Dienstkonto der Verbindung IAM-Berechtigungen gewähren

In dieser Aufgabe gewähren Sie dem Dienstkonto der Cloud-Ressourcenverbindung eine Rolle mit IAM-Berechtigungen, mit denen der Zugriff auf Vertex AI-Dienste möglich ist.

  1. Klicken Sie in der Google Cloud Console im Navigationsmenü auf IAM und Verwaltung.
  2. Klicken Sie auf Zugriff gewähren.
  3. Geben Sie im Feld Neue Hauptkonten die Dienstkonto-ID ein, die Sie zuvor kopiert haben.
  4. Wählen Sie im Feld „Rolle auswählen“ die Option Vertex AI und dann Vertex AI User aus.

55ed0ac6cd92aa1e.png

  1. Klicken Sie auf Speichern. Die Dienstkonto-ID beinhaltet nun die Rolle „Vertex AI User“.

6. Dataset und Objekttabelle in BigQuery für Bilder von Filmplakaten erstellen

In dieser Aufgabe erstellen Sie ein Dataset für das Projekt und eine Objekttabelle darin, um die Plakatbilder zu speichern.

Das in dieser Anleitung verwendete Dataset mit Filmposterbildern wird in einem öffentlichen Google Cloud Storage-Bucket gespeichert: gs://cloud-samples-data/vertex-ai/dataset-management/datasets/classic-movie-posters

Dataset erstellen

Sie erstellen ein Dataset, um Datenbankobjekte zu speichern, einschließlich Tabellen und Modelle, die in dieser Anleitung verwendet werden.

  1. Klicken Sie in der Google Cloud Console auf das Navigationsmenü ( Symbol für Navigationsmenü) und dann auf BigQuery.
  2. Wählen Sie im Bereich Explorer neben Ihrem Projektnamen die Option Aktionen ansehen ( Symbol „Dreipunkt-Menü“) und dann Dataset erstellen aus.
  3. Geben Sie im Bereich Dataset erstellen folgende Informationen ein:
  • Dataset-ID: gemini_demo
  • Wählen Sie als Standorttyp Mehrere Regionen aus.
  • Multiregional: USA auswählen
  1. Übernehmen Sie für alle anderen Felder die Standardeinstellung.

9a787006017d5b47.png

  1. Klicken Sie auf Dataset erstellen.

Das Dataset gemini_demo ist nun erstellt und wird im BigQuery Explorer unter Ihrem Projekt aufgeführt.

Objekttabelle erstellen

BigQuery enthält nicht nur strukturierte Daten, sondern kann über Objekttabellen auch auf unstrukturierte Daten wie die Posterbilder zugreifen.

Sie erstellen eine Objekttabelle, indem Sie auf einen Cloud Storage-Bucket verweisen. Die resultierende Objekttabelle enthält eine Zeile für jedes Objekt aus dem Bucket mit seinem Speicherpfad und seinen Metadaten.

Zum Erstellen der Objekttabelle verwenden Sie eine SQL-Abfrage.

  1. Klicken Sie auf das Symbol +, um eine neue SQL-Abfrage zu erstellen.
  2. Kopieren Sie die folgende Abfrage und fügen Sie sie in den Abfrageeditor ein.
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. Führen Sie die Abfrage aus. Die Objekttabelle movie_posters wird dem Dataset gemini_demo hinzugefügt und mit dem URI (dem Cloud Storage-Speicherort) der Filmplakatbilder gefüllt.
  2. Klicken Sie im Explorer auf movie_posters und prüfen Sie das Schema und die Details. Sie können nun die Tabelle zur Prüfung einzelner Datensätze abfragen.

7. Gemini-Remote-Modell in BigQuery erstellen

Die Objekttabelle wurde erstellt und kann nun verwendet werden. In dieser Aufgabe erstellen Sie ein Remote-Modell für Gemini 1.5 Flash, um es in BigQuery verfügbar zu machen.

Gemini 1.5 Flash-Remote-Modell erstellen

  1. Klicken Sie auf das Symbol +, um eine neue SQL-Abfrage zu erstellen.
  2. Kopieren Sie die folgende Abfrage, fügen Sie sie in den Abfrageeditor ein und führen Sie sie aus.
CREATE OR REPLACE MODEL `gemini_demo.gemini_1_5_flash`
REMOTE WITH CONNECTION `us.gemini_conn`
OPTIONS (endpoint = 'gemini-1.5-flash')

Das Modell gemini_1_5_flash ist nun erstellt und dem Dataset gemini_demo im Abschnitt „Modelle“ hinzugefügt.

  1. Klicken Sie im Explorer auf das Modell gemini_1_5_flash und prüfen Sie die Details.

8. Prompts an Gemini-Modell senden, um für jedes Plakat eine Zusammenfassung des Films zu generieren

In dieser Aufgabe analysieren Sie mit dem gerade erstellten Gemini-Remote-Modell Bilder von Filmplakaten und generieren für jeden Film eine Zusammenfassung.

Sie können Anfragen an das Modell senden, indem Sie die Funktion ML.GENERATE_TEXT verwenden und im Parameter auf das Modell verweisen.

Bilder mit dem Gemini 1.5 Flash-Modell analysieren

  1. Erstellen Sie mit der folgenden SQL-Anweisung eine neue Abfrage und führen Sie sie aus:
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)));

Wenn die Abfrage ausgeführt wird, fordert BigQuery das Gemini-Modell für jede Zeile der Objekttabelle auf und kombiniert das Bild mit dem angegebenen statischen Prompt. Nun ist die Tabelle movie_posters_results erstellt.

  1. Sehen wir uns nun die Ergebnisse an. Erstellen Sie mit der folgenden SQL-Anweisung eine neue Abfrage und führen Sie sie aus:
SELECT * FROM `gemini_demo.movie_posters_results`

Es werden Zeilen für jedes Filmplakat mit dem URI (dem Cloud Storage-Speicherort des Filmplakatbilds) sowie einer JSON-Ausgabe mit dem Filmtitel und dem Jahr der Veröffentlichung des Films aus dem Gemini 1.5 Flash-Modell angezeigt.

Mit folgender Abfrage lassen sich die Ergebnisse in übersichtlicher Form darstellen. In dieser Abfrage wird SQL verwendet, um den Filmtitel und das Erscheinungsjahr aus diesen Antworten in neue Spalten zu extrahieren.

  1. Erstellen Sie mit der folgenden SQL-Anweisung eine neue Abfrage und führen Sie sie aus:
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 )

Nun ist die Tabelle movie_posters_result_formatted erstellt.

  1. Mit folgender Abfrage lassen sich die erstellten Tabellenreihen visualisieren.
SELECT * FROM `gemini_demo.movie_posters_results_formatted`

Beachten Sie, dass sich die ausgegebene URI-Spalte nicht verändert, die JSON-Ausgabe aber in die title- und year-Spalten konvertiert wird.

Prompts für Filmzusammenfassungen an das Gemini 1.5 Flash-Modell senden

Was wäre, wenn Sie etwas mehr Informationen zu jedem dieser Filme haben möchten, z. B. eine Textzusammenfassung? Dieser Anwendungsfall für die Inhaltsgenerierung eignet sich hervorragend für ein LLM-Modell wie Gemini 1.5 Flash.

  1. Mit Gemini 1.5 Flash können Sie für jedes Plakat eine Filmzusammenfassung bereitstellen. Führen Sie dazu die folgende Abfrage aus:
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));     

Beachten Sie das Feld ml_generate_text_llm_result in den Ergebnissen. Es enthält eine kurze Zusammenfassung des Films.

9. Texteinbettungen mit einem Remote-Modell generieren

Sie können die erstellten strukturierten Daten jetzt mit anderen strukturierten Daten in Ihrem Data Warehouse verknüpfen. Das öffentliche IMDB-Dataset, das in BigQuery verfügbar ist, enthält eine Vielzahl von Informationen zu Filmen, darunter Bewertungen von Zuschauern und einige Beispiele für Freiform-Nutzerrezensionen. Anhand dieser Daten können Sie Ihre Analyse der Filmposter vertiefen und nachvollziehen, wie diese Filme wahrgenommen wurden.

Zum Zusammenführen von Daten benötigen Sie einen Schlüssel. In diesem Fall stimmen die vom Gemini-Modell generierten Filmtitel möglicherweise nicht genau mit den Titeln im IMDb-Dataset überein.

In dieser Aufgabe generieren Sie Texteinbettungen der Filmtitel und ‑jahre aus beiden Datasets und verwenden dann den Abstand zwischen diesen Einbettungen, um den ähnlichsten IMDb-Titel mit den Filmtiteln aus Ihrem neu erstellten Dataset zu verknüpfen.

Remote-Modell erstellen

Zum Generieren der Texteinbettungen müssen Sie ein neues Remote-Modell erstellen, das auf den Endpunkt text-multilingual-embedding-002 verweist.

  1. Erstellen Sie mit der folgenden SQL-Anweisung eine neue Abfrage und führen Sie sie aus:
CREATE OR REPLACE MODEL `gemini_demo.text_embedding`
REMOTE WITH CONNECTION `us.gemini_conn`
OPTIONS (endpoint = 'text-multilingual-embedding-002')

Das Modell text_embedding ist nun erstellt und wird im Explorer unter dem Dataset gemini_demo angezeigt.

Texteinbettungen für den Titel und das Jahr der Plakate generieren

Sie verwenden dieses Remote-Modell jetzt mit der ML.GENERATE_EMBEDDING-Funktion, um für jeden Filmpostertitel und jedes Jahr ein Embedding zu erstellen.

  1. Erstellen Sie mit der folgenden SQL-Anweisung eine neue Abfrage und führen Sie sie aus:
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)));

Als Ergebnis wird die Tabelle movie_poster_results_embeddings erstellt, die die Einbettungen für den verketteten Textinhalt für jede Zeile der Tabelle gemini_demo.movie_posters_results_formatted enthält.

  1. Die Ergebnisse der Abfrage können Sie mit der folgenden neuen Abfrage aufrufen:
SELECT * FROM `gemini_demo.movie_posters_results_embeddings`

Sie sehen die vom Modell generierten Einbettungen (Vektoren, die durch Zahlen dargestellt werden) für jeden Film.

Texteinbettungen für einen Teil des IMDb-Datasets generieren

Sie erstellen eine neue Ansicht mit Daten aus einem öffentlichen IMDb-Dataset, die nur die Filme enthält, die vor 1935 veröffentlicht wurden (dem bekannten Zeitraum der Filme auf den Posterbildern).

  1. Erstellen Sie mit der folgenden SQL-Anweisung eine neue Abfrage und führen Sie sie aus:
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)

Die neue Ansicht enthält eine Liste der Film-IDs, Titel und Veröffentlichungsjahre aus der Tabelle bigquery-public-data.imdb.reviews für alle Filme im Dataset, die vor 1935 veröffentlicht wurden.

  1. Jetzt erstellen Sie Einbettungen für die Teilmenge der Filme aus IMDB. Das Verfahren ist ähnlich wie im vorherigen Abschnitt. Erstellen Sie mit der folgenden SQL-Anweisung eine neue Abfrage und führen Sie sie aus:
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 = '' );

Die Abfrage liefert eine Tabelle, die die Einbettungen für den Textinhalt der Tabelle gemini_demo.imdb_movies enthält.

Jetzt können Sie die beiden Tabellen mit der Funktion VECTOR_SEARCH verknüpfen.

  1. Erstellen Sie mit der folgenden SQL-Anweisung eine neue Abfrage und führen Sie sie aus:
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');

In der Abfrage wird die Funktion VECTOR_SEARCH verwendet, um für jede Zeile in der Tabelle gemini_demo.movie_posters_results_embeddings den nächsten Nachbarn in der Tabelle gemini_demo.imdb_movies_embeddings zu finden. Der nächste Nachbar wird mithilfe des Kosinus-Abstandsmesswerts ermittelt, anhand dessen sich bestimmen lässt, wie ähnlich sich zwei Einbettungen sind.

Mit dieser Abfrage kann der ähnlichste Film im IMDb-Dataset für jeden der von Gemini 1.5 Flash in den Filmplakaten identifizierten Filme gefunden werden. Sie können beispielsweise die ähnlichste Entsprechung für den Film „Au Secours!“ im öffentlichen IMDb-Dataset finden, in dem dieser Film unter dem englischen Titel „Help!“ enthalten ist.

  1. Erstellen Sie eine neue Abfrage und führen Sie sie aus, um zusätzliche Informationen zu den Filmbewertungen aus dem öffentlichen IMDb-Dataset einzubinden:
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

Diese Abfrage ähnelt der vorherigen. Auch hier werden spezielle numerische Darstellungen, sogenannte Vektoreinbettungen, dazu verwendet, Filme zu finden, die einem bestimmten Filmplakat ähneln. Es werden jedoch auch die durchschnittliche Bewertung und die Anzahl der Bewertungen für jeden als nächsten Nachbarn identifizierten Film aus einer separaten Tabelle des öffentlichen IMDb-Datasets hinzugefügt.

10. Glückwunsch

Herzlichen Glückwunsch zum Abschluss des Codelabs. Sie haben erfolgreich eine Objekttabelle für Ihre Posterbilder in BigQuery erstellt, ein Gemini-Remote-Modell erstellt, das Modell verwendet, um das Gemini-Modell aufzufordern, Bilder zu analysieren und Filminhaltsangaben bereitzustellen, Texteinbettungen für Filmtitel generiert und diese Einbettungen verwendet, um Bilder von Filmplakaten mit dem entsprechenden Filmtitel im IMDB-Dataset abzugleichen.

Behandelte Themen

  • Umgebung und Konto für die Verwendung von APIs konfigurieren
  • Cloud-Ressourcenverbindung in BigQuery erstellen
  • Dataset und Objekttabelle in BigQuery für Bilder von Filmplakaten erstellen
  • Gemini-Remote-Modelle in BigQuery erstellen
  • Prompts an das Gemini-Modell senden, um für jedes Plakat eine Zusammenfassung des Films zu generieren
  • Texteinbettungen für die auf den Plakaten abgebildeten Filme erstellen
  • Mit BigQuery VECTOR_SEARCH Bilder von Filmplakaten mit ähnlichen Filmen im Dataset abgleichen

Weitere Informationen

11. Umfrage

Wie werden Sie diese Anleitung verwenden?

Nur lesen Lesen und Übungen durchführen