Phân tích ngữ nghĩa trong BigQuery bằng các hàm AI được quản lý và SQL

1. Chào mừng bạn

Trong lớp học lập trình này, bạn sẽ tìm hiểu cách sử dụng bộ các hàm AI được quản lý của BigQuery để thực hiện phân tích ngữ nghĩa phức tạp, phân loại theo danh mục, lọc đa phương thức, kết hợp ngữ nghĩa và tóm tắt nhiều hàng ngay trong BigQuery Studio bằng SQL.

Bằng cách sử dụng tập dữ liệu công khai bigquery-public-data.cymbal_pets, bạn sẽ vào vai một nhà phân tích dữ liệu tại Cymbal Pets, một nhà bán lẻ thương mại điện tử chuyên cung cấp đồ dùng và phụ kiện cho thú cưng.

Phân tích ngữ nghĩa ngay trong các truy vấn SQL

Theo cách truyền thống, việc áp dụng học máy hoặc các mô hình ngôn ngữ lớn (LLM) cho các tập dữ liệu doanh nghiệp đòi hỏi phải di chuyển dữ liệu ra khỏi kho dữ liệu vào các môi trường sổ tay Python bên ngoài. Điều này đòi hỏi các quy trình kỹ thuật dữ liệu chuyên dụng và kiến thức chuyên môn về học máy.

Các hàm AI được quản lý của BigQuery (bao gồm AI.SCORE, AI.CLASSIFY, AI.IF và AI.AGG) mang trí thông minh của mô hình cơ sở trực tiếp đến dữ liệu của bạn. BigQuery tự động tối ưu hoá việc lựa chọn mô hình và áp dụng các chiến lược viết lại câu lệnh nội bộ để đưa ra kết quả có độ chính xác cao từ các câu lệnh đơn giản bằng ngôn ngữ tự nhiên.

Đối với các tập dữ liệu có dung lượng lớn, BigQuery cung cấp chế độ được tối ưu hoá, sử dụng tính năng chưng cất mô hình tức thì và các mô hình proxy đơn giản để cung cấp các truy vấn nhanh hơn và rẻ hơn gấp 100 lần.

Bạn sẽ thực hiện

  • Khám phá dữ liệu bán lẻ đa phương thức trong BigQuery Studio bằng SQL.
  • Thực hiện xếp hạng ngữ nghĩa bằng cách sử dụng AI.SCORE để đánh giá các thuộc tính chủ quan của sản phẩm, chẳng hạn như "phù hợp để làm quà tặng".
  • Phân loại dữ liệu không có cấu trúc bằng cách sử dụng AI.CLASSIFY để liên kết sản phẩm với loài động vật mục tiêu.
  • Lọc thành phần hình ảnh đa phương thức bằng cách sử dụng AI.IF trong các mệnh đề WHERE.
  • Thực hiện các phép kết hợp ngữ nghĩa trên các bảng bằng cách sử dụng AI.IF trong các mệnh đề JOIN ... ON để so khớp các bản ghi sản phẩm dạng văn bản với các tệp hình ảnh từ bên ngoài.
  • Tổng hợp thông tin chi tiết trên nhiều hàng bằng hàm tổng hợp AI.AGG.
  • Tối ưu hoá độ trễ và chi phí truy vấn trên các tập dữ liệu lớn bằng cách sử dụng AI.IF với chế độ được tối ưu hoá (optimization_mode => 'MINIMIZE_COST') và phương pháp chưng cất mô hình proxy.

Bạn cần có

  • Một dự án trên Google Cloud đã bật tính năng thanh toán.
  • Một trình duyệt web như Chrome.

2. Thiết lập và yêu cầu

Trước khi truy vấn dữ liệu bằng các hàm AI được quản lý, bạn phải định cấu hình dự án trên đám mây của Google Cloud và bật các API bắt buộc.

Tạo một dự án trên Google Cloud và bật API

  1. Trong Google Cloud Console, trên trang chọn dự án, hãy chọn hoặc tạo một dự án trên Google Cloud.
  2. Đảm bảo bạn đã bật tính năng thanh toán cho dự án trên Cloud. Tìm hiểu cách kiểm tra xem tính năng thanh toán có được bật trong một dự án hay không.
  3. Bật BigQuery API, BigQuery Connection API và Agent Platform API.

