Phân tích áp phích phim trong BigQuery bằng Mô hình từ xa

1. Giới thiệu

Trong lớp học này, bạn sẽ tìm hiểu cách sử dụng công nghệ Học máy của BigQuery để suy luận bằng các mô hình từ xa ( mô hình Gemini) nhằm phân tích hình ảnh áp phích phim và tạo bản tóm tắt về các bộ phim dựa trên áp phích ngay trong kho dữ liệu BigQuery.

3e75cd7cdc8ffcf6.jpeg

Hình trên: Mẫu hình ảnh áp phích phim mà bạn sẽ phân tích.

BigQuery là một nền tảng phân tích dữ liệu được quản lý toàn diện, sẵn sàng cho AI, giúp bạn khai thác tối đa giá trị từ dữ liệu của mình. Nền tảng này được thiết kế để hỗ trợ nhiều công cụ, nhiều định dạng và nhiều đám mây. Một trong những tính năng chính của BigQuery là Học máy BigQuery để dự đoán. Tính năng này cho phép bạn tạo và chạy các mô hình học máy (ML) bằng cách sử dụng truy vấn GoogleSQL.

Gemini là một nhóm mô hình AI tạo sinh do Google phát triển, được thiết kế cho các trường hợp sử dụng đa phương thức.

Chạy mô hình học máy bằng Truy vấn GoogleSQL

Thông thường, việc thực hiện học máy hoặc trí tuệ nhân tạo (AI) trên các tập dữ liệu lớn đòi hỏi bạn phải có kiến thức chuyên sâu về lập trình và khung học máy. Điều này giới hạn việc phát triển giải pháp ở một nhóm nhỏ chuyên gia trong mỗi công ty. Với tính năng Học máy của BigQuery để suy luận, các chuyên viên SQL có thể sử dụng các công cụ và kỹ năng hiện có liên quan đến SQL để xây dựng mô hình và tạo kết quả từ LLM và API AI trên đám mây.

Điều kiện tiên quyết

Kiến thức bạn sẽ học được

  • Cách định cấu hình môi trường và tài khoản để sử dụng API
  • Cách tạo mối kết nối với Tài nguyên trên đám mây trong BigQuery
  • Cách tạo tập dữ liệu và bảng đối tượng trong BigQuery cho hình ảnh áp phích phim
  • Cách tạo mô hình từ xa Gemini trong BigQuery
  • Cách nhắc mô hình Gemini cung cấp bản tóm tắt phim cho mỗi áp phích
  • Cách tạo văn bản nhúng cho bộ phim được thể hiện trong mỗi áp phích
  • Cách sử dụng VECTOR_SEARCH của BigQuery để so khớp hình ảnh áp phích phim với những bộ phim có liên quan chặt chẽ trong tập dữ liệu

Bạn cần có

  • Tài khoản Google Cloud và Dự án Google Cloud đã bật tính năng thanh toán
  • Một trình duyệt web như Chrome

2. Cách thiết lập và các yêu cầu

Thiết lập môi trường theo tốc độ của riêng bạn

  1. Đăng nhập vào Google Cloud Console rồi tạo một dự án mới hoặc sử dụng lại một dự án hiện có. Nếu chưa có tài khoản Gmail hoặc Google Workspace, bạn phải tạo một tài khoản.

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • Tên dự án là tên hiển thị cho người tham gia dự án này. Đây là một chuỗi ký tự không được API của Google sử dụng. Bạn luôn có thể cập nhật thông tin này.
  • Mã dự án là duy nhất trên tất cả dự án Google Cloud và không thể thay đổi (không thể thay đổi sau khi đặt). Cloud Console sẽ tự động tạo một chuỗi duy nhất; thường thì bạn không cần quan tâm đến chuỗi này. Trong hầu hết các lớp học lập trình, bạn sẽ cần tham chiếu đến Mã dự án (thường được xác định là PROJECT_ID). Nếu không thích mã được tạo, bạn có thể tạo một mã ngẫu nhiên khác. Ngoài ra, bạn có thể thử dùng email của riêng mình để xem có thể sử dụng hay không. Bạn không thể thay đổi giá trị này sau bước này và giá trị này sẽ giữ nguyên trong suốt thời gian của dự án.
  • Xin lưu ý rằng có một giá trị thứ ba là Mã dự án mà một số API sử dụng. Tìm hiểu thêm về cả ba giá trị này trong tài liệu.
  1. Tiếp theo, bạn cần bật tính năng thanh toán trong Cloud Console để sử dụng các tài nguyên/API trên Cloud. Việc tham gia lớp học lập trình này sẽ không tốn kém nhiều chi phí, nếu có. Để tắt các tài nguyên nhằm tránh bị tính phí sau khi hoàn tất hướng dẫn này, bạn có thể xoá các tài nguyên đã tạo hoặc xoá dự án. Người dùng mới của Google Cloud đủ điều kiện tham gia chương trình Dùng thử miễn phí 300 USD.

