เริ่มต้นใช้งานการค้นหาเวกเตอร์ของ Spanner

1. เกริ่นนำ

SPANer เป็นบริการฐานข้อมูลที่มีการจัดการครบวงจรและรองรับการปรับขนาดได้อย่างเต็มรูปแบบและกระจายอยู่ทั่วโลก ซึ่งเหมาะสำหรับภาระงานด้านการดำเนินงานทั้งแบบเชิงสัมพันธ์และไม่สัมพันธ์กัน

การเปิดตัวฟังก์ชัน K-Nabor ใกล้เคียงที่สุดทำให้ขณะนี้ Spanner เป็นฐานข้อมูลเวกเตอร์ที่รองรับการปรับขนาดได้อย่างมาก ซึ่งช่วยให้คุณดำเนินการค้นหาตามความหมายหรือความคล้ายคลึงกัน รวมถึงนำการสร้างแบบเสริม (RAG) แบบดึงข้อมูลมาในแอปพลิเคชัน GenAI ได้ในวงกว้าง คำค้นหาเวกเตอร์ของ Spanner จะแสดงข้อมูลสดแบบเรียลไทม์ทันทีที่มีการดำเนินการธุรกรรม เช่นเดียวกับคำค้นหาอื่นๆ ในข้อมูลการดำเนินการของคุณ

ในห้องทดลองนี้ คุณจะได้รู้จักกับการตั้งค่าฟีเจอร์พื้นฐานที่จำเป็นต่อการใช้ประโยชน์จาก Spanner เพื่อค้นหาเวกเตอร์ และเข้าถึงการฝังและโมเดล LLM จากสวนโมเดลของ VertexAI โดยใช้ SQL

สถาปัตยกรรมจะมีลักษณะดังนี้

d179a760add7adc0.png

สิ่งที่คุณจะสร้าง

ในห้องทดลองนี้ คุณจะทำสิ่งต่อไปนี้ได้

  • สร้างอินสแตนซ์ Spanner
  • ตั้งค่าสคีมาฐานข้อมูลของ Spanner เพื่อผสานรวมกับโมเดล LLM และการฝังใน VertexAI
  • โหลดชุดข้อมูลการค้าปลีก
  • ออกคำค้นหาความคล้ายคลึงกันกับชุดข้อมูล
  • ระบุบริบทให้กับโมเดล LLM เพื่อสร้างคำแนะนำเฉพาะผลิตภัณฑ์

สิ่งที่คุณจะได้เรียนรู้

  • วิธีตั้งค่าอินสแตนซ์ Spanner
  • วิธีผสานรวมกับ VertexAI
  • วิธีใช้ Spanner ในการค้นหาเวกเตอร์เพื่อค้นหารายการที่คล้ายกันในชุดข้อมูลการค้าปลีก

สิ่งที่ต้องมี

  • โปรเจ็กต์ Google Cloud ที่เชื่อมต่อกับบัญชีสำหรับการเรียกเก็บเงิน
  • เว็บเบราว์เซอร์ เช่น Chrome หรือ Firefox

2. การตั้งค่าและข้อกำหนด

สร้างโปรเจ็กต์

หากยังไม่มีบัญชี Google (Gmail หรือ Google Apps) คุณต้องสร้างบัญชีก่อน ลงชื่อเข้าใช้คอนโซล Google Cloud Platform ( console.cloud.google.com) แล้วสร้างโปรเจ็กต์ใหม่

หากคุณมีโปรเจ็กต์อยู่แล้ว ให้คลิกเมนูแบบเลื่อนลงสำหรับการเลือกโปรเจ็กต์ที่ด้านซ้ายบนของคอนโซล

6c9406d9b014760.png

แล้วคลิกปุ่ม "โปรเจ็กต์ใหม่" ในกล่องโต้ตอบที่ปรากฏขึ้นเพื่อสร้างโปรเจ็กต์ใหม่ ดังนี้

949d83c8a4ee17d9.png

หากคุณยังไม่มีโปรเจ็กต์ คุณจะเห็นกล่องโต้ตอบลักษณะนี้ให้สร้างโปรเจ็กต์แรก

870a3cbd6541ee86.png

กล่องโต้ตอบการสร้างโปรเจ็กต์ที่ตามมาจะให้คุณป้อนรายละเอียดของโปรเจ็กต์ใหม่:

6a92c57d3250a4b3.png

โปรดจำรหัสโปรเจ็กต์ ซึ่งเป็นชื่อที่ไม่ซ้ำกันในโปรเจ็กต์ Google Cloud ทั้งหมด (ระบบใช้ชื่อด้านบนนี้ไปแล้ว และจะใช้ไม่ได้ ขออภัย) โดยจะเรียกใน Codelab ว่า PROJECT_ID ในภายหลัง

