FT.CREATE

FT.CREATE יוצר אינדקס שאפשר לחפש בו.

תחביר

FT.CREATE index
  ON HASH
  [PREFIX count prefix [prefix ...]]
  SCHEMA field_name [AS alias] VECTOR [HNSW|FLAT] attribute_count [attribute_name attribute_value]
  [field_name [AS alias] NUMERIC]
  [field_name [AS alias] TAG [SEPARATOR ...] [CASESENSITIVE]]
  • index (חובה): השם שנותנים לאינדקס. אם כבר קיים אינדקס עם אותו שם, תוחזר שגיאה.

  • ON HASH (אופציונלי): מציין את סוג הנתונים HASH. נתמך רק סוג הנתונים HASH.

  • PREFIX [count] [prefix] (אופציונלי): מציין אילו מפתחות גיבוב (hash) לאנדקס.

  • SCHEMA hash_field_name (חובה): hash_field_name אחרי SCHEMA מזהה את שם השדה בגיבוב. ‫[AS alias] מקצה את השם alias ככינוי למאפיין שם השדה.

סוגי שדות

  • VECTOR (חובה): שדה וקטורי לחיפוש וקטורי:

    • [HNSW|FLAT] (חובה): אלגוריתם ייעודי. הערך הזה יכול להיות FLAT (כוח ברוטלי) או HNSW (Hierarchical Navigable Small World).

    • attribute_count (חובה): מספר המאפיינים הכולל של השמות והערכים שמועברים בהגדרת האלגוריתם.

    • attribute_name attribute_value: זוגות של מפתח וערך שמגדירים את תצורת האינדקס, אבל ספציפיים לאחד משני האלגוריתמים הזמינים.

      • מאפייני החובה של אלגוריתם HNSW:

        • DIM (חובה): מספר הממדים של הווקטור. הערכים הקבילים הם 1 עד 32768.

        • TYPE (חובה): סוג הווקטור. יש תמיכה רק ב-FLOAT32.

        • DISTANCE_METRIC (חובה): צריך להיות אחד מהערכים הבאים – L2, ‏IP או COSINE.

      • מאפיינים אופציונליים של אלגוריתם HNSW:

        • EF_RUNTIME (אופציונלי): מגדיר את מספר הווקטורים שייבדקו במהלך פעולת שאילתה. ברירת המחדל היא 10 והערך המקסימלי הוא 4096. אפשר להגדיר את ערך הפרמטר הזה לכל שאילתה שמריצים. ערכים גבוהים יותר מאריכים את זמן השאילתה, אבל משפרים את היכולת של השאילתה לאחזר מידע.

        • M (אופציונלי): מספר הקשתות היוצאות המקסימלי המותר לכל צומת בתרשים בכל שכבה. המספר המקסימלי של קשתות יוצאות הוא 2 מיליון בשכבה 0. ערך ברירת המחדל הוא 16. הערך המקסימלי הוא 512.

        • EF_CONSTRUCTION (אופציונלי): מגדיר את מספר הווקטורים שייבדקו במהלך בניית האינדקס. ברירת המחדל היא 200 והערך המקסימלי הוא 4096. ערכים גבוהים יותר מגדילים את הזמן שנדרש ליצירת אינדקסים, אבל משפרים את יחס ההחזרה.

        • INITIAL_CAP (אופציונלי): קובע את קיבולת הווקטור ההתחלתית של האינדקס. ערך ברירת המחדל הוא 1024. הפרמטר הזה קובע את הקצאת הזיכרון לאינדקס.

      • מאפייני חובה של אלגוריתם FLAT:

        • DIM (חובה): מספר המימדים של הווקטור.

        • TYPE (חובה): סוג הווקטור. יש תמיכה רק ב-FLOAT32.

        • DISTANCE_METRIC (חובה): צריך להיות אחד מהערכים הבאים – L2, ‏IP או COSINE.

      • מאפיינים אופציונליים של אלגוריתם FLAT:

        • INITIAL_CAP (אופציונלי): קובע את קיבולת הווקטור ההתחלתית של האינדקס. הפרמטר הזה קובע את הקצאת הזיכרון לאינדקס.
  • NUMERIC (אופציונלי) – שדה מספרי לחיפוש מספרי.

  • TAG (אופציונלי) – שדה התג לחיפוש מבוסס-תגים.

    • SEPARATOR (אופציונלי): תו שמשמש לחלוקת מחרוזת התגים לתגים נפרדים. ברירת המחדל היא ,. הערך שצוין חייב להיות תו יחיד. לדוגמה, מחרוזת התגים hello, world תפורש כ-hello ו-world ותיכלל באינדקס בהתאם. הערכים המותרים הם ,.<>{}[]"':;!@#$%^&*()-+=~

    • CASESENSITIVE (אופציונלי): מציין את התלות באותיות רישיות של שדות התגים. כברירת מחדל, התגים לא תלויי אותיות רישיות. מחרוזת תגים HeLLo תאונדקס כ-hello, ושאילתה לגבי Hello ו-HeLlo תניב את אותה תוצאה.