Khởi động Cloud Shell

Mặc dù có thể điều khiển Google Cloud từ xa trên máy tính xách tay, nhưng trong lớp học lập trình này, bạn sẽ sử dụng Google Cloud Shell, một môi trường dòng lệnh chạy trên đám mây.

Trong Bảng điều khiển Google Cloud, hãy nhấp vào biểu tượng Cloud Shell trên thanh công cụ trên cùng bên phải:

55efc1aaa7a4d3ad.png

Quá trình cấp phép và kết nối với môi trường sẽ chỉ mất vài phút. Khi hoàn tất, bạn sẽ thấy như sau:

7ffe5cbb04455448.png

Máy ảo này được tải sẵn tất cả các công cụ phát triển mà bạn cần. Ứng dụng này cung cấp một thư mục gốc 5 GB ổn định và chạy trên Google Cloud, giúp nâng cao đáng kể hiệu suất mạng và xác thực. Bạn có thể thực hiện tất cả công việc trong lớp học lập trình này trong một trình duyệt. Bạn không cần cài đặt gì cả.

3. Trước khi bắt đầu

Có một vài bước thiết lập để làm việc với các mô hình Gemini trong BigQuery, bao gồm bật API, tạo kết nối tài nguyên trên Google Cloud và cấp cho tài khoản dịch vụ cho kết nối tài nguyên trên Google Cloud một số quyền nhất định. Bạn chỉ cần thực hiện các bước này một lần cho mỗi dự án và chúng sẽ được đề cập trong một số phần tiếp theo.

Cho phép API

Trong Cloud Shell, hãy đảm bảo bạn đã thiết lập mã dự án:

gcloud config set project [YOUR-PROJECT-ID]

Đặt biến môi trường PROJECT_ID:

PROJECT_ID=$(gcloud config get-value project)

Định cấu hình khu vực mặc định để sử dụng cho các mô hình Vertex AI. Đọc thêm về các vị trí có Vertex AI. Trong ví dụ này, chúng ta đang sử dụng vùng us-central1.

gcloud config set compute/region us-central1

Đặt biến môi trường REGION:

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

Bật tất cả các dịch vụ cần thiết:

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

Kết quả dự kiến sau khi chạy tất cả các lệnh trên:

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. Tạo kết nối Tài nguyên trên đám mây

Trong nhiệm vụ này, bạn sẽ tạo một kết nối Tài nguyên trên đám mây để cho phép BigQuery truy cập vào các tệp hình ảnh trong Cloud Storage và thực hiện lệnh gọi đến Vertex AI.

  1. Trong Google Cloud Console, trên Trình đơn điều hướng ( Biểu tượng trình đơn điều hướng), hãy nhấp vào BigQuery.

68ddff3628a55957.png

  1. Để tạo một mối kết nối, hãy nhấp vào + THÊM, rồi nhấp vào Kết nối với nguồn dữ liệu bên ngoài.