ขั้นตอนถัดไป คุณจะต้องเปิดใช้การเรียกเก็บเงินใน Developers Console เพื่อใช้ทรัพยากร Google Cloud และเปิดใช้ Spanner API หากยังไม่ได้ดำเนินการ

15d0ef27a8fbab27.png

การใช้งาน Codelab นี้น่าจะมีค่าใช้จ่ายไม่เกิน 2-3 ดอลลาร์ แต่อาจมากกว่านี้หากคุณตัดสินใจใช้ทรัพยากรเพิ่มหรือปล่อยให้ทำงาน (ดูส่วน "ล้างข้อมูล" ในตอนท้ายของเอกสารนี้) ดูข้อมูลเกี่ยวกับราคาของ Google Cloud Spanner ได้ที่นี่

ผู้ใช้ใหม่ของ Google Cloud Platform จะมีสิทธิ์ทดลองใช้ฟรี$300 ซึ่งจะทำให้ Codelab นี้ไม่มีค่าใช้จ่ายทั้งหมด

การตั้งค่า Google Cloud Shell

แม้ว่า Google Cloud และ Spanner จะทำงานจากระยะไกลได้จากแล็ปท็อป แต่ใน Codelab นี้ เราจะใช้ Google Cloud Shell ซึ่งเป็นสภาพแวดล้อมแบบบรรทัดคำสั่งที่ทำงานในระบบคลาวด์

เครื่องเสมือนแบบ Debian นี้เต็มไปด้วยเครื่องมือการพัฒนาทั้งหมดที่คุณต้องการ โดยมีไดเรกทอรีหลักขนาด 5 GB ที่ทำงานอย่างต่อเนื่องใน Google Cloud ซึ่งจะช่วยเพิ่มประสิทธิภาพของเครือข่ายและการตรวจสอบสิทธิ์ได้อย่างมาก ซึ่งหมายความว่าสิ่งที่คุณต้องมีสำหรับ Codelab นี้คือเบราว์เซอร์ (ใช่แล้ว ทั้งหมดนี้ทำงานได้บน Chromebook)

  1. หากต้องการเปิดใช้งาน Cloud Shell จาก Cloud Console เพียงคลิกเปิดใช้งาน Cloud Shell gcLMt5IuEcJJNnMId-Bcz3sxCd0rZn7IzT_r95C8UZeqML68Y1efBG_B0VRp7hc7qiZTLAF-TXD7SsOadxn8uadgHhaLeASnVS3ZHK39eOlKJOgj9SJua_oeGhMxRrbOg3qigddS2A (การจัดสรรและเชื่อมต่อกับสภาพแวดล้อมซึ่งจะใช้เวลาเพียงไม่นาน)

JjEuRXGg0AYYIY6QZ8d-66gx_Mtc-_jDE9ijmbXLJSAXFvJt-qUpNtsBsYjNpv2W6BQSrDc1D-ARINNQ-1EkwUhz-iUK-FUCZhJ-NtjvIEx9pIkE-246DomWuCfiGHK78DgoeWkHRw

Screen Shot 14-06-2017 เวลา 22.13.43 น.

เมื่อเชื่อมต่อกับ 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

158fNPfwSxsFqz9YbtJVZes8viTS3d1bV4CVhij3XPxuzVFOtTObnwsphlm6lYGmgdMFwBJtc-FaLrZU7XHAg_ZYoCrgombMRR3h-eolLPcvO351c5iBv506B3ZwghZoiRg6cz23Qw

Cloud Shell ยังตั้งค่าตัวแปรสภาพแวดล้อมโดยค่าเริ่มต้นด้วย ซึ่งอาจเป็นประโยชน์เมื่อคุณเรียกใช้คำสั่งในอนาคต

echo $GOOGLE_CLOUD_PROJECT

เอาต์พุตจากคำสั่ง

<PROJECT_ID>

เปิดใช้ Spanner API

gcloud services enable spanner.googleapis.com

สรุป

ในขั้นตอนนี้ คุณจะได้ตั้งค่าโปรเจ็กต์หากยังไม่มี เปิดใช้งาน Cloud Shell และเปิดใช้ 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. โหลดสคีมาและข้อมูลของ Cymbal

สร้างสคีมา Cymbal

ไปที่ Spanner Studio เพื่อตั้งค่าสคีมา ดังนี้

3e1a0fed928b33cf.png

สคีมาประกอบด้วย 2 ส่วน ขั้นแรกให้เพิ่มตาราง 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<FLOAT64>,
createTime TIMESTAMP NOT NULL OPTIONS (
allow_commit_timestamp = true
),
inventoryCount INT64 NOT NULL,
priceInCents INT64,
) PRIMARY KEY(categoryId, productId);

จากนั้นคลิกปุ่ม run และรอสักครู่เพื่อให้ระบบสร้างสคีมาของคุณ