הערות

  • בפקודה FT.CREATE, האינדקסים VECTOR,‏ NUMERIC ו-TAG יכולים להופיע בכל סדר.

  • אפשר להוסיף שדה לאינדקס רק פעם אחת. בדוגמה שצוינה, אי אפשר לחזור על השדה my_vector_field_key באותו אינדקס.

  • בפקודה אחת של FT.CREATE, אפשר להוסיף לאינדקס עד 10 שדות.

  • כברירת מחדל, תגי TAG הם לא תלויי-רישיות.

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

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

דוגמאות

דוגמה ל-HNSW:

FT.CREATE my_index_name SCHEMA my_hash_field_key VECTOR HNSW 10 TYPE FLOAT32 DIM 20 DISTANCE_METRIC COSINE M 4 EF_CONSTRUCTION 100

דוגמה ל-FLAT:

FT.CREATE my_index_name SCHEMA my_hash_field_key VECTOR Flat 8 TYPE FLOAT32 DIM 20 DISTANCE_METRIC COSINE INITIAL_CAP 15000

דוגמה ל-HNSW עם שדה מספרי:

FT.CREATE my_index_name SCHEMA my_vector_field_key VECTOR HNSW 10 TYPE FLOAT32 DIM 20 DISTANCE_METRIC COSINE M 4 EF_CONSTRUCTION 100 my_numeric_field_key NUMERIC

דוגמה ל-HNSW עם שדה תג:

FT.CREATE my_index_name SCHEMA my_vector_field_key VECTOR HNSW 10 TYPE FLOAT32 DIM 20 DISTANCE_METRIC COSINE M 4 EF_CONSTRUCTION 100 my_tag_field_key TAG SEPARATOR '@' CASESENSITIVE 

דוגמה ל-HNSW עם תג ושדה מספרי:

FT.CREATE my_index_name SCHEMA my_vector_field_key VECTOR HNSW 10 TYPE FLOAT32 DIM 20 DISTANCE_METRIC COSINE M 4 EF_CONSTRUCTION 100 my_tag_field_key TAG SEPARATOR '@' CASESENSITIVE my_numeric_field_key NUMERIC

דוגמה ל-HNSW עם כמה שדות תגים ושדות מספריים:

FT.CREATE my_index_name SCHEMA my_vector_field_key VECTOR HNSW 10 TYPE FLOAT32 DIM 20 DISTANCE_METRIC COSINE M 4 EF_CONSTRUCTION 100 my_tag_field_key_1 TAG SEPARATOR '@' CASESENSITIVE my_numeric_field_key_1 NUMERIC my_numeric_field_key_2 NUMERIC my_tag_field_key_2 TAG