איך מתחילים להשתמש ב-Spanner ליישומי AI גנרטיבי

במדריך הזה נדגים איך ליצור אפליקציית AI גנרטיבי באמצעות Spanner ו-Gemini Enterprise Agent Platform.

האפליקציה הזו מאפשרת לכם לבצע חיפוש של דמיון סמנטי, כדי למצוא מוצרים שתואמים לשאילתה בשפה טבעית. היא עושה את זה באמצעות הטמעה (embedding), שהיא ייצוג מספרי של טקסט שמשקף את המשמעות וההקשר של המילים. תשתמשו במודל של Agent Platform כדי ליצור את ההטמעות האלה, ואז תאחסנו ותחפשו את ההטמעות ב-Spanner. הגישה הזו שימושית במיוחד בתרחישי שימוש כמו חיפוש מוצרים, שבהם משתמשים עשויים לתאר את מה שהם רוצים בשפה טבעית במקום במילות מפתח ספציפיות.

הנושאים הבאים יעזרו לכם ללמוד איך:

  1. יצירת Google Cloud פרויקט
  2. יצירת מופע של Spanner
  3. יצירת מסד נתונים
  4. יצירת מודל הטמעה
  5. טעינת נתונים ל-Spanner
  6. יצירת הטמעות לנתונים
  7. ביצוע חיפוש דמיון וקטורי של KNN
  8. הרחבת החיפוש הווקטורי באמצעות אינדקס וקטורי
  9. מחיקת משאבים

למידע על פרטי התמחור של Spanner, אפשר לעיין במאמר בנושא תמחור של Spanner.

כדי לנסות codelab, אפשר לעיין במאמר תחילת העבודה עם Spanner vector search.

לפני שמתחילים

צריך ליצור Google Cloud פרויקט שמקושר לחשבון לחיוב.

  1. נכנסים לחשבון Google Cloud . אם אתם משתמשים חדשים ב- Google Cloud, צרו חשבון כדי שתוכלו להעריך את הביצועים של המוצרים שלנו בתרחישים מהעולם האמיתי. לקוחות חדשים מקבלים בחינם גם קרדיט בשווי 300$ להרצה, לבדיקה ולפריסה של עומסי העבודה.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  5. Verify that billing is enabled for your Google Cloud project.

  6. ‫Spanner API אמור להיות מופעל אוטומטית. אם לא, מפעילים אותו באופן ידני:

    הפעלת Spanner API
  7. ה-API של Agent Platform אמור להיות מופעל אוטומטית. אם לא, מפעילים אותו באופן ידני:

    הפעלת Agent Platform API
  1. כדי לקבל את ההרשאות שנדרשות ליצירת מכונות ומסדי נתונים, צריך לבקש מהאדמין להקצות לכם ב-IAM את התפקיד אדמין של Cloud Spanner (roles/spanner.admin) בפרויקט.

  1. כדי לקבל את ההרשאות שנדרשות לשאילתת גרפים של Spanner אם לא הוקצה לכם התפקיד 'אדמין של Cloud Spanner', צריך לבקש מהאדמין להקצות לכם את התפקיד Cloud Spanner Database Reader (roles/spanner.databaseReader) ב-IAM בפרויקט.

יצירת מופע