Mở BigQuery Studio

  1. Trong trình đơn điều hướng của Google Cloud Console, hãy nhấp vào BigQuery để mở BigQuery Studio.
  2. Trong thanh công cụ của trình chỉnh sửa BigQuery Studio, hãy nhấp vào + SQL query (Truy vấn SQL) để mở một thẻ truy vấn SQL mới. Bạn sẽ viết và chạy tất cả các truy vấn SQL trong các thẻ SQL này trong suốt lớp học lập trình này.

Tạo mối kết nối tài nguyên trên đám mây trong SQL

BigQuery hoạt động trong một ranh giới dữ liệu an toàn. Khi kiểm tra các tệp đa phương thức bên ngoài (chẳng hạn như hình ảnh được lưu trữ trong Google Cloud Storage), BigQuery sẽ sử dụng Cloud Resource Connection để truy cập an toàn vào các tham chiếu đối tượng mà không làm lộ thông tin đăng nhập.

Thực thi câu lệnh sau trong thẻ SQL để tạo một mối kết nối có tên là us.conn:

CREATE CONNECTION IF NOT EXISTS `us.conn`
OPTIONS (
  connection_type = "CLOUD_RESOURCE"
);

3. Khám phá tập dữ liệu Cymbal Pets

Cymbal Pets duy trì một danh mục sản phẩm phong phú trong tập dữ liệu công khai bên trong bảng có tên là bigquery-public-data.cymbal_pets.products. Mỗi bản ghi sản phẩm chứa các thuộc tính có cấu trúc như mã sản phẩm, tiêu đề, danh mục bán lẻ, giá và văn bản mô tả.

Truy vấn danh mục sản phẩm

Mở thẻ SQL trong BigQuery Studio rồi chạy truy vấn sau để kiểm tra bảng sản phẩm:

SELECT
  product_id,
  product_name,
  category,
  price,
  description
FROM
  `bigquery-public-data.cymbal_pets.products`;

Kết quả sẽ có dạng tương tự như sau:

Kết quả truy vấn BigQuery Studio cho thấy các bản ghi danh mục sản phẩm

Kiểm tra hình ảnh sản phẩm

Cymbal Pets cũng lưu trữ thông tin tham chiếu về hình ảnh sản phẩm ở bigquery-public-data.cymbal_pets.product_images. Chạy truy vấn sau để xem các bản ghi hình ảnh:

SELECT
  uri,
  OBJ.GET_READ_URL(OBJ.MAKE_REF(uri, 'us.conn')).url AS product_image_url,
  metadata
FROM
  `bigquery-public-data.cymbal_pets.product_images`;

Kết quả sẽ có dạng tương tự như sau:

Kết quả truy vấn BigQuery Studio cho thấy bản xem trước hình ảnh sản phẩm và siêu dữ liệu

Tiếp theo, bạn sẽ sử dụng các hàm do BigQuery quản lý để phân tích cả dữ liệu văn bản và hình ảnh từ kho dữ liệu Cymbal Pets.

4. Xếp hạng sản phẩm theo tiêu chí ngữ nghĩa bằng AI.SCORE

Hàm AI.SCORE chấp nhận thông tin đầu vào là văn bản và sử dụng mô hình Gemini để đánh giá thông tin đầu vào đó dựa trên một tiêu chí chấm điểm bằng ngôn ngữ tự nhiên, đồng thời trả về điểm số bằng số FLOAT64.

Nếu bạn không cung cấp một tiêu chí chấm điểm rõ ràng, BigQuery sẽ tự động áp dụng các chiến lược viết lại câu lệnh để tạo ra một tiêu chí chấm điểm tối ưu cho mô hình.

Chấm điểm sản phẩm theo "khả năng làm quà tặng"

Giả sử nhóm tiếp thị của Cymbal Pets muốn xây dựng một hướng dẫn mua quà tặng cho dịp lễ. Họ muốn xếp hạng mọi mặt hàng trong danh mục dựa trên mức độ phù hợp của mặt hàng đó làm quà tặng cho chủ sở hữu thú cưng theo thang điểm từ 1 đến 10.

Chạy truy vấn sau trong thẻ SQL:

SELECT
  product_name,
  description,
  AI.SCORE(
    ('How "giftable" is this product for a pet owner? ', description,
    'Use a scale from 1-10.')
  ) AS giftability_score