8b70fdd209f540b6.png

  1. Trong danh sách Loại kết nối, hãy chọn Mô hình từ xa, hàm từ xa và BigLake (Tài nguyên trên đám mây) của Vertex AI.
  2. Trong trường Mã kết nối, hãy nhập gemini_conn cho kết nối của bạn.
  3. Đối với Loại vị trí, hãy chọn Nhiều khu vực, sau đó chọn nhiều khu vực Hoa Kỳ trong trình đơn thả xuống.
  4. Sử dụng chế độ cài đặt mặc định cho các chế độ cài đặt khác.

deb25a1dd65ee9dd.png

  1. Nhấp vào Tạo kết nối.
  2. Nhấp vào Chuyển đến mối kết nối.
  3. Trong ngăn Thông tin kết nối, hãy sao chép mã tài khoản dịch vụ vào một tệp văn bản để sử dụng trong nhiệm vụ tiếp theo. Bạn cũng sẽ thấy kết nối được thêm vào mục External Connections (Kết nối bên ngoài) của dự án trong BigQuery Explorer.

5. Cấp quyền IAM cho tài khoản dịch vụ của mối kết nối

Trong nhiệm vụ này, bạn cấp quyền IAM cho tài khoản dịch vụ của mối kết nối Tài nguyên trên đám mây thông qua một vai trò để cho phép tài khoản này truy cập vào các dịch vụ Vertex AI.

  1. Trong Google Cloud Console, trên Trình đơn điều hướng, hãy nhấp vào IAM và quản trị.
  2. Nhấp vào Cấp quyền truy cập.
  3. Trong trường Bên giao đại lý mới, hãy nhập mã tài khoản dịch vụ mà bạn đã sao chép trước đó.
  4. Trong trường Chọn vai trò, hãy nhập Vertex AI, sau đó chọn vai trò Người dùng Vertex AI.

55ed0ac6cd92aa1e.png

  1. Nhấp vào Lưu. Kết quả là mã tài khoản dịch vụ hiện có vai trò Người dùng Vertex AI.

6. Tạo tập dữ liệu và bảng đối tượng trong BigQuery cho hình ảnh áp phích phim

Trong nhiệm vụ này, bạn sẽ tạo một tập dữ liệu cho dự án và một bảng đối tượng trong đó để lưu trữ hình ảnh áp phích.

Tập dữ liệu hình ảnh áp phích phim được sử dụng trong hướng dẫn này được lưu trữ trong một bộ chứa công khai trên Google Cloud Storage: gs://cloud-samples-data/vertex-ai/dataset-management/datasets/classic-movie-posters

Tạo tập dữ liệu

Bạn sẽ tạo một tập dữ liệu để lưu trữ các đối tượng cơ sở dữ liệu, bao gồm cả bảng và mô hình được sử dụng trong hướng dẫn này.

  1. Trong Google Cloud Console, hãy chọn Trình đơn điều hướng ( Biểu tượng trình đơn điều hướng), sau đó chọn BigQuery.
  2. Trong bảng điều khiển Explorer (Trình khám phá), bên cạnh tên dự án, hãy chọn View actions (Xem thao tác) ( Biểu tượng trình đơn khác), rồi chọn Create dataset (Tạo tập dữ liệu).
  3. Trong ngăn Tạo tập dữ liệu, hãy nhập thông tin sau:
  • Mã tập dữ liệu: gemini_demo
  • Loại vị trí: chọn Nhiều khu vực
  • Nhiều khu vực: chọn Hoa Kỳ
  1. Giữ nguyên các trường khác ở chế độ mặc định.

9a787006017d5b47.png

  1. Nhấp vào Tạo tập dữ liệu.

Kết quả là tập dữ liệu gemini_demo được tạo và liệt kê bên dưới dự án của bạn trong BigQuery Explorer.

Tạo bảng đối tượng

BigQuery không chỉ lưu trữ dữ liệu có cấu trúc mà còn có thể truy cập vào dữ liệu không có cấu trúc (như hình ảnh áp phích) thông qua bảng đối tượng.

Bạn tạo một bảng đối tượng bằng cách trỏ đến một bộ chứa trên Cloud Storage. Bảng đối tượng thu được sẽ có một hàng cho mỗi đối tượng trong bộ chứa, cùng với đường dẫn bộ nhớ và siêu dữ liệu của đối tượng đó.