בפעם הראשונה שמשתמשים ב-Spanner, צריך ליצור מופע, שהוא הקצאה של משאבים שמשמשים מסדי נתונים של Spanner. בקטע הזה מוסבר איך ליצור מכונה באמצעות מסוף Google Cloud .

  1. נכנסים לדף Spanner במסוף Google Cloud .

    כניסה ל-Spanner

  2. בוחרים או יוצרים Google Cloud פרויקט אם עוד לא עשיתם את זה.

  3. מבצעים אחת מהפעולות הבאות:

    1. אם עוד לא יצרתם מופע Spanner, בדף ברוכים הבאים ל-Spanner, לוחצים על יצירת מופע עם הקצאת משאבים.
    2. אם יצרתם מופע Spanner, בדף Instances לוחצים על Create instance.
  4. בדף בחירת מהדורה, בוחרים באפשרות Enterprise Plus או Enterprise.

    החיפוש הווקטורי ב-Spanner זמין רק במהדורת Enterprise או במהדורת Enterprise Plus. כדי להשוות בין המהדורות השונות, לוחצים על השוואה בין מהדורות. מידע נוסף מופיע בסקירה הכללית על מהדורות Spanner.

  5. לוחצים על Continue.

  6. בשדה Instance name, מזינים שם למכונה, לדוגמה: test-instance.

  7. בשדה Instance ID (מזהה המופע), משאירים את מזהה המופע או משנים אותו. מזהה המופע מוגדר כברירת מחדל כשם המופע, אבל אפשר לשנות אותו. שם המופע ומזהה המופע יכולים להיות זהים או שונים.

  8. לוחצים על Continue.

  9. בקטע Choose a configuration (בחירת הגדרה), מבצעים את הפעולות הבאות:

    1. משאירים את האפשרות אזורי מסומנת.
    2. בקטע Select a configuration (בחירת הגדרה), בוחרים אזור. האזור שתבחרו הוא המקום שבו המופעים שלכם יאוחסנו וישוכפלו.
    3. לוחצים על Continue.
  10. בקטע Configure compute capacity (הגדרת קיבולת מחשוב), מבצעים את הפעולות הבאות:

    1. בקטע בחירת יחידה, בוחרים באפשרות יחידות עיבוד (PU).
    2. בקטע Choose a scaling mode (בחירת מצב שינוי גודל), משאירים את האפשרות Manual allocation (הקצאה ידנית) מסומנת, ובקטע Quantity (כמות) משאירים את הערך 1,000 יחידות עיבוד.
  11. לוחצים על יצירה. במסוף Google Cloud מוצג הדף Overview של המופע שיצרתם.

יצירת מסד נתונים

אחרי שהמופע יתחיל לפעול, תוכלו ליצור את מסד הנתונים. מגדירים את הסכימה במסד הנתונים .

  1. נכנסים לדף Spanner Instances במסוף Google Cloud .

    כניסה לדף Spanner instances

  2. לוחצים על המופע שיצרתם, לדוגמה, test-instance.

  3. בדף סקירה כללית, מתחת לשם המופע, לוחצים על יצירת מסד נתונים.

  4. בשדה שם מסד הנתונים, מזינים שם למסד הנתונים. לדוגמה, example-db.

  5. בקטע Select database dialect (בחירת ניב מסד הנתונים), בוחרים באפשרות Google Standard SQL (SQL סטנדרטי של Google).

    החיפוש הווקטורי ב-Spanner לא זמין בניב PostgreSQL.

  6. מעתיקים את הסכימה הבאה ומדביקים אותה בכרטיסיית העריכה DDL Templates. הסכימה מגדירה טבלה Products.

      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);
    
  7. לא מבצעים שינויים באפשרות הצגת אפשרויות ההצפנה.

  8. לוחצים על Create (יצירה). במסוף Google Cloud מוצג הדף Overview (סקירה כללית) של מסד הנתונים שיצרתם.

יצירת מודל הטמעה

כשמשתמשים בהצהרת DDL‏ CREATE MODEL ב-Spanner, רושמים הפניה לנקודת הקצה של מודל Agent Platform ממסד הנתונים. אחרי שרושמים את המודל, אפשר להשתמש בפונקציה ML.PREDICT כדי לגשת למודל בשאילתות.

בדוגמה הבאה מוצג תהליך הרישום של מודל הטמעת טקסט ב-Agent Platform, שמשמש לאחר מכן לביצוע חיפוש דמיון כדי למצוא מוצרים דומים במסד נתונים.

  1. בדף סקירה כללית של מסד הנתונים, לוחצים על Spanner Studio.
  2. בדף Spanner Studio, לוחצים על New tab או משתמשים בכרטיסיית העריכה הריקה.
  3. צריך להזין את הפרטים הבאים:

    CREATE MODEL EmbeddingsModel INPUT(
    content STRING(MAX),
    ) OUTPUT(
    embeddings STRUCT<values ARRAY<FLOAT32>>,
    ) REMOTE OPTIONS (
    endpoint = '//aiplatform.googleapis.com/projects/PROJECT_ID/locations/us-central1/publishers/google/models/TEXT_EMBEDDING_MODEL'
    );
    

    מחליפים את מה שכתוב בשדות הבאים:

    • PROJECT_ID: מזהה קבוע שייחודי לGoogle Cloud פרויקט.
    • TEXT_EMBEDDING_MODEL: השם של מודל הטמעת הטקסט. רשימת המודלים להטמעת טקסט של Agent Platform מופיעה כאן.
  4. לוחצים על Run (הפעלה) כדי ליצור את המודל.

    אחרי שהמודל יתווסף בהצלחה, הוא יוצג בחלונית הסייר.

