Use ScyllaDB to perform semantic search across movie plot descriptions. יצרנו יישום המלצות סרטים לדוגמא כדי להציג אפליקציית הדגימה מספקת לך דרך פשוטה לחוות בניית החיפוש הסמנטי והיישומים המבוססים על וקטורים עם ScyllaDB. אפשרויות החיפוש החדש של ScyllaDB הצטרפו ל-Vector Search Early Access Program הצטרפו ל-Vector Search Early Access Program במאמר זה, נציג כיצד לבצע חיפוש סמנטי בין תיאורי הקלעים של סרטים כדי למצוא סרטים לפי משמעות, לא מילות מפתח. לפני שנטייל ביישום, בואו נבהיר מה אנחנו מתכוונים על ידי חיפוש סמנטי ולספק מסקנה על פונקציות דמיון. פונקציות דמיון וקטור ניתן לחשב את הדמיון בין שני וקטורים בכמה דרכים: השיטות הנפוצות ביותר הן: , (מוצר פנימי) ו ScyllaDB Vector Search תומך בכל הפונקציות הללו. קוסמטיקה דומה מוצר DOT L2 עבור שילוב טקסט, דמיון קוסין הוא הפונקציה הנפוצה ביותר של דמיון.זה בגלל, כאשר אנו עובדים עם טקסט, אנחנו מתמקדים בעיקר בכיוון של הוקטור, ולא בגודלו. לדוגמה, מסמך קצר (1 עמוד) ומסמך ארוך (10 עמודים) על אותו נושא יראו עדיין בכיוונים דומים בחלל הפקטור, גם אם הם באורך שונה. במציאות, דוגמאות רבות (למשל, ) לייצר וקטורים נורמליזציה. וקטורים נורמליזציה כולן באותו אורך (גודל של 1). עבור וקטורים נורמליזציה, דמיון קוסין ואת המוצר הנקודה להחזיר את אותו התוצאה. זה בגלל דמיון קוסין מחלק את המוצר הנקודה על ידי הגדלים של הווקטורים, אשר כולם 1 כאשר הווקטורים נורמליזציה. הפונקציה L2 מייצרת ערכים שונים של מרחק בהשוואה למוצר הנקודה או דמיון קוסין, אבל הסדר של ההדבקות נשאר זהה (הנחה וקטורים נורמליזציה). מודלים פתוחים עכשיו שיש לך הבנה טובה יותר של פונקציות דמיוניות, בואו להסביר איך אפליקציית ההמלצה עובדת. App תצפית האפליקציה מאפשרת למשתמשים להזין איזה סוג של סרט הם רוצים לצפות.לדוגמה, אם אתה לוחץ "כדורגל אמריקאי", האפליקציה משווה את ההכנסה שלך עם התוצאה הראשונה היא התאמה הטובה ביותר, ולאחר מכן המלצות דומות אחרות. . plots of movies ScyllaDB Vector Search אתה יכול למצוא את יחד עם הוראות ההתקנה ו-A עבור ערכת הנתונים, אנו משתמשים מחדש ערכת נתונים TMDB . קוד מקור ב-GitHub צעד אחר צעד Tutorial זמין בKaggle דרישות הפרויקט כדי להפעיל את היישום, אתה צריך חשבון ענן ScyllaDB וקבוצת החיפוש המותאמת לחיפוש וקטורי. ! עקוב אחר ההוראות כאן כדי להתחיל האפליקציה תלויה בכמה חבילות Python: ScyllaDB Python driver – עבור חיבור וחיפוש ScyllaDB. Transformers – כדי ליצור קבצים מקומיים מבלי לדרוש OpenAI או APIs בתשלום אחרים. Streamlit – עבור ה- UI Pydantic – כדי להקל על עבודה עם תוצאות שאילתות. כברירת מחדל, האפליקציה משתמשת כך כל אחד יכול להפעיל אותו באופן מקומי ללא דרישות מחשוב כבדות. אין צורך בשירותים מסחריים או בתשלום כדי להפעיל את הדוגמה. כל מיניLM-L6-v2 ScyllaDB ענן הגדרות וחיבור מסד נתונים א קבצים מאחסנים ScyllaDB Cloud credentials, כולל כתובת המארח ופרטים חיבור. config.py ScyllaDB נפרד מתמודדים עם הדברים הבאים: תמיכה במודול יצירת החיבור והפגישה הגדרת וחיפוש נתונים מתן פונקציות סיוע לאינטראקציות מסד נתונים נקיות תוכנית מסד נתונים התוכנית מוגדרת ב-A קובץ, שנערך בעת הפעלת תסריט ההעברה של הפרויקט. schema.cql יצירת Keyspace (עם גורם רבייה של 3) הגדרת טבלה לסרטים, אחסון שדות כגון release_date, title, genre, and plot אינדקס חיפוש וקטור CREATE KEYSPACE recommend WITH replication = {'class': 'NetworkTopologyStrategy', 'replication_factor': '3'}; CREATE TABLE recommend.movies ( id INT, release_date TIMESTAMP, title TEXT, tagline TEXT, genre TEXT, imdb_id TEXT, poster_url TEXT, plot TEXT, plot_embedding VECTOR<FLOAT, 384>, PRIMARY KEY (id) ) WITH cdc = {'enabled': 'true'}; CREATE INDEX IF NOT EXISTS ann_index ON recommend.movies(plot_embedding) USING 'vector_index' WITH OPTIONS = { 'similarity_function': 'DOT_PRODUCT' }; הוזמן על ידי ❤ תגית: cql Github התוכנית מדגישה: 'סיפור' - טקסט, מאחסן את תיאור הסרט המשמש להשוואת דמיון. 'plot_embedding' – וקטור, ייצוג המובנה של התסריט, המוגדר באמצעות סוג הנתונים של וקטור עם 384 מימדים (התואם למודל Transformers הפסקה). 'מפתח ראשוני' – id כמפתח המפלגה עבור חיפושים יעילים שאילתות על ידי id CDC Enabled - נדרש עבור חיפוש וקטור ScyllaDB. 'אינדקס וקטור' – אינדקס שכנים קרובים (ANN) שנוצר בעמודה plot_embedding כדי לאפשר שאילתות וקטור יעילות. מטרת התוכנית היא לאפשר חיפוש יעיל על השבבים של הפרק ולשמור מידע נוסף לצד הווקטורים. Embeddings קבוצת Embedding Creator מתמודדת עם יצירת טקסט עם Transformers של ביטוי.הפונקציה מקבלת כל כניסה טקסט ומחזירה רשימה של ערכים זורמים שניתן להכניס אל עמודה 'בקטור' של ScyllaDB. המלצות המומלצות באמצעות חיפוש וקטור התפקיד העיקרי של האפליקציה הוא לספק המלצות לסרטים. המלצות אלה מיושמות באמצעות חיפוש וקטור. הידיים האלה recommender לקחת את טקסט ההכנסה להפוך את הטקסט לתוך embeddings חיפוש וקטור from db.scylladb import ScyllaClient from embedding_creator import EmbeddingCreator from models import Movie class MovieRecommender: def __init__(self): self.scylla_client = ScyllaClient() self.embedding_creator = EmbeddingCreator("all-MiniLM-L6-v2") def similar_movies(self, user_query: str, top_k=5) -> list[Movie]: db_client = ScyllaClient() user_query_embedding = self.embedding_creator.create_embedding(user_query) db_query = f""" SELECT * FROM recommend.movies ORDER BY plot_embedding ANN OF %s LIMIT %s; """ values = [user_query_embedding, top_k] results = db_client.query_data(db_query, values) return [Movie(**row) for row in results] הוזמן על ידי ❤ תגית: PY Github בואו נפרק את השאילתה של החיפוש הוקטורי: SELECT * FROM recommend.movies ORDER BY plot_embedding ANN OF [0.1, 0.2, 0.3, …] LIMIT 5; ההכנסה של המשתמש הופכת תחילה להצטברות, מה שמבטיח שאנחנו משווים את ההצטברות להצטברות. השורות בטבלה מסודרות לפי דמיון באמצעות הפורמט ANN (ANN OF). התוצאות מוגבלות לחמישה סרטים דומים. הצהרת SELECT מציגה את כל העמדות בטבלה. בחיפוש אחר דמיון, אנו מחושבים את המרחק בין שני וקטורים.ככל שהוקטורים קרובים יותר במרחב וקטור, כך התוכן הבסיסי שלהם דומה יותר.או, במילים אחרות, מרחק קטן יותר מצביע על דמיון גבוה יותר. סטרימינג UI המונחים, המוגדרים ב קשרו הכל ביחד. app.py הוא לוקח את השאילתה של המשתמש, ממיר אותה להבנה ומבצע חיפוש וקטור. ה- UI מציג את התאמה הטובה ביותר ורשימה של המלצות סרטים דומות אחרות. נסה את זה בעצמך! אם ברצונך להתחיל לבנות עם ScyllaDB Vector Search, יש לך כמה אפשרויות: גלו את קוד המקור ב-GitHub השתמש README כדי להגדיר את האפליקציה במחשב שלך עקוב אחר ההוראה כדי לבנות את האפליקציה מאפס אם יש לכם שאלות, השתמשו ואנחנו נשמח לעזור. פורום אודות Attila Tóth הוא תומך בפיתוח ב-ScyllaDB. הוא כותב מדריכים ופרסומים בבלוג, מדבר באירועים, יוצר דמויות ויישומים דוגמנית כדי לעזור למפתחים לבנות יישומים ביצועים גבוהים. אטילה טוטה