Để tạo bảng đối tượng, bạn sẽ sử dụng truy vấn SQL.

  1. Nhấp vào biểu tượng + để Tạo truy vấn SQL mới.
  2. Trong trình chỉnh sửa truy vấn, hãy dán truy vấn bên dưới.
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. Chạy truy vấn. Kết quả là một bảng đối tượng movie_posters được thêm vào tập dữ liệu gemini_demo và được tải bằng URI (vị trí trên Google Cloud Storage) của mỗi hình ảnh áp phích phim.
  2. Trong Explorer (Trình khám phá), hãy nhấp vào biểu tượng movie_posters rồi xem xét giản đồ và thông tin chi tiết. Bạn có thể truy vấn bảng này để xem xét các bản ghi cụ thể.

7. Tạo mô hình từ xa Gemini trong BigQuery

Giờ đây, khi bảng đối tượng đã được tạo, bạn có thể bắt đầu sử dụng bảng đó. Trong nhiệm vụ này, bạn sẽ tạo một mô hình từ xa cho Gemini 1.5 Flash để cung cấp mô hình đó trong BigQuery.

Tạo mô hình từ xa Gemini 1.5 Flash

  1. Nhấp vào biểu tượng + để Tạo truy vấn SQL mới.
  2. Trong trình chỉnh sửa truy vấn, hãy dán truy vấn bên dưới và chạy truy vấn đó.
CREATE OR REPLACE MODEL `gemini_demo.gemini_1_5_flash`
REMOTE WITH CONNECTION `us.gemini_conn`
OPTIONS (endpoint = 'gemini-1.5-flash')

Kết quả là mô hình gemini_1_5_flash được tạo và bạn sẽ thấy mô hình này được thêm vào tập dữ liệu gemini_demo, trong phần mô hình.

  1. Trong Explorer, hãy nhấp vào mô hình gemini_1_5_flash rồi xem lại thông tin chi tiết.

8. Yêu cầu mô hình Gemini cung cấp bản tóm tắt phim cho mỗi áp phích

Trong nhiệm vụ này, bạn sẽ sử dụng mô hình từ xa Gemini mà bạn vừa tạo để phân tích hình ảnh áp phích phim và tạo bản tóm tắt cho từng bộ phim.

Bạn có thể gửi yêu cầu đến mô hình bằng cách sử dụng hàm ML.GENERATE_TEXT, tham chiếu đến mô hình trong các tham số.

Phân tích hình ảnh bằng mô hình Gemini 1.5 Flash

  1. Tạo và chạy truy vấn mới bằng câu lệnh SQL sau:
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)));

Khi truy vấn chạy, BigQuery sẽ nhắc mô hình Gemini cho mỗi hàng của bảng đối tượng, kết hợp hình ảnh với lời nhắc tĩnh được chỉ định. Kết quả là bảng movie_posters_results được tạo.

  1. Bây giờ, hãy xem kết quả. Tạo và chạy truy vấn mới bằng câu lệnh SQL sau:
SELECT * FROM `gemini_demo.movie_posters_results`

Kết quả là các hàng cho mỗi áp phích phim có URI (vị trí của hình ảnh áp phích phim trong Bộ nhớ trên đám mây) và kết quả JSON bao gồm tên phim và năm phát hành phim từ mô hình Gemini 1.5 Flash.

Bạn có thể truy xuất những kết quả này theo cách dễ đọc hơn bằng cách sử dụng truy vấn tiếp theo. Truy vấn này sử dụng SQL để lấy tên phim và năm phát hành từ các phản hồi này vào các cột mới.

  1. Tạo và chạy truy vấn mới bằng câu lệnh SQL sau:
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 )

Kết quả là bảng movie_posters_result_formatted được tạo.

  1. Bạn có thể truy vấn bảng bằng truy vấn bên dưới để xem các hàng đã tạo.
SELECT * FROM `gemini_demo.movie_posters_results_formatted`

Hãy lưu ý rằng kết quả của cột URI vẫn giữ nguyên, nhưng JSON hiện được chuyển đổi thành cột titleyear cho mỗi hàng.