טעינת נתונים

כדי לטעון את הנתונים לדוגמה של Cymbal לטבלה products:

  1. בכרטיסייה חדשה ב-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);
    
  2. לוחצים על Run כדי להוסיף את הנתונים.

יצירת הטמעות וקטוריות

אחרי שרושמים מודל וטוענים נתונים ל-Spanner, אפשר ליצור הטבעות וקטוריות עם תיאורי המוצרים מהנתונים. הטמעות וקטוריות הופכות נתוני טקסט לערך מספרי שמייצג את המשמעות וההקשר של המילים. השינוי הזה חיוני לביצוע חיפוש סמנטי.

בשלב הזה, מאכלסים את העמודה productDescriptionEmbedding על ידי יצירת הטבעות מהעמודה productDescription באמצעות ML.PREDICT. כך תוכלו לבצע חיפוש דמיון וקטורי בשלב הבא.

  1. בכרטיסייה חדשה ב-Spanner Studio, מעתיקים ומדביקים את הצהרת העדכון הבאה:

    UPDATE products p1
    SET productDescriptionEmbedding =
      (SELECT embeddings.values
        FROM ML.PREDICT(MODEL EmbeddingsModel,
          (SELECT p1.productDescription as content)
        )
      )
    WHERE categoryId=1;
    
  2. לוחצים על Run כדי ליצור את ההטמעות.

בדוגמה הבאה, אתם מספקים בקשת חיפוש בשפה טבעית באמצעות שאילתת SQL. שאילתת ה-SQL מבצעת חיפוש דמיון וקטורי באמצעות הטמעות וקטוריות שיצרתם קודם. השאילתה מבצעת את החיפוש על ידי הפעולות הבאות:

  • משתמש ב-ML.PREDICT כדי ליצור הטמעה לשאילתת החיפוש שצוינה ("I'd like to buy a starter bike for my 3 year old child").
  • מחשבת את COSINE_DISTANCE בין ההטמעה של השאילתה הזו לבין productDescriptionEmbedding של כל מוצר בטבלת המוצרים כדי למצוא תוצאות דומות בחנות Cymbal.
  • התוצאות מסוננות כך שיוצגו רק מוצרים עם ערך inventoryCount גדול מ-0.
  • ממיין את התוצאות לפי המרחק המחושב ומחזיר את חמש ההתאמות הקרובות ביותר, יחד עם productName, productDescription ו-inventoryCount.
  1. בכרטיסייה חדשה ב-Spanner Studio, מעתיקים ומדביקים את השאילתה הבאה:

    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;
    
  2. לוחצים על הפעלה כדי לקבל את המוצרים שהכי מתאימים לטקסט החיפוש.

    פלט לדוגמה:

    /*-----------------+--------------------+----------------+--------------------*
    | productName      | productDescription | inventoryCount | distance           |
    +------------------+--------------------+----------------+--------------------+
    | Cymbal Sprout    | Let their cycling  | 10             | 0.3094387191860244 |
    |                  | journey begin with |                |                    |
    |                  | the Cymbal Sprout, |                |                    |
    |                  | the ideal balance  |                |                    |
    |                  | bike for beginning |                |                    |
    |                  | riders ages 2-4    |                |                    |
    |                  | years...           |                |                    |
    | Cymbal Spark Jr  | Light, vibrant,    | 34             | 0.3412342902117166 |
    |                  | and ready for      |                |                    |
    |                  | adventure, the     |                |                    |
    |                  | Spark Jr. is the   |                |                    |
    |                  | perfect first bike |                |                    |
    |                  | for young riders   |                |                    |
    |                  | (ages 5-8)...      |                |                    |
    | Cymbal Helios    | Safety meets style | 100            | 0.4197863319656684 |
    | Helmet           | with the Cymbal    |                |                    |
    |                  | children's bike    |                |                    |
    |                  | helmet...          |                |                    |
    | Cymbal Breeze    | Cruise in style and| 72             | 0.485231776523978  |
    |                  | embrace effortless |                |                    |
    |                  | pedaling with the  |                |                    |
    |                  | Breeze electric    |                |                    |
    |                  | bike...            |                |                    |
    | Cymbal Phoenix   | See and be seen    | 87             | 0.525101413779242  |
    | Lights           | with the Phoenix   |                |                    |
    |                  | bike lights...     |                |                    |
    *------------------+--------------------+----------------+--------------------*/
    

