בדף הזה נסביר איך ליצור ולאחסן הטבעות וקטוריות. סקירה כללית על אחסון של הטמעות וקטוריות
לפני שמתחילים
צריכה להיות לכם מכונת Cloud SQL עם הפעלת הדגלים של מסד נתונים וקטורי.
יצירת הטמעות וקטוריות על סמך נתוני שורות
אפשר ליצור הטמעת וקטורים לנתונים בשורה מסוימת באמצעות API להטמעת טקסט, כמו Vertex AI או OpenAI. אפשר להשתמש בכל API להטמעת טקסט עם הטמעות וקטוריות של Cloud SQL. עם זאת, חובה להשתמש באותו API להטמעת טקסט כדי ליצור וקטורים של מחרוזת שאילתה. אי אפשר לשלב בין ממשקי API שונים כדי לקבל נתוני מקור ווקטוריזציה של שאילתות.
לדוגמה, אפשר ליצור הטמעת וקטורים מ-Vertex AI:
from vertexai.language_models import TextEmbeddingModel
def text_embedding() -> list:
"""Text embedding with a Large Language Model."""
model = TextEmbeddingModel.from_pretrained("text-embedding-004")
embeddings = model.get_embeddings(["What is life?"])
for embedding in embeddings:
vector = embedding.values
print(f"Length of Embedding Vector: {len(vector)}")
return vector
if __name__ == "__main__":
text_embedding()
אחסון הטמעות וקטוריות
בקטע הזה מוצגות הצהרות לדוגמה לאחסון הטמעות וקטוריות ב-Cloud SQL.
יצירת טבלה חדשה עם עמודה של הטמעת וקטור
משתמשים בהצהרת CREATE TABLE עם עמודה שמשתמשת בסוג הנתונים VECTOR.
כדי ליצור את הטבלה, משתמשים בתחביר הבא:
CREATE TABLE TABLE_NAME(
id INTEGER
PRIMARY KEY
AUTO_INCREMENT,
title VARCHAR(60),
EMBEDDING_COLUMN_NAME
VECTOR(VECTOR_DIMENSIONS)
USING VARBINARY);
מחליפים את הפרמטרים הבאים:
-
TABLE_NAME: השם של הטבלה שבה רוצים לאחסן את ההטמעות. -
EMBEDDING_COLUMN_NAME: שם העמודה שבה מאוחסן הווקטור. -
VECTOR_DIMENSIONS: מספר המאפיינים לשימוש בהטמעה.
בדוגמה הבאה, לעמודת ההטמעה יש וקטור עם שלושה ממדים. הנתונים שמאוחסנים בעמודה הזו הם מסוג VARBINARY.
CREATE TABLE books(
id INTEGER PRIMARY KEY AUTO_INCREMENT, title VARCHAR(60), embedding VECTOR(3) USING VARBINARY);
הוספת עמודה של הטבעת וקטורים לטבלה קיימת
משתמשים בהצהרת ALTER TABLE כדי להוסיף עמודת הטמעת וקטורים לטבלה קיימת. בעמודה צריך להשתמש בסוג הנתונים VECTOR כדי לאחסן את ההטמעה.
בדוגמה הבאה, עמודת הטמעה עם וקטור בעל שלושה ממדים מוכנסת לטבלה. הנתונים שמאוחסנים בעמודה הזו הם מסוג VARBINARY.
ALTER TABLE books
ADD COLUMN embedding
VECTOR(3)
USING VARBINARY;
הוספת הטמעת וקטורים
אפשר להשתמש בפונקציה INSERT עם הפונקציה string_to_vector כדי להוסיף ערכי הטמעה של וקטור לטבלה.
בדוגמה הבאה, וקטור עם שלושה ממדים מוכנס לעמודת ההטמעה.
INSERT INTO books
(
title,
embedding)
VALUES (('book title', string_to_vector('[1,2,3]')));
הוספה של כמה הטמעות וקטוריות
משתמשים ב-INSERT עם הפונקציה string_to_vector כדי להוסיף רשימה של הטבעות וקטוריות שמופרדות בפסיקים.
בדוגמה הבאה, שתי הטמעות, כל אחת מכילה וקטור עם שלושה ממדים ומוכנסת לעמודת ההטמעה.
INSERT INTO books
(
title,
embedding)
VALUES
(
(
'book title',
string_to_vector('[1,2,3]')),
('book title', string_to_vector('[4,5,6]')));
פעולת Upsert של הטמעת וקטור
כדי להוסיף עמודה של הטמעת וקטורים, משתמשים בפעולה INSERT או UPDATE בטבלה עם הפונקציה string_to_vector, לפי התחביר הבא.
במשפט הבא נעשה שימוש בפעולת upsert כדי להוסיף או לעדכן את עמודת ההטמעה בהטמעה שמכילה וקטור עם שלושה ממדים.
INSERT INTO books
(
id,
title,
embedding)
VALUES
(
(
1,
'book title',
string_to_vector('[1,2,3]')))
ON DUPLICATE KEY UPDATE embedding = string_to_vector('[1,2,3]');
עדכון הטמעת וקטורים
כדי לעדכן הטמעת וקטורים, משתמשים בפונקציה UPDATE עם הפונקציה string_to_vector.
בדוגמה הבאה, נעשה שימוש ב-UPDATE כדי לעדכן את עמודת ההטמעה בווקטור עם שלושה ממדים.
UPDATE books
SET embedding = string_to_vector('[7,8,9]')
WHERE id = 1;
אחזור הטמעות וקטורים
כדי לאחזר הטבעות וקטוריות, משתמשים בפונקציה vector_to_string של Cloud SQL יחד עם שם ההטבעה.
בהצהרה הבאה, העמודה של ההטמעה מאוחזרת לצפייה.
SELECT vector_to_string(embedding) FROM books WHERE id = 1;
מחיקה של הטמעת וקטורים
אפשר להשתמש בפונקציה DELETE עם string_to_vector כדי להסיר הטמעת וקטורים מטבלה. אם יש אינדקס וקטורי, צריך למחוק אותו קודם. מידע נוסף זמין במאמר בנושא מחיקת אינדקס וקטורי.
בדוגמה הבאה, נעשה שימוש ב-DELETE כדי למחוק את הערך בעמודת ההטמעה.
DELETE FROM books
WHERE embedding = string_to_vector('[1,2,3]');
המאמרים הבאים
- מומלץ לקרוא את הסקירה הכללית על חיפוש וקטורים ב-Cloud SQL.
- איך מפעילים ומשביתים הטמעות וקטוריות במכונה
- איך יוצרים אינדקסים של וקטורים
- איך מבצעים חיפושים בהטמעות וקטוריות