Yêu cầu mô hình Gemini 1.5 Flash cung cấp bản tóm tắt phim

Nếu bạn muốn biết thêm thông tin về từng bộ phim, chẳng hạn như nội dung tóm tắt bằng văn bản của từng bộ phim thì sao? Trường hợp sử dụng tạo nội dung này rất phù hợp với mô hình LLM, chẳng hạn như mô hình Gemini 1.5 Flash.

  1. Bạn có thể sử dụng Gemini 1.5 Flash để cung cấp bản tóm tắt phim cho mỗi áp phích bằng cách chạy truy vấn dưới đây:
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));     

Lưu ý trường ml_generate_text_llm_result của kết quả; trường này bao gồm nội dung tóm tắt ngắn về bộ phim.

9. Tạo văn bản nhúng bằng mô hình từ xa

Giờ đây, bạn có thể kết hợp dữ liệu có cấu trúc mà bạn đã tạo với dữ liệu có cấu trúc khác trong kho dữ liệu. Tập dữ liệu công khai của IMDB có trong BigQuery chứa nhiều thông tin về phim, bao gồm cả điểm xếp hạng của người xem và một số bài đánh giá mẫu của người dùng theo hình thức tự do. Dữ liệu này có thể giúp bạn phân tích sâu hơn về áp phích phim và hiểu được cách mọi người nhìn nhận những bộ phim này.

Để kết hợp dữ liệu, bạn cần có khoá. Trong trường hợp này, các tên phim do mô hình Gemini tạo ra có thể không khớp hoàn toàn với các tên trong tập dữ liệu IMDB.

Trong nhiệm vụ này, bạn sẽ tạo nội dung nhúng văn bản của các tên phim và năm phát hành từ cả hai tập dữ liệu, sau đó sử dụng khoảng cách giữa các nội dung nhúng này để kết hợp tên phim gần nhất trên IMDB với tên trên áp phích phim trong tập dữ liệu mới tạo.

Tạo mô hình từ xa

Để tạo các văn bản nhúng, bạn cần tạo một mô hình từ xa mới trỏ đến điểm cuối text-multilingual-embedding-002.

  1. Tạo và chạy truy vấn mới bằng câu lệnh SQL sau:
CREATE OR REPLACE MODEL `gemini_demo.text_embedding`
REMOTE WITH CONNECTION `us.gemini_conn`
OPTIONS (endpoint = 'text-multilingual-embedding-002')

Kết quả là mô hình text_embedding được tạo và xuất hiện trong trình khám phá bên dưới tập dữ liệu gemini_demo.

Tạo văn bản nhúng cho tiêu đề và năm liên kết với áp phích

Bây giờ, bạn sẽ sử dụng mô hình từ xa này với hàm ML.GENERATE_EMBEDDING để tạo một phần nhúng cho mỗi tiêu đề và năm phát hành áp phích phim.

  1. Tạo và chạy truy vấn mới bằng câu lệnh SQL sau:
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)));

Kết quả là bảng movie_poster_results_embeddings được tạo chứa các phần nhúng cho nội dung văn bản được nối với nhau cho mỗi hàng của bảng gemini_demo.movie_posters_results_formatted.

  1. Bạn có thể xem kết quả của truy vấn bằng cách sử dụng truy vấn mới dưới đây:
SELECT * FROM `gemini_demo.movie_posters_results_embeddings`

Tại đây, bạn sẽ thấy các giá trị nhúng (vectơ được biểu thị bằng số) cho mỗi bộ phim do mô hình tạo ra.

Tạo văn bản nhúng cho một tập hợp con của tập dữ liệu IMDB

Bạn sẽ tạo một chế độ xem mới về dữ liệu từ một tập dữ liệu công khai của IMDB chỉ chứa những bộ phim được phát hành trước năm 1935 (khoảng thời gian đã biết của các bộ phim qua hình ảnh áp phích).

  1. Tạo và chạy truy vấn mới bằng câu lệnh SQL sau:
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)