FROM
  `bigquery-public-data.cymbal_pets.products`
ORDER BY
  giftability_score DESC;

Tìm hiểu các kết quả

Kết quả sẽ có dạng tương tự như sau:

core_giftability_results.png

Kiểm tra cột giftability_score trong kết quả truy vấn:

  • Đồ chơi tương tác có sức hấp dẫn cao: Những mặt hàng hấp dẫn như Cozy Naps Cat Teaser Wand, Playful Pup Puzzle Toy và Playful Pup Treat Dispenser nhận được điểm đánh giá cao nhất (9.0).
  • Các vật dụng đặc biệt giúp thú cưng thoải mái và có thể cào: Các vật dụng thiết yếu phổ biến như Purrfect Perch Cat Scratcher đạt điểm cao ở mức 8.0.
  • Xếp hạng có thể hành động ở hạ nguồn: Vì AI.SCORE tạo ra điểm số FLOAT64 được chuẩn hoá, nên bạn có thể sắp xếp ngay kết quả bằng ORDER BY giftability_score DESC hoặc lọc các đề xuất bằng WHERE AI.SCORE(...) >= 8.0 để tạo hướng dẫn mua quà tự động.

5. Phân loại các mục trong danh mục bằng AI.CLASSIFY

Hàm AI.CLASSIFY sử dụng Gemini để phân loại các bản ghi đầu vào thành một danh sách rời rạc gồm các danh mục mục tiêu được cung cấp dưới dạng một mảng SQL.

AI.CLASSIFY hỗ trợ dữ liệu đầu vào đa phương thức (văn bản, hình ảnh, âm thanh, video) và loại bỏ nhu cầu xây dựng, huấn luyện hoặc triển khai các mô hình phân loại riêng biệt để quản lý phân loại.

Phân loại đồ chơi theo loài động vật mục tiêu (một nhãn)

Giả sử một số sản phẩm trong danh mục Cymbal Pets được gắn thẻ chung chung là "Đồ chơi" mà không chỉ định động vật mục tiêu. Bạn có thể dùng AI.CLASSIFY để phân loại từng đồ chơi dựa trên tên và nội dung mô tả.

Chạy truy vấn sau trong BigQuery Studio:

SELECT
  product_name,
  description,
  AI.CLASSIFY(
    ('What animal is this product for?', product_name, ' ', description),
    categories => ["Dog", "Cat", "Bird", "Fish", "Small Animal", "All Pets"]
  ) AS animal_type
FROM
  `bigquery-public-data.cymbal_pets.products`
WHERE
  category = "Toys"
LIMIT 20;

Xem kết quả

Kết quả sẽ có dạng tương tự như sau:

Kết quả truy vấn BigQuery Studio cho thấy các phân loại động vật AI.CLASSIFY có một nhãn

Theo mặc định, AI.CLASSIFY thực hiện phân loại một nhãn và trả về một STRING chứa danh mục phù hợp nhất trong mảng đề xuất của bạn. Lưu ý cách Gemini liên kết bóng đồ chơi và đồ chơi lông vũ với Cat, còn đồ chơi nhai và gậy ném/bắt thì liên kết với Dog.

Chỉ định nhiều thẻ bằng tính năng phân loại nhiều nhãn

Nhiều sản phẩm trong danh mục bán lẻ áp dụng cho nhiều loại thú cưng cùng lúc (ví dụ: giường hoặc đường hầm bằng vải nhung phù hợp cho cả mèo và động vật nhỏ).

Để chỉ định nhiều danh mục cho một bản ghi, hãy đặt tham số không bắt buộc output_mode => 'multi'. Ở chế độ nhiều nhãn, AI.CLASSIFY sẽ trả về một ARRAY chứa tất cả các danh mục trùng khớp.

Chạy truy vấn sau trong thẻ SQL:

SELECT
  product_name,
  description,
  AI.CLASSIFY(
    ('Identify all pet types that this product is suitable for: ', product_name, ' ', description),
    categories => ["Dog", "Cat", "Bird", "Fish", "Small Animal", "Reptile"],
    output_mode => 'multi'
  ) AS pet_types
FROM
  `bigquery-public-data.cymbal_pets.products`
WHERE
  category = "Toys";

Kết quả sẽ có dạng tương tự như sau:

Kết quả truy vấn BigQuery Studio cho thấy AI.CLASSIFY có nhiều nhãn trả về mảng các loại thú cưng

Xem xét cơ chế phân loại

  • Nhãn đơn và nhãn đa: Nếu không có output_mode, AI.CLASSIFY sẽ trả về một đại lượng vô hướng STRING. Việc đặt output_mode => 'multi' sẽ trả về một ARRAY chứa 0, 1 hoặc nhiều nhãn khớp.
  • Phân loại nhiều danh mục: Lưu ý cách các mặt hàng chuyên dụng như Chew-tastic! Dental Chew Toy và Playful Pup Fetch Stick nhận được [Dog], trong khi các mặt hàng thoải mái đa năng như Cozy Naps Dog Toy (giường hình chữ nhật mềm mại) nhận được nhiều thẻ một cách chính xác: [Dog, Cat, Small Animal].
  • So khớp không cần dữ liệu đầu vào: Mô hình đánh giá văn bản và câu lệnh kết hợp dựa trên mảng categories được cung cấp mà không yêu cầu các mô hình học máy tuỳ chỉnh được huấn luyện trước.
  • Các thao tác trên mảng SQL ở hạ nguồn: Bạn có thể sử dụng các hàm mảng SQL chuẩn của BigQuery như WHERE 'Cat' IN UNNEST(pet_types) hoặc CROSS JOIN UNNEST(pet_types) để lọc, mở rộng và tổng hợp các bản ghi có nhiều nhãn.

6. Lọc hình ảnh sản phẩm đa phương thức bằng AI.IF

Hàm AI.IF sử dụng Gemini để đánh giá một điều kiện bằng ngôn ngữ tự nhiên và trả về một giá trị boolean (TRUE hoặc FALSE).

Vì AI.IF chấp nhận dữ liệu đầu vào đa phương thức, nên bạn có thể sử dụng trực tiếp trong một mệnh đề SQL WHERE để lọc các tệp hình ảnh không có cấu trúc được lưu trữ trong Cloud Storage.

Lọc những hình ảnh có chứa các đối tượng cụ thể

Giả sử nhóm bán hàng muốn tìm tất cả hình ảnh sản phẩm trong danh mục có chứa thức ăn hoặc đồ ăn vặt cho thú cưng.

Chạy truy vấn sau trong thẻ SQL:

SELECT
  uri,
  OBJ.GET_READ_URL(OBJ.MAKE_REF(uri, 'us.conn')).url AS product_image_url,
  metadata
FROM
  `bigquery-public-data.cymbal_pets.product_images`
WHERE
  AI.IF(
    ('Does this product image contain pet food or snacks? ', OBJ.MAKE_REF(uri, 'us.conn'))
  );

Kết quả sẽ có dạng tương tự như sau:

Kết quả truy vấn của BigQuery Studio cho thấy tính năng lọc hình ảnh đa phương thức đối với các sản phẩm chứa thức ăn hoặc đồ ăn vặt cho thú cưng

Cách hoạt động của tính năng lọc nội dung đa phương thức

  • Tham chiếu đối tượng tức thì: Mặc dù chúng ta tạo tham chiếu đối tượng tức thì ở đây bằng cách sử dụng OBJ.MAKE_REF(uri, 'us.conn'), nhưng bạn cũng có thể tạo và lưu trữ các cột ObjectRef ngay trong bảng BigQuery để có thể sử dụng ngay trong quá trình phân tích mà không cần hàm OBJ.MAKE_REF trong mọi truy vấn.
  • Nhận dạng đối tượng trực quan chuyên sâu: Lưu ý cách Gemini nhận dạng chính xác nhiều định dạng đóng gói (chẳng hạn như hộp thức ăn ướt, túi thức ăn khô cho chuột hamster và thức ăn đóng hộp cho mèo) đồng thời nhận dạng các món ăn vặt có thể ăn được bên trong đồ chơi như hộp đựng thức ăn màu xanh dương.
  • Đánh giá vị từ ở cấp hàng: BigQuery đánh giá điều kiện bằng ngôn ngữ tự nhiên dựa trên từng tham chiếu hình ảnh trong Cloud Storage ngay trong mệnh đề WHERE.
  • Lọc bằng giá trị boolean: Chỉ những bản ghi mà Gemini đánh giá điều kiện là TRUE mới được trả về trong tập kết quả.