בדוגמה הקודמת לחיפוש וקטורי השתמשנו בחיפוש מדויק של וקטורים של K שכנים קרובים (KNN). הפונקציות של מרחק וקטורי KNN (מרחק קוסינוס, מרחק אוקלידי ומכפלה סקלרית) שימושיות כשרוצים לשלוח שאילתה לגבי קבוצת משנה ספציפית של נתוני Spanner. חיפוש KNN מחשב את המרחק המדויק בין וקטור של שאילתה לבין כל הווקטורים במסד הנתונים, ולכן הוא יעיל כשניתן לחלק את הנתונים. אם השאילתה צריכה להשוות את וקטור השאילתה לכל הווקטורים במסד הנתונים בלי מסננים ספציפיים, ואי אפשר לחלק את השאילתה לשאילתות משנה עצמאיות, יכול להיות שיהיו צווארי בקבוק בביצועים אם משתמשים ב-KNN. במצבים כאלה, חיפוש וקטורי של שכנים קרובים משוערים (ANN) יכול להיות שימושי. מידע נוסף זמין במאמר בנושא חיפוש שכנים קרובים משוערים.

אם עומסי העבודה שלכם לא ניתנים לחלוקה, ויש לכם כמות גדולה של נתונים, אתם יכולים להשתמש בחיפוש וקטורי של ANN כדי לשפר את ביצועי השאילתות במערכי נתונים גדולים יותר.

כדי להרחיב את השימוש בחיפוש וקטורים של ANN ב-Spanner, פועלים לפי השלבים הבאים:

יצירת אינדקס וקטורי

‫Spanner מאיץ את החיפושים של וקטורים ב-ANN באמצעות אינדקס וקטורים ייעודי שמבוסס על Scalable Nearest Neighbor (ScaNN) של Google Research.

כדי ליצור אינדקס וקטורי במערך הנתונים, צריך לשנות את העמודה productDescriptionEmbeddings כדי להגדיר הערה vector_length. ההערה vector_length מציינת את המאפיין של כל וקטור. הצהרות ה-DDL הבאות משמיטות את העמודה productDescriptionEmbedding ויוצרות אותה מחדש עם vector_length. האורך המקסימלי (מאפיין) של הווקטור משתנה בהתאם למודל ההטמעה שבחרתם.

  1. בכרטיסייה חדשה ב-Spanner Studio, מעתיקים ומדביקים את הצהרת ה-DDL הבאה כדי ליצור מחדש את העמודה productDescriptionEmbedding:

    ALTER TABLE products DROP COLUMN productDescriptionEmbedding;
    ALTER TABLE products
      ADD COLUMN productDescriptionEmbedding ARRAY<FLOAT32>(vector_length=>VECTOR_LENGTH_VALUE);
    

    מחליפים את VECTOR_LENGTH_VALUE בממדים המקסימליים של הפלט של מודל ההטמעה שבחרתם.

  2. לוחצים על Run.

  3. מעתיקים ומדביקים את הצהרת ההוספה הבאה כדי ליצור מחדש את הטמעות הווקטורים:

    UPDATE products p1
    SET productDescriptionEmbedding =
    (SELECT embeddings.values from ML.PREDICT(MODEL EmbeddingsModel,
    (SELECT p1.productDescription as content)))
    WHERE categoryId=1;
    
  4. לוחצים על Run.

  5. מעתיקים ומדביקים את הצהרת ה-DDL הבאה כדי ליצור את אינדקס הווקטור:

    CREATE VECTOR INDEX ProductDescriptionEmbeddingIndex
        ON products(productDescriptionEmbedding)
        WHERE productDescriptionEmbedding IS NOT NULL
    OPTIONS (
    distance_type = 'COSINE'
    );
    
  6. לוחצים על Run.

שימוש בפונקציית מרחק וקטורי של ANN