ถัดไป คุณจะสร้างทั้ง 2 โมเดลและกําหนดค่าให้กับปลายทางโมเดล VertexAI

โมเดลแรกเป็นโมเดลการฝังที่ใช้เพื่อสร้างการฝังจากข้อความ และโมเดลที่ 2 เป็นโมเดล LLM ที่ใช้เพื่อสร้างการตอบกลับตามข้อมูลใน Spanner

วางสคีมาต่อไปนี้ในแท็บใหม่ใน Spanner Studio:

CREATE MODEL EmbeddingsModel INPUT(
content STRING(MAX),
) OUTPUT(
embeddings STRUCT<statistics STRUCT<truncated BOOL, token_count FLOAT64>, values ARRAY<FLOAT64>>,
) REMOTE OPTIONS (
endpoint = '//aiplatform.googleapis.com/projects/<PROJECT_ID>/locations/us-central1/publishers/google/models/textembedding-gecko@003'
);

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/text-bison@001',
default_batch_size = 1
);

จากนั้นคลิกปุ่ม run และรอสักครู่เพื่อให้ระบบสร้างโมเดลของคุณ

ในแผงด้านซ้ายของ Spanner Studio คุณจะเห็นตารางและโมเดลต่อไปนี้

62455aa4b0e839d9.png

โหลดข้อมูล

ในขั้นตอนนี้คุณจะต้องแทรกผลิตภัณฑ์บางอย่างลงในฐานข้อมูล เปิดแท็บใหม่ใน 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

รายการถัดไป

ขั้นตอนถัดไป คุณจะต้องผสานรวมกับรูปแบบการฝังเพื่อสร้างการฝังสำหรับคำอธิบายผลิตภัณฑ์ รวมถึงแปลงคำขอค้นหาข้อความเป็นการฝังเพื่อค้นหาผลิตภัณฑ์ที่เกี่ยวข้อง

5. ใช้งานการฝัง

สร้างการฝังเวกเตอร์สำหรับคำอธิบายผลิตภัณฑ์

หากต้องการให้การค้นหาที่คล้ายกันทำงานกับผลิตภัณฑ์ได้ คุณต้องสร้างการฝังให้กับรายละเอียดผลิตภัณฑ์

นี่คือคำสั่ง DML ของ UPDATE แบบง่ายๆ ด้วย EmbeddingsModel ที่สร้างขึ้นในสคีมา

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 เพื่อค้นหาผลิตภัณฑ์ที่คล้ายกัน ผลลัพธ์ควรมีลักษณะเช่นนี้

672e111753077fcf.png

สังเกตว่ามีการใช้ตัวกรองเพิ่มเติมกับการค้นหา เช่น สนใจเฉพาะผลิตภัณฑ์ที่พร้อมจำหน่ายเท่านั้น (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 เพื่อส่งคำถาม ผลลัพธ์ควรมีลักษณะเช่นนี้

35878cd0f88f1470.png

ผลิตภัณฑ์แรกเหมาะสำหรับผู้ที่มีอายุ 3 ปีเนื่องจากช่วงอายุในรายละเอียดผลิตภัณฑ์ (2-4 ปี) ผลิตภัณฑ์อื่นๆ ไม่เหมาะสำหรับ

สรุป

ขั้นตอนถัดไป

ต่อไปก็ถึงเวลาล้างข้อมูล

7. กำลังล้างข้อมูล (ไม่บังคับ)

หากต้องการล้างข้อมูล เพียงไปที่ส่วน Cloud Spanner ของ Cloud Console แล้วลบอินสแตนซ์ 'retail-demo' ที่เราสร้างใน Codelab

41cbc1a84b3588d5.png

8. ยินดีด้วย

ขอแสดงความยินดี คุณทำการค้นหาความคล้ายคลึงกันโดยใช้การค้นหาเวกเตอร์ในตัวของ Spanner สำเร็จแล้ว นอกจากนี้ คุณยังได้เห็นวิธีง่ายๆ ในการฝังการฝังและโมเดล LLM เพื่อมอบฟังก์ชันการทำงานของ Generative AI โดยตรงโดยใช้ SQL

ขั้นตอนถัดไปคือ

เรียนรู้เพิ่มเติมเกี่ยวกับฟีเจอร์เพื่อนบ้านที่ใกล้ที่สุด (การค้นหาเวกเตอร์ KNN) ของ Spanner ได้ที่นี่ https://cloud.google.com/spanner/docs/find-k-nearest-neighbors

นอกจากนี้ คุณยังอ่านเพิ่มเติมเกี่ยวกับวิธีการคาดการณ์ออนไลน์ด้วย SQL โดยใช้การผสานรวม VertexAI ของ Spanner ได้ที่นี่ https://cloud.google.com/spanner/docs/ml