7. Thực hiện thao tác kết hợp ngữ nghĩa trên các bảng bằng AI.IF

Các phép kết hợp cơ sở dữ liệu quan hệ truyền thống yêu cầu sự bình đẳng chính xác về khoá (chẳng hạn như products.product_id = images.product_id). Tuy nhiên, các tập dữ liệu doanh nghiệp trong thế giới thực thường chứa các tài sản không có cấu trúc và thiếu khoá ngoài rõ ràng.

Vì AI.IF trả về một giá trị boolean, nên bạn có thể đặt giá trị này trực tiếp bên trong một mệnh đề INNER JOIN ... ON SQL để thực hiện các phép kết hợp ngữ nghĩa.

Kết hợp nội dung mô tả sản phẩm với thành phần hình ảnh theo ngữ nghĩa

Giả sử bạn muốn so khớp nội dung mô tả sản phẩm trong bảng products với các tệp hình ảnh chưa được liên kết trong product_images cho các sản phẩm do thương hiệu Fluffy Buns sản xuất.

Chạy truy vấn sau trong thẻ SQL của BigQuery Studio (lưu ý rằng quá trình này mất vài phút để hoàn tất):

SELECT
  products.product_id,
  products.product_name,
  products.description,
  products.brand,
  images.uri AS image_uri,
  OBJ.GET_READ_URL(OBJ.MAKE_REF(images.uri, 'us.conn')).url AS product_image_url
FROM
  `bigquery-public-data.cymbal_pets.products` AS products
INNER JOIN
  `bigquery-public-data.cymbal_pets.product_images` AS images
ON
  AI.IF(
    ('You will be provided an image of a pet product. ',
    'Determine if the image is of the following pet toy: ',
    products.product_name,
    products.description,
    OBJ.MAKE_REF(images.uri, 'us.conn')
    )
  )
WHERE
  products.category = "Toys" AND
  products.brand = "Fluffy Buns";

Kết quả sẽ có dạng tương tự như sau:

Kết quả truy vấn BigQuery Studio cho thấy các phép kết hợp ngữ nghĩa giữa sản phẩm và hình ảnh

Tìm hiểu về các phép kết hợp ngữ nghĩa trong SQL

  • Đánh giá điều kiện đa phương thức: Đối với các cặp bản ghi đề xuất, BigQuery sẽ gửi cả siêu dữ liệu dạng văn bản từ products và thông tin tham chiếu về hình ảnh (OBJ.MAKE_REF(...)) đến Gemini.
  • Kết quả trùng khớp chính xác về mặt hình ảnh: Như trong kết quả, Fluffy Buns Hamster Exercise Ball trùng khớp với hình ảnh quả bóng nhựa trong suốt, còn Fluffy Buns Chinchilla Play Tunnel và Guinea Pig Tunnel trùng khớp với ảnh chụp đường hầm bằng vải nhung màu xanh dương. Do ngữ nghĩa SQL INNER JOIN tiêu chuẩn, một sản phẩm có thể tạo ra nhiều hàng trong đầu ra nếu sản phẩm đó khớp với nhiều thành phần hình ảnh trong danh mục (chẳng hạn như nhiều góc chụp ảnh hoặc ảnh chụp tương tự).
  • Kết xuất hình ảnh nội tuyến: BigQuery Studio tự động kết xuất các URL đọc được uỷ quyền trong cột product_image_url ngay trong lưới kết quả để xác minh bằng hình ảnh tức thì.
  • Phân giải thực thể không có cấu trúc: Tính năng này mở ra các quy trình phân giải thực thể mạnh mẽ trên các danh mục cũ, tập dữ liệu được trích xuất và kho lưu trữ nội dung nghe nhìn mà không cần gắn nhãn thủ công hoặc khoá ngoại rõ ràng.

8. Tổng hợp thông tin chi tiết trên các hàng bằng hàm AI.AGG

Mặc dù các hàm như AI.SCORE, AI.CLASSIFY và AI.IF đánh giá các hàng riêng lẻ (thao tác vô hướng), nhưng việc phân tích dữ liệu doanh nghiệp thường đòi hỏi phải tổng hợp các mẫu trên nhiều bản ghi.