כדי להשתמש בחיפוש וקטורי של ANN ב-Spanner, משנים את שאילתת ה-SQL הבאה:

  • ליצור את הטמעת ההנחיה בנפרד, במקום בתוך שאילתת ה-SQL.
  • מעתיקים את התוצאות של ההטמעות לשאילתה.
  • משתמשים ברמז FORCE_INDEX כדי להפנות לאינדקס הווקטורי החדש: @{force_index=ProductDescriptionEmbeddingIndex}
  • במקום זאת, צריך להשתמש בפונקציית המרחק בין וקטורים APPROX_COSINE_DISTANCE.COSINE_DISTANCE חובה לבחור באפשרות JSON '{"num_leaves_to_search": num_leaves}'.
  1. בכרטיסייה חדשה ב-Spanner Studio, מעתיקים ומדביקים את השאילתה הבאה כדי ליצור את הטמעת ההנחיה ולבצע חיפוש וקטורי:

    -- Generate the prompt embedding
    WITH embedding AS (
      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)
      )
    )
    -- Use embedding to find the most similar entries in the database
    SELECT productName, productDescription, inventoryCount,
      (APPROX_COSINE_DISTANCE(productDescriptionEmbedding,
       embedding.values,
      options => JSON '{"num_leaves_to_search": 10}')) as distance
    FROM products @{force_index=ProductDescriptionEmbeddingIndex}, embedding
    WHERE productDescriptionEmbedding IS NOT NULL AND inventoryCount > 0
    ORDER BY distance
    LIMIT 5;
    
  2. לוחצים על Run.

    פלט לדוגמה:

    /*-----------------+--------------------+----------------+--------------------*
    | productName      | productDescription | inventoryCount | distance           |
    +------------------+--------------------+----------------+--------------------+
    | Cymbal Sprout    | Let their cycling  | 10             | 0.30935457151661594|
    |                  | journey begin with |                |                    |
    |                  | the Cymbal Sprout, |                |                    |
    |                  | the ideal balance  |                |                    |
    |                  | bike for beginning |                |                    |
    |                  | riders ages 2-4    |                |                    |
    |                  | years...           |                |                    |
    | Cymbal Spark Jr  | Light, vibrant,    | 34             | 0.34116496551593656|
    |                  | and ready for      |                |                    |
    |                  | adventure, the     |                |                    |
    |                  | Spark Jr. is the   |                |                    |
    |                  | perfect first bike |                |                    |
    |                  | for young riders   |                |                    |
    |                  | (ages 5-8)...      |                |                    |
    | Cymbal Helios    | Safety meets style | 100            | 0.4198014303921187 |
    | Helmet           | with the Cymbal    |                |                    |
    |                  | children's bike    |                |                    |
    |                  | helmet...          |                |                    |
    | Cymbal Breeze    | Cruise in style and| 72             | 0.4850674854267337 |
    |                  | embrace effortless |                |                    |
    |                  | pedaling with the  |                |                    |
    |                  | Breeze electric    |                |                    |
    |                  | bike...            |                |                    |
    | Cymbal Phoenix   | See and be seen    | 87             | 0.525101413779242  |
    | Lights           | with the Phoenix   |                |                    |
    |                  | bike lights...     |                |                    |
    *------------------+--------------------+----------------+--------------------*/
    

    ה-Cymbal Sprout, עם APPROX_COSINE_DISTANCE של 0.30935457151661594, הוא בעל מידת הדמיון הגבוהה ביותר לשאילתה המקורית.

    מידע נוסף על הקשר בין פונקציות וקטוריות לדמיון זמין במאמר בחירה בין פונקציות של מרחק וקטורי למדידת הדמיון בין הטמעות וקטוריות.

הסרת המשאבים

בקטע הזה נסביר איך להשתמש במסוף Google Cloud כדי לנקות את המשאבים. כדי להימנע מחיובים נוספים בחשבון לחיוב ב-Cloud, צריך למחוק את מסד הנתונים ואת המופע שנוצרו במהלך ההגדרה. מחיקת מופע תגרום למחיקה של כל מסדי הנתונים שנוצרו במופע.

מחיקת מסד הנתונים

  1. נכנסים לדף Spanner Instances במסוף Google Cloud .

    כניסה לדף Spanner instances

  2. לוחצים על השם של המכונה שכוללת את מסד הנתונים שרוצים למחוק, למשל test-instance.

  3. לוחצים על השם של מסד הנתונים שרוצים למחוק, לדוגמה, example-db.

  4. בדף סקירה כללית של מסד הנתונים, לוחצים על סמל המחיקה מחיקת מסד הנתונים.

  5. מאשרים שרוצים למחוק את מסד הנתונים על ידי הזנת השם שלו ולחיצה על מחיקה.

מחיקת המכונה

  1. נכנסים לדף Spanner Instances במסוף Google Cloud .

    כניסה לדף Spanner instances

  2. לוחצים על השם של המכונה שרוצים למחוק, למשל, test-instance.

  3. לוחצים על מחיקת המופע.

  4. מאשרים שרוצים למחוק את המופע על ידי הזנת שם המופע ולחיצה על מחיקה.

מה השלב הבא?