1. Giới thiệu
Spanner là một dịch vụ cơ sở dữ liệu được quản lý toàn diện, có thể mở rộng theo chiều ngang và được phân phối trên toàn cầu, phù hợp với cả khối lượng công việc vận hành quan hệ và không quan hệ.
Spanner tích hợp tính năng hỗ trợ tìm kiếm vectơ, cho phép bạn thực hiện tìm kiếm ngữ nghĩa hoặc tìm kiếm tương đồng và triển khai tính năng tạo tăng cường truy xuất (RAG) trong các ứng dụng GenAI trên quy mô lớn, tận dụng các tính năng kẻ hàng xóm K chính xác nhất (KNN) hoặc kẻ hàng xóm gần nhất gần đúng (ANN).
Các truy vấn tìm kiếm vectơ của Spanner trả về dữ liệu mới nhất theo thời gian thực ngay khi các giao dịch được xác nhận, giống như mọi truy vấn khác trên dữ liệu hoạt động của bạn.
Trong lớp học này, bạn sẽ tìm hiểu cách thiết lập các tính năng cơ bản cần thiết để tận dụng Spanner nhằm thực hiện tìm kiếm vectơ, cũng như truy cập vào các mô hình nhúng và LLM từ vườn mô hình của VertexAI bằng SQL.
Cấu trúc sẽ có dạng như sau:
Với nền tảng đó, bạn sẽ tìm hiểu cách tạo chỉ mục vectơ được hỗ trợ bởi thuật toán ScaNN và sử dụng các hàm khoảng cách APPROX khi khối lượng công việc ngữ nghĩa cần mở rộng quy mô.
Sản phẩm bạn sẽ tạo ra
Trong lớp học này, bạn sẽ:
- Tạo một thực thể Spanner
- Thiết lập giản đồ cơ sở dữ liệu của Spanner để tích hợp với các mô hình nhúng và LLM trong VertexAI
- Tải tập dữ liệu bán lẻ
- Đưa ra cụm từ tìm kiếm tương đồng cho tập dữ liệu
- Cung cấp ngữ cảnh cho mô hình LLM để tạo đề xuất dành riêng cho sản phẩm.
- Sửa đổi giản đồ và tạo chỉ mục vectơ.
- Thay đổi các truy vấn để tận dụng chỉ mục vectơ mới tạo.
Kiến thức bạn sẽ học được
- Cách thiết lập một thực thể Spanner
- Cách tích hợp với VertexAI
- Cách sử dụng Spanner để tìm kiếm vectơ nhằm tìm các mặt hàng tương tự trong tập dữ liệu bán lẻ
- Cách chuẩn bị cơ sở dữ liệu để mở rộng quy mô khối lượng công việc tìm kiếm vectơ bằng tính năng tìm kiếm ANN.
Bạn cần có
2. Cách thiết lập và yêu cầu
Tạo một dự án
Nếu chưa có Tài khoản Google (Gmail hoặc Google Apps), bạn phải tạo một tài khoản. Đăng nhập vào bảng điều khiển Google Cloud Platform ( console.cloud.google.com) và tạo một dự án mới.
Nếu bạn đã có dự án, hãy nhấp vào trình đơn thả xuống để chọn dự án ở phía trên bên trái của bảng điều khiển:
rồi nhấp vào nút "NEW PROJECT" (DỰ ÁN MỚI) trong hộp thoại xuất hiện để tạo dự án mới:
Nếu chưa có dự án, bạn sẽ thấy một hộp thoại như sau để tạo dự án đầu tiên:
Hộp thoại tạo dự án tiếp theo cho phép bạn nhập thông tin chi tiết về dự án mới:
Hãy ghi nhớ mã dự án. Đây là một tên duy nhất trên tất cả các dự án Google Cloud (tên ở trên đã được sử dụng và không dùng được nữa, rất tiếc!). Mã này sẽ được gọi là PROJECT_ID ở phần sau của lớp học lập trình này.
Tiếp theo, nếu chưa thực hiện, bạn cần bật tính năng thanh toán trong Developers Console để sử dụng các tài nguyên của Google Cloud và bật Spanner API.
Việc tham gia lớp học lập trình này sẽ không tốn quá vài đô la, nhưng có thể tốn nhiều hơn nếu bạn quyết định sử dụng nhiều tài nguyên hơn hoặc nếu bạn để các tài nguyên đó chạy (xem phần "dọn dẹp" ở cuối tài liệu này). Bạn có thể xem thông tin về giá của Google Cloud Spanner tại đây.
Người dùng mới của Google Cloud Platform đủ điều kiện dùng thử 300 đô la Mỹ miễn phí, nhờ đó, bạn có thể tham gia lớp học lập trình này hoàn toàn miễn phí.
Thiết lập Google Cloud Shell
Mặc dù bạn có thể điều khiển Google Cloud và Spanner từ xa trên máy tính xách tay, nhưng trong lớp học lập trình này, chúng ta sẽ sử dụng Google Cloud Shell, một môi trường dòng lệnh chạy trên đám mây.
Máy ảo dựa trên Debian 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 trong Google Cloud, giúp cải thiện đáng kể hiệu suất mạng và xác thực. Điều này có nghĩa là tất cả những gì bạn cần cho lớp học lập trình này là một trình duyệt (có, trình duyệt này hoạt động trên Chromebook).
- Để kích hoạt Cloud Shell từ Cloud Console, bạn chỉ cần nhấp vào biểu tượng Kích hoạt Cloud Shell
(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).
Sau khi kết nối với Cloud Shell, bạn sẽ thấy mình đã được xác thực và dự án đã được đặt thành PROJECT_ID.
gcloud auth list
Kết quả của lệnh
Credentialed accounts:
- <myaccount>@<mydomain>.com (active)
gcloud config list project
Kết quả của lệnh
[core]
project = <PROJECT_ID>
Nếu vì lý do nào đó mà dự án không được đặt, bạn chỉ cần đưa ra lệnh sau:
gcloud config set project <PROJECT_ID>
Bạn đang tìm PROJECT_ID
? Kiểm tra mã nhận dạng mà bạn đã sử dụng trong các bước thiết lập hoặc tra cứu mã nhận dạng đó trong trang tổng quan của Cloud Console:
Theo mặc định, Cloud Shell cũng đặt một số biến môi trường. Các biến này có thể hữu ích khi bạn chạy các lệnh trong tương lai.
echo $GOOGLE_CLOUD_PROJECT
Kết quả của lệnh
<PROJECT_ID>
Bật Spanner API
gcloud services enable spanner.googleapis.com
Tóm tắt
Ở bước này, bạn đã thiết lập dự án (nếu chưa có), kích hoạt màn hình shell trên đám mây và bật các API cần thiết.
Tiếp theo
Tiếp theo, bạn sẽ thiết lập thực thể và cơ sở dữ liệu Spanner.
3. Tạo một thực thể và cơ sở dữ liệu Spanner
Tạo thực thể Spanner
Trong bước này, chúng ta thiết lập Thực thể Spanner cho lớp học lập trình. Để thực hiện việc này, hãy mở Cloud Shell và chạy lệnh sau:
export SPANNER_INSTANCE_ID=retail-demo
gcloud spanner instances create $SPANNER_INSTANCE_ID \
--config=regional-us-central1 \
--description="spanner AI retail demo" \
--nodes=1
Kết quả lệnh:
$ gcloud spanner instances create $SPANNER_INSTANCE_ID \
--config=regional-us-central1 \
--description="spanner AI retail demo" \
--nodes=1
Creating instance...done.
Tạo cơ sở dữ liệu
Sau khi thực thể đang chạy, bạn có thể tạo cơ sở dữ liệu. Spanner cho phép nhiều cơ sở dữ liệu trên một thực thể.
Cơ sở dữ liệu là nơi bạn xác định giản đồ. Bạn cũng có thể kiểm soát những người có quyền truy cập vào cơ sở dữ liệu, thiết lập phương thức mã hoá tuỳ chỉnh, định cấu hình trình tối ưu hoá và đặt khoảng thời gian lưu giữ.
Để tạo cơ sở dữ liệu, hãy sử dụng lại công cụ dòng lệnh gcloud:
export SPANNER_DATABASE=cymbal-bikes
gcloud spanner databases create $SPANNER_DATABASE \
--instance=$SPANNER_INSTANCE_ID
Kết quả lệnh:
$ gcloud spanner databases create $SPANNER_DATABASE \
--instance=$SPANNER_INSTANCE_ID
Creating database...done.
Tóm tắt
Ở bước này, bạn đã tạo thực thể và cơ sở dữ liệu Spanner.
Tiếp theo
Tiếp theo, bạn sẽ thiết lập giản đồ và dữ liệu Spanner.
4. Tải giản đồ và dữ liệu Cymbal
Tạo giản đồ Cymbal
Để thiết lập giản đồ, hãy chuyển đến Spanner Studio:
Lược đồ này có hai phần. Trước tiên, bạn muốn thêm bảng products
. Sao chép và dán câu lệnh này vào thẻ trống.
Đối với giản đồ, hãy sao chép và dán DDL này vào hộp:
CREATE TABLE products (
categoryId INT64 NOT NULL,
productId INT64 NOT NULL,
productName STRING(MAX) NOT NULL,
productDescription STRING(MAX) NOT NULL,
productDescriptionEmbedding ARRAY<FLOAT32>,
createTime TIMESTAMP NOT NULL OPTIONS (
allow_commit_timestamp = true
),
inventoryCount INT64 NOT NULL,
priceInCents INT64,
) PRIMARY KEY(categoryId, productId);
Sau đó, hãy nhấp vào nút run
và đợi vài giây để tạo giản đồ.
Tiếp theo, bạn sẽ tạo hai mô hình và định cấu hình các mô hình đó thành điểm cuối mô hình VertexAI.
Mô hình đầu tiên là mô hình Nhúng dùng để tạo các phần nhúng từ văn bản, còn mô hình thứ hai là mô hình LLM dùng để tạo câu trả lời dựa trên dữ liệu trong Spanner.
Dán giản đồ sau vào một thẻ mới trong Spanner Studio:
CREATE MODEL EmbeddingsModel INPUT(
content STRING(MAX),
) OUTPUT(
embeddings STRUCT<statistics STRUCT<truncated BOOL, token_count FLOAT32>, values ARRAY<FLOAT32>>,
) REMOTE OPTIONS (
endpoint = '//aiplatform.googleapis.com/projects/<PROJECT_ID>/locations/us-central1/publishers/google/models/text-embedding-004'
);
CREATE MODEL LLMModel INPUT(
prompt STRING(MAX),
) OUTPUT(
content STRING(MAX),
) REMOTE OPTIONS (
endpoint = '//aiplatform.googleapis.com/projects/<PROJECT_ID>/locations/us-central1/publishers/google/models/gemini-pro',
default_batch_size = 1
);
Sau đó, hãy nhấp vào nút run
và đợi vài giây để tạo các mô hình.
Trong ngăn bên trái của Spanner Studio, bạn sẽ thấy các bảng và mô hình sau:
Tải dữ liệu
Bây giờ, bạn sẽ muốn chèn một số sản phẩm vào cơ sở dữ liệu. Mở một thẻ mới trong Spanner Studio, sau đó sao chép và dán các câu lệnh chèn sau:
INSERT INTO products (categoryId, productId, productName, productDescription, createTime, inventoryCount, priceInCents)
VALUES (1, 1, "Cymbal Helios Helmet", "Safety meets style with the Cymbal children's bike helmet. Its lightweight design, superior ventilation, and adjustable fit ensure comfort and protection on every ride. Stay bright and keep your child safe under the sun with Cymbal Helios!", PENDING_COMMIT_TIMESTAMP(), 100, 10999),
(1, 2, "Cymbal Sprout", "Let their cycling journey begin with the Cymbal Sprout, the ideal balance bike for beginning riders ages 2-4 years. Its lightweight frame, low seat height, and puncture-proof tires promote stability and confidence as little ones learn to balance and steer. Watch them sprout into cycling enthusiasts with Cymbal Sprout!", PENDING_COMMIT_TIMESTAMP(), 10, 13999),
(1, 3, "Cymbal Spark Jr.", "Light, vibrant, and ready for adventure, the Spark Jr. is the perfect first bike for young riders (ages 5-8). Its sturdy frame, easy-to-use brakes, and puncture-resistant tires inspire confidence and endless playtime. Let the spark of cycling ignite with Cymbal!", PENDING_COMMIT_TIMESTAMP(), 34, 13900),
(1, 4, "Cymbal Summit", "Conquering trails is a breeze with the Summit mountain bike. Its lightweight aluminum frame, responsive suspension, and powerful disc brakes provide exceptional control and comfort for experienced bikers navigating rocky climbs or shredding downhill. Reach new heights with Cymbal Summit!", PENDING_COMMIT_TIMESTAMP(), 0, 79999),
(1, 5, "Cymbal Breeze", "Cruise in style and embrace effortless pedaling with the Breeze electric bike. Its whisper-quiet motor and long-lasting battery let you conquer hills and distances with ease. Enjoy scenic rides, commutes, or errands with a boost of confidence from Cymbal Breeze!", PENDING_COMMIT_TIMESTAMP(), 72, 129999),
(1, 6, "Cymbal Trailblazer Backpack", "Carry all your essentials in style with the Trailblazer backpack. Its water-resistant material, multiple compartments, and comfortable straps keep your gear organized and accessible, allowing you to focus on the adventure. Blaze new trails with Cymbal Trailblazer!", PENDING_COMMIT_TIMESTAMP(), 24, 7999),
(1, 7, "Cymbal Phoenix Lights", "See and be seen with the Phoenix bike lights. Powerful LEDs and multiple light modes ensure superior visibility, enhancing your safety and enjoyment during day or night rides. Light up your journey with Cymbal Phoenix!", PENDING_COMMIT_TIMESTAMP(), 87, 3999),
(1, 8, "Cymbal Windstar Pump", "Flat tires are no match for the Windstar pump. Its compact design, lightweight construction, and high-pressure capacity make inflating tires quick and effortless. Get back on the road in no time with Cymbal Windstar!", PENDING_COMMIT_TIMESTAMP(), 36, 24999),
(1, 9,"Cymbal Odyssey Multi-Tool","Be prepared for anything with the Odyssey multi-tool. This handy gadget features essential tools like screwdrivers, hex wrenches, and tire levers, keeping you ready for minor repairs and adjustments on the go. Conquer your journey with Cymbal Odyssey!", PENDING_COMMIT_TIMESTAMP(), 52, 999),
(1, 10,"Cymbal Nomad Water Bottle","Stay hydrated on every ride with the Nomad water bottle. Its sleek design, BPA-free construction, and secure lock lid make it the perfect companion for staying refreshed and motivated throughout your adventures. Hydrate and explore with Cymbal Nomad!", PENDING_COMMIT_TIMESTAMP(), 42, 1299);
Nhấp vào nút run
để chèn dữ liệu.
Tóm tắt
Ở bước này, bạn đã tạo giản đồ và tải một số dữ liệu cơ bản vào cơ sở dữ liệu cymbal-bikes
.
Tiếp theo
Tiếp theo, bạn sẽ tích hợp với mô hình Nhúng để tạo các nội dung nhúng cho nội dung mô tả sản phẩm, cũng như chuyển đổi yêu cầu tìm kiếm bằng văn bản thành nội dung nhúng để tìm kiếm các sản phẩm có liên quan.
5. Làm việc với các phần nhúng
Tạo nội dung nhúng vectơ cho nội dung mô tả sản phẩm
Để tính năng tìm kiếm nội dung tương tự hoạt động trên các sản phẩm, bạn cần tạo nội dung nhúng cho nội dung mô tả sản phẩm.
Với EmbeddingsModel
được tạo trong giản đồ, đây là câu lệnh DML UPDATE
đơn giản.
UPDATE products p1
SET productDescriptionEmbedding =
(SELECT embeddings.values from ML.PREDICT(MODEL EmbeddingsModel,
(SELECT productDescription as content FROM products p2 where p2.productId=p1.productId)))
WHERE categoryId=1;
Nhấp vào nút run
để cập nhật nội dung mô tả sản phẩm.
Sử dụng tính năng tìm kiếm vectơ
Trong ví dụ này, bạn sẽ cung cấp một yêu cầu tìm kiếm bằng ngôn ngữ tự nhiên thông qua truy vấn SQL. Truy vấn này sẽ biến yêu cầu tìm kiếm thành một nội dung nhúng, sau đó tìm kiếm các kết quả tương tự dựa trên nội dung nhúng được lưu trữ của nội dung mô tả sản phẩm được tạo ở bước trước.
-- Use Spanner's vector search, and integration with embedding and LLM models to
-- return items that are semantically relevant and available in inventory based on
-- real-time data.
SELECT productName, productDescription, inventoryCount, COSINE_DISTANCE(
productDescriptionEmbedding,
( SELECT embeddings.values
FROM ML.PREDICT(
MODEL EmbeddingsModel,
(SELECT "I'd like to buy a starter bike for my 3 year old child" as content)
)
)
) as distance
FROM products
WHERE inventoryCount > 0
ORDER BY distance
LIMIT 5;
Nhấp vào nút run
để tìm các sản phẩm tương tự. Kết quả sẽ có dạng như sau:
Lưu ý rằng các bộ lọc bổ sung được sử dụng trên truy vấn, chẳng hạn như chỉ quan tâm đến các sản phẩm còn hàng (inventoryCount > 0
).
Tóm tắt
Trong bước này, bạn đã tạo các phần nhúng mô tả sản phẩm và yêu cầu tìm kiếm bằng SQL, tận dụng tính năng tích hợp của Spanner với các mô hình trong VertexAI. Bạn cũng đã thực hiện một lượt tìm kiếm vectơ để tìm các sản phẩm tương tự phù hợp với yêu cầu tìm kiếm.
Các bước tiếp theo
Tiếp theo, hãy sử dụng kết quả tìm kiếm để đưa vào một LLM nhằm tạo phản hồi tuỳ chỉnh cho từng sản phẩm.
6. Làm việc với LLM
Spanner giúp bạn dễ dàng tích hợp với các mô hình LLM được phân phát từ VertexAI. Điều này cho phép nhà phát triển sử dụng SQL để giao tiếp trực tiếp với LLM, thay vì yêu cầu ứng dụng thực hiện logic.
Ví dụ: chúng ta có kết quả từ truy vấn SQL trước đó của người dùng "I'd like to buy a starter bike for my 3 year old child".
Nhà phát triển muốn cung cấp phản hồi cho từng kết quả về việc sản phẩm có phù hợp với người dùng hay không, bằng cách sử dụng câu lệnh sau:
"Answer with ‘Yes' or ‘No' and explain why: Is this a good fit for me? I'd like to buy a starter bike for my 3 year old child"
Sau đây là truy vấn bạn có thể sử dụng:
-- Use an LLM to analyze this list and provide a recommendation on whether each
-- product is a good fit for the user. We use the vector search and real time
-- inventory data to first filter the products to reduce the size of the prompt to
-- the LLM.
SELECT productName, productDescription, inventoryCount, content AS LLMResponse
FROM ML.PREDICT(
MODEL LLMModel,
( SELECT
inventoryCount,
productName,
productDescription,
CONCAT(
"Answer with ‘Yes' or ‘No' and explain why: Is this a good fit for me?",
"I'd like to buy a starter bike for my 3 year old child \n",
"Product Name: ", productName, "\n",
"Product Description:", productDescription) AS prompt,
FROM products
WHERE inventoryCount > 0
ORDER by COSINE_DISTANCE(
productDescriptionEmbedding,
( SELECT embeddings.values
FROM ML.PREDICT(
MODEL EmbeddingsModel,
( SELECT "I'd like to buy a starter bike for my 3 year old child" as content)
)
)
) LIMIT 5
),
STRUCT(256 AS maxOutputTokens)
);
Nhấp vào nút run
để đưa ra truy vấn. Kết quả sẽ có dạng như sau:
Sản phẩm đầu tiên phù hợp với trẻ 3 tuổi vì độ tuổi trong nội dung mô tả sản phẩm là (2-4 tuổi). Các sản phẩm khác không phù hợp lắm.
Tóm tắt
Ở bước này, bạn đã làm việc với một LLM để tạo các câu trả lời cơ bản cho lời nhắc của người dùng.
Các bước tiếp theo
Tiếp theo, hãy tìm hiểu cách sử dụng ANN để mở rộng quy mô tìm kiếm vectơ.
7. Tìm kiếm vectơ theo tỷ lệ
Các ví dụ về tìm kiếm vectơ trước đây đã tận dụng tính năng tìm kiếm vectơ KNN chính xác. Điều này rất hữu ích khi bạn có thể truy vấn các tập hợp con rất cụ thể của dữ liệu Spanner. Những loại truy vấn đó được gọi là có thể phân vùng cao.
Nếu không có khối lượng công việc có thể phân vùng cao và có một lượng lớn dữ liệu, bạn nên sử dụng tính năng tìm kiếm vectơ ANN bằng cách tận dụng thuật toán ScaNN để tăng hiệu suất tra cứu.
Để làm việc đó trong Spanner, bạn cần làm hai việc:
- Tạo chỉ mục vectơ
- Sửa đổi truy vấn của bạn để sử dụng các hàm khoảng cách APPROX.
Tạo chỉ mục vectơ
Để tạo chỉ mục vectơ trên tập dữ liệu này, trước tiên, chúng ta cần sửa đổi cột productDescriptionEmbeddings
để xác định độ dài của mỗi vectơ. Để thêm độ dài vectơ vào một cột, bạn phải thả cột ban đầu và tạo lại cột đó.
ALTER TABLE `products` DROP COLUMN `productDescriptionEmbedding`;
ALTER TABLE
`products` ADD COLUMN `productDescriptionEmbedding` ARRAY<FLOAT32>(vector_length=>768);
Tiếp theo, hãy tạo lại các phần nhúng từ bước Generate Vector embedding
mà bạn đã chạy trước đó.
UPDATE products p1
SET productDescriptionEmbedding =
(SELECT embeddings.values from ML.PREDICT(MODEL EmbeddingsModel,
(SELECT productDescription as content FROM products p2 where p2.productId=p1.productId)))
WHERE categoryId=1;
Sau khi tạo cột, hãy tạo chỉ mục:
CREATE VECTOR INDEX ProductDescriptionEmbeddingIndex
ON products(productDescriptionEmbedding)
WHERE productDescriptionEmbedding IS NOT NULL
OPTIONS (
distance_type = 'COSINE'
);
Sử dụng chỉ mục mới
Để sử dụng chỉ mục vectơ mới, bạn sẽ phải sửa đổi một chút truy vấn nhúng trước đó.
Sau đây là truy vấn ban đầu:
SELECT productName, productDescription, inventoryCount, COSINE_DISTANCE(
productDescriptionEmbedding,
( SELECT embeddings.values
FROM ML.PREDICT(
MODEL EmbeddingsModel,
(SELECT "I'd like to buy a starter bike for my 3 year old child" as content)
)
)
) as distance
FROM products
WHERE inventoryCount > 0
ORDER BY distance
LIMIT 5;
Bạn sẽ phải thực hiện những thay đổi sau:
- Sử dụng gợi ý chỉ mục cho chỉ mục vectơ mới:
@{force_index=ProductDescriptionEmbeddingIndex}
- Thay đổi lệnh gọi hàm
COSINE_DISTANCE
thànhAPPROX_COSINE_DISTANCE
. Lưu ý rằng bạn cũng phải sử dụng các tuỳ chọn JSON trong truy vấn cuối cùng bên dưới. - Tạo các phần nhúng từ hàm ML.PREDICT riêng biệt.
- Sao chép kết quả của các phần nhúng vào truy vấn cuối cùng.
Tạo nội dung nhúng
-- Generate the prompt embeddings
SELECT embeddings.values
FROM ML.PREDICT(
MODEL EmbeddingsModel,
(SELECT "I'd like to buy a starter bike for my 3 year old child" as content)
)
)
Đánh dấu kết quả của truy vấn rồi sao chép.
Sau đó, thay thế <VECTOR>
trong truy vấn sau bằng cách dán nội dung nhúng mà bạn đã sao chép.
-- Embedding query now using the vector index
SELECT productName, productDescription, inventoryCount,
APPROX_COSINE_DISTANCE(productDescriptionEmbedding, array<float32>[@VECTOR], options => JSON '{\"num_leaves_to_search\": 10}')
FROM products @{force_index=ProductDescriptionEmbeddingIndex}
WHERE productDescriptionEmbedding IS NOT NULL AND inventoryCount > 0
ORDER BY distance
LIMIT 5;
Hàm này có dạng như sau:
Tóm tắt
Ở bước này, bạn đã chuyển đổi giản đồ để tạo chỉ mục vectơ. Sau đó, bạn đã viết lại truy vấn nhúng để thực hiện tìm kiếm ANN bằng chỉ mục vectơ. Đây là một bước quan trọng khi dữ liệu của bạn phát triển để mở rộng khối lượng công việc tìm kiếm vectơ.
Các bước tiếp theo
Tiếp theo, đã đến lúc dọn dẹp!
8. Dọn dẹp (không bắt buộc)
Để dọn dẹp, bạn chỉ cần chuyển đến mục Cloud Spanner của Cloud Console rồi xoá thực thể 'retail-demo
' mà chúng ta đã tạo trong lớp học lập trình.
9. Xin chúc mừng!
Xin chúc mừng! Bạn đã thực hiện thành công một lượt tìm kiếm tương đồng bằng tính năng tìm kiếm vectơ tích hợp của Spanner. Ngoài ra, bạn đã thấy việc sử dụng các mô hình nhúng và LLM để cung cấp chức năng AI tạo sinh trực tiếp bằng SQL thật dễ dàng.
Cuối cùng, bạn đã tìm hiểu quy trình thực hiện tìm kiếm ANN dựa trên thuật toán ScaNN để mở rộng quy mô khối lượng công việc tìm kiếm vectơ.
Tiếp theo là gì?
Tìm hiểu thêm về tính năng tìm kiếm vectơ KNN (tìm kiếm k-hàng xóm gần nhất) chính xác của Spanner tại đây: https://cloud.google.com/spanner/docs/find-k-nearest-neighbors
Tìm hiểu thêm về tính năng tìm kiếm vectơ ANN (tìm kiếm vectơ ANN) của Spanner tại đây: https://cloud.google.com/spanner/docs/find-approximate-nearest-neighbors
Bạn cũng có thể đọc thêm về cách thực hiện dự đoán trực tuyến bằng SQL thông qua tính năng tích hợp VertexAI của Spanner tại đây: https://cloud.google.com/spanner/docs/ml