Hàm AI.AGG là một hàm tổng hợp sử dụng hướng dẫn bằng ngôn ngữ tự nhiên để tóm tắt, phân cụm hoặc tổng hợp thông tin chi tiết trên hàng nghìn hoặc hàng triệu hàng không có cấu trúc thành một phản hồi thống nhất.

Tổng hợp thông tin tóm tắt về danh mục cùng với các chỉ số SQL truyền thống

AI.AGG tích hợp liền mạch với SQL truyền thống GROUP BY và các hàm tổng hợp. Ví dụ: bạn có thể tính toán các chỉ số truyền thống (chẳng hạn như số lượng mặt hàng) ngay bên cạnh bản tóm tắt do AI tạo sinh mô tả điểm chung của các sản phẩm trong từng danh mục.

Chạy truy vấn sau trong BigQuery Studio:

SELECT 
  category,
  COUNT(*) AS item_count,
  AI.AGG(
    ('Product: ', product_name, ' - Description: ', description),
    'Write a concise, one-sentence summary describing the common characteristics or purpose of the products in this category.'
  ) AS category_summary
FROM 
  `bigquery-public-data.cymbal_pets.products`
GROUP BY 
  category
ORDER BY 
  item_count DESC;

Kết quả sẽ có dạng tương tự như sau:

Kết quả truy vấn BigQuery Studio cho thấy thông tin tóm tắt về danh mục AI.AGG cùng số lượng mục

Cách AI.AGG tổng hợp dữ liệu không có cấu trúc

  • Tổng hợp theo hệ phân cấp: BigQuery nhóm dữ liệu hàng theo phân vùng danh mục, tạo các cửa sổ ngữ cảnh có cấu trúc và sử dụng Gemini để tổng hợp toàn bộ tập hợp bản ghi sản phẩm.
  • Tổng hợp danh mục tự động: Lưu ý cách mỗi danh mục nhận được một bản tóm tắt riêng biệt và chính xác, chẳng hạn như Accessories ghi lại môi trường sống và thiết bị huấn luyện, hoặc Food làm nổi bật chế độ dinh dưỡng cân bằng cho nhiều loài động vật.
  • Báo cáo định lượng và định tính kết hợp: Việc kết hợp các hoạt động tổng hợp tiêu chuẩn như COUNT(*) với AI.AGG sẽ tạo ra thông tin tổng quan toàn diện về danh mục trong một truy vấn duy nhất mà không cần các quy trình ETL tuỳ chỉnh.
  • Phân vùng linh hoạt: Bạn có thể áp dụng AI.AGG cho mọi phương diện nhóm (chẳng hạn như GROUP BY brand, GROUP BY category hoặc trên toàn bộ bảng) để tạo thông tin chi tiết ở cấp điều hành trong vài giây.

9. Tăng tốc truy vấn bằng chế độ được tối ưu hoá và các mô hình proxy

Khi xử lý các tập dữ liệu lớn chứa hàng nghìn hoặc hàng triệu hàng, việc gọi một LLM từ xa cho từng hàng có thể làm tăng độ trễ và chi phí.

Để giải quyết vấn đề này, BigQuery cung cấp chế độ được tối ưu hoá cho AI.IF và AI.CLASSIFY. Chế độ được tối ưu hoá sử dụng các mô hình proxy và quy trình chưng cất mô hình tức thì để mang lại tốc độ thực thi nhanh hơn gấp 100 lần với chi phí mã thông báo LLM thấp hơn.

Cách hoạt động của chế độ được tối ưu hoá

Quy trình tối ưu hoá bằng AI

  1. Lấy mẫu và gắn nhãn đại diện: BigQuery tự động chọn một mẫu đại diện gồm các hàng và lấy nhãn từ Gemini.
  2. Huấn luyện mô hình tinh chỉnh: BigQuery huấn luyện một mô hình proxy siêu nhẹ (chẳng hạn như hồi quy logistic) ngay lập tức trên CPU bằng cách sử dụng các tính năng nhúng văn bản.
  3. Xác minh chất lượng: BigQuery đánh giá độ chính xác của mô hình tinh chỉnh so với Gemini. Nếu đáp ứng các ngưỡng chất lượng, BigQuery sẽ chuyển đổi tập dữ liệu đó để xử lý phần còn lại của tập dữ liệu.
  4. Suy luận tốc độ cao tại địa phương: Mô hình proxy đánh giá các hàng còn lại tại địa phương mà không tốn chi phí mã thông báo LLM từ xa và có độ trễ cực thấp.