Kết quả là một thành phần hiển thị mới chứa danh sách các mã nhận dạng, tên phim và năm phát hành riêng biệt của bảng bigquery-public-data.imdb.reviews cho tất cả các bộ phim trong tập dữ liệu được phát hành trước năm 1935.

  1. Bây giờ, bạn sẽ tạo các phần nhúng cho một nhóm nhỏ phim trên IMDB bằng cách sử dụng quy trình tương tự như phần trước. Tạo và chạy truy vấn mới bằng câu lệnh SQL sau:
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 = '' );

Kết quả của truy vấn là một bảng chứa các phần nhúng cho nội dung văn bản của bảng gemini_demo.imdb_movies.

Bây giờ, bạn có thể kết hợp hai bảng này bằng cách sử dụng hàm VECTOR_SEARCH.

  1. Tạo và chạy truy vấn mới bằng câu lệnh SQL sau:
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');

Truy vấn này sử dụng hàm VECTOR_SEARCH để tìm hàng xóm gần nhất trong bảng gemini_demo.imdb_movies_embeddings cho mỗi hàng trong bảng gemini_demo.movie_posters_results_embeddings. Bạn có thể tìm thấy đối tượng gần nhất bằng cách sử dụng chỉ số khoảng cách cosine. Chỉ số này xác định mức độ tương đồng giữa hai nội dung nhúng.

Bạn có thể sử dụng truy vấn này để tìm bộ phim tương tự nhất trong tập dữ liệu IMDB cho từng bộ phim do Gemini 1.5 Flash xác định trong áp phích phim. Ví dụ: bạn có thể sử dụng truy vấn này để tìm nội dung khớp gần nhất với bộ phim "Au Secours!" trong tập dữ liệu công khai của IMDB. Tập dữ liệu này tham chiếu đến bộ phim này theo tên tiếng Anh là "Help!".

  1. Tạo và chạy một truy vấn mới để kết hợp một số thông tin bổ sung về điểm xếp hạng phim được cung cấp trong tập dữ liệu công khai của 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

Truy vấn này tương tự như truy vấn trước. Mô hình này vẫn sử dụng các đại diện số đặc biệt được gọi là vectơ nhúng để tìm những bộ phim tương tự với một áp phích phim nhất định. Tuy nhiên, hàm này cũng kết hợp điểm xếp hạng trung bình và số lượt bình chọn cho mỗi bộ phim có điểm tương đồng cao nhất trong một bảng riêng biệt với tập dữ liệu công khai của IMDB.

10. Xin chúc mừng

Chúc mừng bạn đã hoàn thành lớp học lập trình này. Bạn đã tạo thành công một bảng đối tượng cho hình ảnh áp phích trong BigQuery, tạo một mô hình Gemini từ xa, sử dụng mô hình này để nhắc mô hình Gemini phân tích hình ảnh và cung cấp bản tóm tắt phim, tạo văn bản nhúng cho tên phim và sử dụng các văn bản nhúng đó để so khớp hình ảnh áp phích phim với tên phim có liên quan trong tập dữ liệu IMDB.

Nội dung đã đề cập

  • Cách định cấu hình môi trường và tài khoản để sử dụng API
  • Cách tạo mối kết nối với Tài nguyên trên đám mây trong BigQuery
  • Cách tạo tập dữ liệu và bảng đối tượng trong BigQuery cho hình ảnh áp phích phim
  • Cách tạo mô hình từ xa Gemini trong BigQuery
  • Cách nhắc mô hình Gemini cung cấp bản tóm tắt phim cho mỗi áp phích
  • Cách tạo văn bản nhúng cho bộ phim được thể hiện trong mỗi áp phích
  • Cách sử dụng VECTOR_SEARCH của BigQuery để so khớp hình ảnh áp phích phim với những bộ phim có liên quan chặt chẽ trong tập dữ liệu

Các bước tiếp theo / tìm hiểu thêm

11. Khảo sát

Bạn sẽ sử dụng hướng dẫn này như thế nào?

Chỉ đọc qua Đọc và hoàn thành bài tập