1. مقدمه
Spanner یک سرویس پایگاه داده کاملاً مدیریت شده، مقیاس پذیر افقی و توزیع شده در سطح جهانی است که برای بارهای کاری عملیاتی رابطه ای و غیر رابطه ای عالی است.
Spanner دارای پشتیبانی داخلی جستجوی برداری است که به شما امکان میدهد شباهت یا جستجوی معنایی را انجام دهید و نسل افزوده بازیابی (RAG) را در برنامههای GenAI در مقیاس پیادهسازی کنید و از ویژگیهای K-nearest همسایه (KNN) یا نزدیکترین همسایه تقریبی (ANN) استفاده کنید.
پرسوجوهای جستجوی برداری Spanner به محض انجام تراکنشها، دادههای بیدرنگ تازه را برمیگردانند، درست مانند هر پرس و جوی دیگری در دادههای عملیاتی شما.
در این آزمایشگاه، راهاندازی ویژگیهای اساسی مورد نیاز برای استفاده از Spanner برای انجام جستجوی برداری، و دسترسی به مدلهای جاسازی و LLM از باغ مدل VertexAI با استفاده از SQL را بررسی خواهید کرد.
معماری به شکل زیر خواهد بود:
با این پایه، یاد خواهید گرفت که چگونه یک نمایه برداری با پشتوانه الگوریتم ScaNN ایجاد کنید، و زمانی که حجم کاری معنایی شما نیاز به مقیاس بندی دارد، از توابع فاصله APPROX استفاده کنید.
چیزی که خواهی ساخت
به عنوان بخشی از این آزمایشگاه، شما:
- یک نمونه Spanner ایجاد کنید
- طرحواره پایگاه داده Spanner را برای ادغام با مدل های embedding و LLM در VertexAI تنظیم کنید
- یک مجموعه داده خرده فروشی را بارگیری کنید
- پرس و جوهای جستجوی شباهت را در برابر مجموعه داده صادر کنید
- زمینه را برای مدل LLM برای ایجاد توصیه های خاص محصول فراهم کنید.
- طرحواره را تغییر دهید و یک نمایه برداری ایجاد کنید.
- پرس و جوها را تغییر دهید تا از شاخص برداری تازه ایجاد شده استفاده کنید.
چیزی که یاد خواهید گرفت
- نحوه راه اندازی یک نمونه Spanner
- نحوه ادغام با VertexAI
- نحوه استفاده از Spanner برای انجام جستجوی برداری برای یافتن موارد مشابه در مجموعه داده خرده فروشی
- چگونه پایگاه داده خود را برای مقیاس بندی حجم کاری جستجوی برداری با استفاده از جستجوی ANN آماده کنید.
آنچه شما نیاز دارید
2. راه اندازی و الزامات
یک پروژه ایجاد کنید
اگر قبلاً یک حساب Google (Gmail یا Google Apps) ندارید، باید یک حساب ایجاد کنید . به کنسول Google Cloud Platform ( consol.cloud.google.com ) وارد شوید و یک پروژه جدید ایجاد کنید.
اگر قبلاً پروژه ای دارید، روی منوی کشویی انتخاب پروژه در سمت چپ بالای کنسول کلیک کنید:
و روی دکمه "پروژه جدید" در گفتگوی حاصل کلیک کنید تا یک پروژه جدید ایجاد کنید:
اگر قبلاً پروژه ای ندارید، باید یک دیالوگ مانند این را ببینید تا اولین پروژه خود را ایجاد کنید:
گفتگوی بعدی ایجاد پروژه به شما امکان می دهد جزئیات پروژه جدید خود را وارد کنید:
شناسه پروژه را به خاطر بسپارید، که یک نام منحصر به فرد در تمام پروژه های Google Cloud است (نام بالا قبلاً گرفته شده است و برای شما کار نخواهد کرد، متأسفیم!). بعداً در این آزمایشگاه کد به عنوان PROJECT_ID نامیده خواهد شد.
در مرحله بعد، اگر قبلاً این کار را انجام ندادهاید، برای استفاده از منابع Google Cloud و فعال کردن Spanner API، باید صورتحساب را در Developers Console فعال کنید .
گذراندن این کد نباید بیش از چند دلار هزینه داشته باشد، اما اگر تصمیم به استفاده از منابع بیشتری داشته باشید یا آنها را در حال اجرا رها کنید، ممکن است بیشتر باشد (به بخش "پاکسازی" در انتهای این سند مراجعه کنید). قیمت Google Cloud Spanner در اینجا مستند شده است.
کاربران جدید Google Cloud Platform واجد شرایط استفاده آزمایشی رایگان 300 دلاری هستند که باید این نرم افزار کد را کاملاً رایگان کند.
Google Cloud Shell Setup
در حالی که Google Cloud و Spanner را میتوان از راه دور از لپتاپ شما کار کرد، در این نرمافزار از Google Cloud Shell استفاده میکنیم، یک محیط خط فرمان که در Cloud اجرا میشود.
این ماشین مجازی مبتنی بر دبیان با تمام ابزارهای توسعه که شما نیاز دارید بارگذاری شده است. این دایرکتوری اصلی 5 گیگابایتی دائمی را ارائه می دهد و در Google Cloud اجرا می شود و عملکرد شبکه و احراز هویت را بسیار افزایش می دهد. این بدان معنی است که تمام چیزی که برای این کد لبه نیاز دارید یک مرورگر است (بله، روی کروم بوک کار می کند).
- برای فعال کردن Cloud Shell از Cloud Console، کافی است روی Activate Cloud Shell کلیک کنید.
(تهیه و اتصال به محیط فقط چند لحظه طول می کشد).
پس از اتصال به Cloud Shell، باید ببینید که قبلاً احراز هویت شده اید و پروژه قبلاً روی PROJECT_ID شما تنظیم شده است.
gcloud auth list
خروجی فرمان
Credentialed accounts:
- <myaccount>@<mydomain>.com (active)
gcloud config list project
خروجی فرمان
[core]
project = <PROJECT_ID>
اگر به دلایلی پروژه تنظیم نشد، به سادگی دستور زیر را صادر کنید:
gcloud config set project <PROJECT_ID>
به دنبال PROJECT_ID
خود هستید؟ بررسی کنید از چه شناسه ای در مراحل راه اندازی استفاده کرده اید یا آن را در داشبورد Cloud Console جستجو کنید:
Cloud Shell همچنین برخی از متغیرهای محیطی را به صورت پیشفرض تنظیم میکند که ممکن است هنگام اجرای دستورات آینده مفید باشند.
echo $GOOGLE_CLOUD_PROJECT
خروجی فرمان
<PROJECT_ID>
Spanner API را فعال کنید
gcloud services enable spanner.googleapis.com
خلاصه
در این مرحله اگر قبلاً یکی نداشتید، پروژه خود را تنظیم کرده اید، پوسته ابری را فعال کرده اید و API های مورد نیاز را فعال کرده اید.
بعدی
در مرحله بعد، نمونه و پایگاه داده Spanner را تنظیم خواهید کرد.
3. یک نمونه و پایگاه داده Spanner ایجاد کنید
نمونه Spanner را ایجاد کنید
در این مرحله ما نمونه Spanner خود را برای Codelab راه اندازی کردیم. برای انجام این کار، Cloud Shell را باز کنید و این دستور را اجرا کنید:
export SPANNER_INSTANCE_ID=retail-demo
gcloud spanner instances create $SPANNER_INSTANCE_ID \
--config=regional-us-central1 \
--description="spanner AI retail demo" \
--nodes=1
خروجی فرمان:
$ gcloud spanner instances create $SPANNER_INSTANCE_ID \
--config=regional-us-central1 \
--description="spanner AI retail demo" \
--nodes=1
Creating instance...done.
پایگاه داده را ایجاد کنید
هنگامی که نمونه شما اجرا می شود، می توانید پایگاه داده را ایجاد کنید. Spanner اجازه می دهد تا چندین پایگاه داده در یک نمونه واحد وجود داشته باشد.
پایگاه داده جایی است که شما طرحواره خود را تعریف می کنید. شما همچنین می توانید کنترل کنید که چه کسی به پایگاه داده دسترسی دارد، رمزگذاری سفارشی را تنظیم کنید، بهینه ساز را پیکربندی کنید و دوره نگهداری را تنظیم کنید.
برای ایجاد پایگاه داده، دوباره از ابزار خط فرمان gcloud استفاده کنید:
export SPANNER_DATABASE=cymbal-bikes
gcloud spanner databases create $SPANNER_DATABASE \
--instance=$SPANNER_INSTANCE_ID
خروجی فرمان:
$ gcloud spanner databases create $SPANNER_DATABASE \
--instance=$SPANNER_INSTANCE_ID
Creating database...done.
خلاصه
در این مرحله شما نمونه و پایگاه داده Spanner را ایجاد کرده اید.
بعدی
در مرحله بعد، طرح و داده های Spanner را تنظیم خواهید کرد.
4. طرحواره و داده های سنج را بارگذاری کنید
طرح سنج را ایجاد کنید
برای تنظیم طرحواره، به Spanner Studio بروید:
طرحواره دو بخش دارد. ابتدا می خواهید جدول products
را اضافه کنید. این عبارت را در تب خالی کپی و پیست کنید.
برای طرح، این DDL را کپی و در کادر قرار دهید:
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);
سپس روی دکمه run
کلیک کنید و چند ثانیه صبر کنید تا طرح شما ساخته شود.
در مرحله بعد، شما دو مدل را ایجاد کرده و آنها را در نقاط انتهایی مدل VertexAI پیکربندی خواهید کرد.
مدل اول یک مدل Embedding است که برای تولید جاسازی ها از متن استفاده می شود و مدل دوم یک مدل LLM است که برای تولید پاسخ ها بر اساس داده های Spanner استفاده می شود.
طرح زیر را در یک برگه جدید در 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
);
سپس روی دکمه run
کلیک کنید و چند ثانیه صبر کنید تا مدل های شما ساخته شوند.
در قسمت سمت چپ Spanner Studio باید جداول و مدل های زیر را مشاهده کنید:
داده ها را بارگذاری کنید
اکنون، می خواهید برخی از محصولات را در پایگاه داده خود وارد کنید. یک برگه جدید در Spanner Studio باز کنید، سپس عبارت های درج زیر را کپی و جایگذاری کنید:
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);
برای درج داده ها روی دکمه run
کلیک کنید.
خلاصه
در این مرحله شما طرحی را ایجاد کردید و برخی از داده های اولیه را در پایگاه داده cymbal-bikes
بارگذاری کردید.
بعدی
در مرحله بعد، شما با مدل Embedding ادغام میشوید تا تعبیههایی برای توضیحات محصول ایجاد کنید، و همچنین درخواست جستجوی متنی را به یک جاسازی برای جستجوی محصولات مرتبط تبدیل کنید.
5. با جاسازی کار کنید
جاسازی های برداری را برای توضیحات محصول ایجاد کنید
برای اینکه جستجوی شباهت روی محصولات کار کند، باید تعبیههایی را برای توضیحات محصول ایجاد کنید.
با EmbeddingsModel
ایجاد شده در طرحواره، این یک عبارت ساده UPDATE
DML است.
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;
برای به روز رسانی توضیحات محصول، روی دکمه run
کلیک کنید.
با استفاده از جستجوی برداری
در این مثال، شما یک درخواست جستجوی زبان طبیعی را از طریق پرس و جوی SQL ارائه می دهید. این پرس و جو درخواست جستجو را به یک جاسازی تبدیل می کند، سپس نتایج مشابه را بر اساس جاسازی های ذخیره شده توضیحات محصول که در مرحله قبل ایجاد شده بود جستجو می کند.
-- 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;
برای یافتن محصولات مشابه روی دکمه run
کلیک کنید. نتایج باید به این صورت باشد:
توجه داشته باشید که فیلترهای اضافی در پرس و جو استفاده می شود، مانند علاقه مندی فقط به محصولات موجود در انبار ( inventoryCount > 0
).
خلاصه
در این مرحله، تعبیههای توصیف محصول و جاسازی درخواست جستجو با استفاده از SQL ایجاد کردید، و از ادغام Spanner با مدلها در VertexAI استفاده کردید. شما همچنین یک جستجوی برداری انجام دادید تا محصولات مشابهی را پیدا کنید که با درخواست جستجو مطابقت دارند.
مراحل بعدی
در مرحله بعد، بیایید از نتایج جستجو برای تغذیه به یک LLM برای ایجاد یک پاسخ سفارشی برای هر محصول استفاده کنیم.
6. با یک LLM کار کنید
Spanner ادغام با مدل های LLM ارائه شده از VertexAI را آسان می کند. این به توسعه دهندگان اجازه می دهد تا از SQL برای ارتباط مستقیم با LLM ها استفاده کنند، نه اینکه برنامه را ملزم به اجرای منطق کنند.
به عنوان مثال، ما نتایج پرس و جو قبلی SQL از کاربر "I'd like to buy a starter bike for my 3 year old child".
توسعهدهنده میخواهد با استفاده از اعلان زیر برای هر نتیجه پاسخی در مورد مناسب بودن محصول برای کاربر ارائه دهد:
"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"
در اینجا سؤالی است که می توانید استفاده کنید:
-- 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)
);
برای صدور پرس و جو، روی دکمه run
کلیک کنید. نتایج باید به این صورت باشد:
محصول اول به دلیل محدوده سنی در توضیحات محصول (2 تا 4 سال) برای کودکان 3 ساله مناسب است. محصولات دیگر مناسب نیستند.
خلاصه
در این مرحله، شما با یک LLM کار کردید تا پاسخهای اساسی به درخواستهای یک کاربر تولید کنید.
مراحل بعدی
در مرحله بعد، بیایید نحوه استفاده از ANN برای مقیاس بندی جستجوی برداری را بیاموزیم.
7. مقیاس جستجوی برداری
نمونههای جستجوی برداری قبلی از جستجوی برداری دقیق KNN استفاده میکردند. زمانی که بتوانید زیرمجموعه های بسیار خاصی از داده های Spanner خود را پرس و جو کنید، عالی است. گفته می شود که این نوع پرس و جوها دارای قابلیت پارتیشن بندی بالا هستند.
اگر حجم کاری ندارید که قابلیت پارتیشن بندی بالایی دارد و حجم زیادی از داده دارید، می خواهید از جستجوی برداری ANN با استفاده از الگوریتم ScaNN برای افزایش عملکرد جستجو استفاده کنید.
برای انجام این کار در Spanner، باید دو کار را انجام دهید:
- یک نمایه برداری ایجاد کنید
- درخواست خود را برای استفاده از توابع فاصله APPROX تغییر دهید.
نمایه برداری را ایجاد کنید
برای ایجاد یک نمایه برداری در این مجموعه داده، ابتدا باید ستون productDescriptionEmbeddings
را تغییر دهیم تا طول هر بردار را تعریف کنیم. برای اضافه کردن طول برداری به یک ستون، باید ستون اصلی را رها کرده و دوباره ایجاد کنید.
ALTER TABLE `products` DROP COLUMN `productDescriptionEmbedding`;
ALTER TABLE
`products` ADD COLUMN `productDescriptionEmbedding` ARRAY<FLOAT32>(vector_length=>768);
سپس، مجدداً embedding ها را از مرحله Generate Vector embedding
که قبلاً اجرا کرده بودید ایجاد کنید.
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;
پس از ایجاد ستون، ایندکس را ایجاد کنید:
CREATE VECTOR INDEX ProductDescriptionEmbeddingIndex
ON products(productDescriptionEmbedding)
WHERE productDescriptionEmbedding IS NOT NULL
OPTIONS (
distance_type = 'COSINE'
);
از شاخص جدید استفاده کنید
برای استفاده از نمایه برداری جدید، باید کوئری تعبیه شده قبلی را کمی تغییر دهید.
در اینجا پرس و جو اصلی است:
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;
شما باید تغییرات زیر را انجام دهید:
- از یک اشاره شاخص برای نمایه برداری جدید استفاده کنید:
@{force_index=ProductDescriptionEmbeddingIndex}
- فراخوانی تابع
COSINE_DISTANCE
را بهAPPROX_COSINE_DISTANCE
تغییر دهید. توجه داشته باشید که گزینه های JSON در پرس و جو نهایی زیر نیز لازم است. - جاسازی ها را از تابع ML.PREDICT به طور جداگانه ایجاد کنید.
- نتایج تعبیهها را در کوئری نهایی کپی کنید.
جاسازی ها را ایجاد کنید
-- 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)
)
)
نتایج حاصل از پرس و جو را برجسته کرده و آنها را کپی کنید.
سپس با جایگذاری جاسازی هایی که کپی کرده اید، <VECTOR>
را در عبارت زیر جایگزین کنید.
-- 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;
باید چیزی شبیه این باشد:
خلاصه
در این مرحله شما طرحواره خود را برای ایجاد یک نمایه برداری تبدیل کردید. و سپس پرس و جوی جاسازی را برای انجام جستجوی ANN با استفاده از نمایه برداری بازنویسی کردید. این یک گام مهم است زیرا داده های شما برای مقیاس کردن حجم کاری جستجوی برداری افزایش می یابد.
مراحل بعدی
بعد، زمان تمیز کردن است!
8. تمیز کردن (اختیاری)
برای پاکسازی، کافی است به بخش Cloud Spanner در Cloud Console بروید و نمونه « retail-demo
» را که در کد لبه ایجاد کردیم حذف کنید.
9. تبریک می گویم!
تبریک میگوییم، شما با موفقیت جستجوی مشابهی را با استفاده از جستجوی برداری داخلی Spanner انجام دادید. علاوه بر این، دیدید که کار با مدلهای embedding و LLM برای ارائه قابلیتهای هوش مصنوعی مستقیماً با استفاده از SQL چقدر آسان است.
در نهایت، فرآیند انجام جستجوی ANN را با پشتیبانی الگوریتم ScaNN برای مقیاسبندی حجمهای کاری جستجوی برداری یاد گرفتید.
بعدش چی؟
درباره ویژگی دقیق نزدیکترین همسایه Spanner (جستجوی برداری KNN) در اینجا بیشتر بیاموزید: https://cloud.google.com/spanner/docs/find-k-nearest-neighbors
درباره ویژگی نزدیکترین همسایه تقریبی Spanner (جستجوی برداری ANN) در اینجا بیشتر بیاموزید: https://cloud.google.com/spanner/docs/find-approximate-nearest-neighbors
همچنین میتوانید درباره نحوه انجام پیشبینیهای آنلاین با SQL با استفاده از ادغام VertexAI Spanner در اینجا بیشتر بخوانید: https://cloud.google.com/spanner/docs/ml