Chạy một truy vấn cơ sở mà không cần tối ưu hoá

Vì danh mục bigquery-public-data.cymbal_pets.products mẫu có quá ít hàng để kích hoạt quy trình chưng cất mô hình proxy, nên chúng ta sẽ sử dụng tập dữ liệu công khai lớn hơn bigquery-public-data.bbc_news.fulltext (chứa hơn 2.200 bài viết tin tức).

Trước tiên, hãy chạy truy vấn chuẩn mà không cần tối ưu hoá để xác định các bài viết tin tức về thảm hoạ thiên nhiên:

SELECT
  title,
  body
FROM
  `bigquery-public-data.bbc_news.fulltext`
WHERE
  AI.IF(
    ('The following news story is about a natural disaster: ', body)
  );

Kiểm tra thông tin chi tiết về công việc cơ sở và mức sử dụng mã thông báo

Sau khi truy vấn cơ sở hoàn tất, hãy kiểm tra các chỉ số thực thi:

  1. Trong ngăn kết quả ở dưới cùng của BigQuery Studio, hãy chọn thẻ Thông tin về công việc.
  2. Cuộn xuống phần Số token đầu vào và Số token đầu ra.

Kết quả sẽ có dạng tương tự như sau:

Thông tin về công việc của BigQuery Studio cho truy vấn cơ sở

  • Mức tiêu thụ mã thông báo của toàn bộ tập dữ liệu: Vì BigQuery gọi mô hình Gemini từ xa cho từng hàng trong số 2.225 bài viết tin tức mà không có tính năng tối ưu hoá proxy, nên truy vấn này tiêu thụ 1.279.072 mã thông báo đầu vào và 11.925 mã thông báo đầu ra.
  • Không có mục tối ưu hoá: Lưu ý rằng không có mục nhập Gen AI Function Optimizations vì quá trình thực thi tiêu chuẩn đánh giá từng hàng riêng lẻ dựa trên điểm cuối LLM từ xa.

Thực thi truy vấn ở chế độ được tối ưu hoá

Để giảm mức tiêu thụ mã thông báo và tận dụng tính năng chưng cất mô hình proxy, hãy bật chế độ tối ưu hoá bằng cách truyền embeddings => AI.EMBED(...) và đặt optimization_mode => 'MINIMIZE_COST':

SELECT
  title,
  body
FROM
  `bigquery-public-data.bbc_news.fulltext`
WHERE
  AI.IF(
    ('The following news story is about a natural disaster: ', body),
    embeddings => AI.EMBED(body, endpoint => 'text-embedding-005', task_type => 'CLASSIFICATION').result,
    optimization_mode => 'MINIMIZE_COST'
  );

Xác minh quá trình tối ưu hoá và quan sát mức sử dụng mã thông báo giảm

Sau khi chạy truy vấn được tối ưu hoá, hãy chuyển sang thẻ Thông tin về công việc của BigQuery Studio để xem mức sử dụng mã thông báo và các chỉ số thực thi so với nhau:

  1. Trong ngăn kết quả ở dưới cùng của BigQuery Studio, hãy chọn thẻ Thông tin về công việc.
  2. Di chuyển đến phần Tối ưu hoá hàm AI tạo sinh, cũng như số lượng mã thông báo.

Kết quả sẽ có dạng tương tự như sau:

Thông tin về công việc trong BigQuery Studio cho thấy các điểm tối ưu hoá hàm AI tạo sinh

  • Giảm đáng kể số token: Lưu ý cách Số token đầu vào giảm từ 1.279.072 token xuống 778.626 token – tiết kiệm 500.446 token đầu vào (giảm gần 40%) trong một lần chạy truy vấn! Tương tự, số lượng mã thông báo đầu ra cũng giảm.
  • Chưng cất proxy tự động: Lưu ý nhãn AI.IF('The following news s'): 875 out of 2225 rows optimized. Cost Optimization successfully applied. BigQuery lấy mẫu tập dữ liệu, gắn nhãn các bài viết đại diện bằng Gemini, chưng cất một trình phân loại proxy nhanh, gọn nhẹ và xử lý 875 trong số 2.225 hàng cục bộ trên CPU mà không cần gọi các điểm cuối LLM từ xa.
  • Tiết kiệm chi phí trực tiếp: Vì các hàm AI do BigQuery quản lý được tính phí dựa trên số lượng mã thông báo mô hình được xử lý, nên việc giảm mức tiêu thụ mã thông báo sẽ giúp giảm chi phí thực thi truy vấn.
  • Xác thực chất lượng: BigQuery tự động xác minh độ chính xác của mô hình proxy so với Gemini trước khi quảng bá mô hình đó để đánh giá các hàng còn lại, đảm bảo duy trì chất lượng phân loại.

Giảm mã thông báo và mở rộng quy mô độ trễ hơn nữa trên các bảng lớn hơn

Mặc dù việc tiết kiệm hơn 500.000 mã thông báo trên 2.225 hàng là đáng kể, nhưng mức giảm mã thông báo và mức tăng hiệu suất còn cao hơn nữa trên các bảng lớn hơn:

  • Tại sao việc giảm mã thông báo lại tỷ lệ thuận với quy mô tập dữ liệu: Đối với các truy vấn được thực thi trong BigQuery, các mô hình proxy được huấn luyện ngay lập tức bằng cách sử dụng mẫu ban đầu gồm khoảng 1.000 hàng do LLM gắn nhãn. Sau khi được huấn luyện và xác thực, mô hình proxy sẽ thay thế các lệnh gọi LLM trực tiếp trên các hàng còn lại. Đối với các truy vấn lớn hơn (chẳng hạn như tập dữ liệu điển hình có 1 triệu hàng), điều này giúp loại bỏ các lệnh gọi LLM cho phần lớn dữ liệu, tiêu thụ ít hơn tới 400 lần số lượng mã thông báo và giảm đáng kể chi phí.
  • Tăng tốc đáng kể độ trễ: Bằng cách chuyển suy luận từ phần cứng LLM chuyên dụng sang các mô hình proxy siêu nhẹ chạy trực tiếp trên CPU của worker cơ sở dữ liệu tiêu chuẩn (tận dụng các vectơ nhúng Gemini được tính toán trước), BigQuery giảm thời gian chạy truy vấn tổng thể từ 30 đến 100 lần.

10. Dọn dẹp tài nguyên

Để dọn dẹp các tài nguyên được tạo trong lớp học lập trình này, hãy chạy câu lệnh sau trong thẻ SQL của BigQuery Studio để xoá Cloud Resource Connection:

DROP CONNECTION IF EXISTS `us.conn`;

Ngoài ra, nếu đã tạo một dự án trên đám mây Google tạm thời chỉ dành riêng cho hướng dẫn này, bạn có thể tắt toàn bộ dự án trong Cloud Resource Manager.

11. Xin chúc mừng

Xin chúc mừng! Bạn đã hoàn tất thành công lớp học lập trình về Phân tích ngữ nghĩa trong BigQuery bằng các hàm AI được quản lý và SQL.

Bạn đã nắm vững các hàm AI tạo sinh được quản lý của BigQuery:

  • AI.SCORE: Xếp hạng sản phẩm theo các tiêu chí chủ quan như khả năng làm quà tặng trên thang điểm từ 1 đến 10 bằng cách sử dụng tính năng viết lại câu lệnh tự động.
  • AI.CLASSIFY: Phân loại các mục không có cấu trúc trong danh mục thành các phân loại động vật mục tiêu.
  • AI.IF (Lọc đa phương thức): Lọc các thành phần hình ảnh trong Cloud Storage trong các mệnh đề SQL WHERE dựa trên nội dung trực quan.
  • AI.IF (Kết hợp ngữ nghĩa): Thực hiện các thao tác kết hợp đa phương thức trong các mệnh đề SQL ON để liên kết nội dung mô tả sản phẩm bằng văn bản với các tệp hình ảnh.
  • AI.AGG: Tổng hợp văn bản danh mục không có cấu trúc gồm nhiều hàng thành một bản tóm tắt ngắn gọn.
  • Chế độ được tối ưu hoá và mô hình proxy: Tăng tốc truy vấn và giảm thiểu chi phí token bằng cách sử dụng optimization_mode => 'MINIMIZE_COST' với tính năng chưng cất mô hình tức thì và AI.EMBED.

Tìm hiểu thêm