חיפוש עצבי כוח עם מחברי AI/ML בשירות חיפוש פתוח של אמזון | שירותי האינטרנט של אמזון

חיפוש עצבי כוח עם מחברי AI/ML בשירות חיפוש פתוח של אמזון | שירותי האינטרנט של אמזון

צומת המקור: 3068091

עם השקת תכונת החיפוש העצבי עבור שירות חיפוש פתוח של אמזון ב-OpenSearch 2.9, כעת אין מאמץ להשתלב עם מודלים של AI/ML כדי להפעיל חיפוש סמנטי ומקרי שימוש אחרים. OpenSearch Service תמך הן בחיפוש מילוני והן בחיפוש וקטור מאז הצגת התכונה k-nearest neighbor שלו (k-NN) בשנת 2020; עם זאת, הגדרת חיפוש סמנטי דרשה בניית מסגרת לשילוב מודלים של למידת מכונה (ML) להטמעה וחיפוש. תכונת החיפוש העצבי מקלה על טרנספורמציה של טקסט לוקטור במהלך הבליעה והחיפוש. כאשר אתה משתמש בשאילתה עצבית במהלך החיפוש, השאילתה מתורגמת להטבעה וקטורית ו-k-NN משמש להחזרת ההטבעות הווקטוריות הקרובות ביותר מהקורפוס.

כדי להשתמש בחיפוש עצבי, עליך להגדיר מודל ML. אנו ממליצים להגדיר מחברי AI/ML לשירותי AWS AI ו-ML (כגון אמזון SageMaker or סלע אמזון) או חלופות של צד שלישי. החל מגרסה 2.9 ב-OpenSearch Service, מחברי AI/ML משתלבים עם חיפוש עצבי כדי לפשט ולהפעיל את התרגום של קורפוס הנתונים והשאילתות שלך להטמעות וקטוריות, ובכך להסיר חלק ניכר מהמורכבות של הידרציה וקטורית וחיפוש.

בפוסט זה, אנו מדגימים כיצד להגדיר מחברי AI/ML לדגמים חיצוניים דרך קונסולת OpenSearch Service.

סקירת פתרונות

באופן ספציפי, פוסט זה מנחה אותך דרך ההתחברות לדגם ב- SageMaker. לאחר מכן אנו מנחים אותך דרך השימוש במחבר כדי להגדיר חיפוש סמנטי בשירות OpenSearch כדוגמה למקרה שימוש שנתמך באמצעות חיבור למודל ML. האינטגרציות של Amazon Bedrock ו-SageMaker נתמכות כעת בממשק ממשק המשתמש של קונסולת OpenSearch Service, ורשימת השילובים הנתמכים ב-UI של צד ראשון ושלישי תמשיך לגדול.

עבור כל הדגמים שאינם נתמכים דרך ממשק המשתמש, אתה יכול במקום זאת להגדיר אותם באמצעות ממשקי ה-API הזמינים וה- שרטוטים של ML. למידע נוסף, עיין ב מבוא למודלים של OpenSearch. אתה יכול למצוא שרטוטים עבור כל מחבר ב- מאגר GitHub של ML Commons.

תנאים מוקדמים

לפני חיבור הדגם דרך מסוף OpenSearch Service, צור דומיין של OpenSearch Service. מפה א AWS זהות וניהול גישה תפקיד (IAM) לפי השם LambdaInvokeOpenSearchMLCommonsRole בתור התפקיד האחורי ב- ml_full_access תפקיד באמצעות תוסף האבטחה ב-OpenSearch Dashboards, כפי שמוצג בסרטון הבא. זרימת העבודה של שילובי OpenSearch Service מולאה מראש כדי להשתמש ב- LambdaInvokeOpenSearchMLCommonsRole תפקיד IAM כברירת מחדל ליצירת המחבר בין דומיין OpenSearch Service לבין המודל שנפרס ב- SageMaker. אם אתה משתמש בתפקיד IAM מותאם אישית באינטגרציות של קונסולת OpenSearch Service, ודא שהתפקיד המותאם אישית ממופה כתפקיד העורף עם ml_full_access הרשאות לפני פריסת התבנית.

פרוס את המודל באמצעות AWS CloudFormation

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

כדי להגדיר את האינטגרציה, אתה רק צריך לספק את נקודת הקצה של תחום OpenSearch Service ולספק שם דגם כדי לזהות באופן ייחודי את חיבור הדגם. כברירת מחדל, התבנית פורסת את המודל של מחבקים משפטים, djl://ai.djl.huggingface.pytorch/sentence-transformers/all-MiniLM-L6-v2.

כשאתה בוחר צור ערימה, אתה מנותב ל- AWS CloudFormation לְנַחֵם. תבנית CloudFormation פורסת את הארכיטקטורה המפורטת בתרשים הבא.

מחסנית CloudFormation יוצרת AWS למבדה אפליקציה שפורסת מודל מ שירות אחסון פשוט של אמזון (Amazon S3), יוצר את המחבר, ומייצר את מזהה הדגם בפלט. לאחר מכן תוכל להשתמש במזהה המודל הזה כדי ליצור אינדקס סמנטי.

אם דגם ברירת המחדל של all-MiniLM-L6-v2 אינו משרת את מטרתך, תוכל לפרוס כל מודל הטמעת טקסט לבחירתך על מארח הדגם הנבחר (SageMaker או Amazon Bedrock) על ידי אספקת חפצי הדגם שלך כאובייקט S3 נגיש. לחלופין, תוכל לבחור אחת מהאפשרויות הבאות מודלים של שפה שהוכשרו מראש ולפרוס אותו ל- SageMaker. להנחיות להגדרת נקודת הקצה והדגמים שלך, עיין ב תמונות זמינות של אמזון SageMaker.

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

הצג את המודל הפרוס דרך לוחות המחוונים של OpenSearch

כדי לוודא שתבנית CloudFormation פרסה בהצלחה את המודל בדומיין OpenSearch Service ולקבל את מזהה הדגם, אתה יכול להשתמש ב-ML Commons REST GET API דרך OpenSearch Dashboards Dev Tools.

ממשק API של GET _plugins REST מספק כעת ממשקי API נוספים כדי להציג גם את סטטוס הדגם. הפקודה הבאה מאפשרת לך לראות את המצב של דגם מרוחק:

GET _plugins/_ml/models/<modelid>

כפי שמוצג בצילום המסך הבא, א DEPLOYED הסטטוס בתגובה מציין שהמודל נפרס בהצלחה באשכול שירות OpenSearch.

לחלופין, תוכל להציג את המודל שנפרס בדומיין OpenSearch Service שלך ​​באמצעות ה- למידת מכונה דף של לוחות מחוונים של OpenSearch.

דף זה מפרט את פרטי הדגם והסטטוסים של כל הדגמים שנפרסו.

צור את הצינור העצבי באמצעות מזהה המודל

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

PUT _ingest/pipeline/neural-pipeline
{
  "description": "Semantic Search for retail product catalog ",
  "processors" : [
    {
      "text_embedding": {
        "model_id": "sfG4zosBIsICJFsINo3X",
        "field_map": {
           "description": "desc_v",
           "name": "name_v"
        }
      }
    }
  ]
}

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

כעת תוכל להגדיר את מיפוי האינדקס שלך עם צינור ברירת המחדל המוגדר לשימוש בצינור העצבי החדש שיצרת בשלב הקודם. ודא ששדות הווקטור מוצהרים כ knn_vector והמידות מתאימות לדגם שנפרס על SageMaker. אם שמרת על תצורת ברירת המחדל לפריסת דגם All-MiniLM-L6-v2 ב- SageMaker, שמור את ההגדרות הבאות כפי שהן והפעל את הפקודה ב-Dev Tools.

PUT semantic_demostore
{
  "settings": {
    "index.knn": true,  
    "default_pipeline": "neural-pipeline",
    "number_of_shards": 1,
    "number_of_replicas": 1
  },
  "mappings": {
    "properties": {
      "desc_v": {
        "type": "knn_vector",
        "dimension": 384,
        "method": {
          "name": "hnsw",
          "engine": "nmslib",
          "space_type": "cosinesimil"
        }
      },
      "name_v": {
        "type": "knn_vector",
        "dimension": 384,
        "method": {
          "name": "hnsw",
          "engine": "nmslib",
          "space_type": "cosinesimil"
        }
      },
      "description": {
        "type": "text" 
      },
      "name": {
        "type": "text" 
      } 
    }
  }
}

הטמעת מסמכים לדוגמה כדי ליצור וקטורים

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

curl -XPOST -u 'username:password' 'https://domain-end-point/_bulk' --data-binary @semantic_demostore.json -H 'Content-Type: application/json'

אמת את אינדקס ה-semantic_demostore החדש

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

השווה חיפוש מילוני וחיפוש סמנטי המופעל על ידי חיפוש עצבי באמצעות הכלי השווה תוצאות חיפוש

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

לנקות את

אתה יכול למחוק את המשאבים שיצרת בעקבות ההוראות בפוסט זה על ידי מחיקת מחסנית CloudFormation. פעולה זו תמחק את משאבי Lambda ואת דלי S3 המכילים את הדגם שנפרס ל- SageMaker. השלם את השלבים הבאים:

  1. במסוף AWS CloudFormation, נווט לדף פרטי הערימה שלך.
  2. בחרו מחק.

  1. בחרו מחק כדי לאשר.

אתה יכול לעקוב אחר התקדמות מחיקת הערימה במסוף AWS CloudFormation.

שים לב שמחיקת מחסנית CloudFormation אינה מוחקת את המודל שנפרס בדומיין SageMaker ואת מחבר ה-AI/ML שנוצר. הסיבה לכך היא שדגמים אלה והמחבר יכולים להיות משויכים לאינדקסים מרובים בתוך התחום. כדי למחוק ספציפית דגם ואת המחבר המשויך לו, השתמש בממשקי ה-API של המודל כפי שמוצג בצילומי המסך הבאים.

ראשית, undeploy הדגם מזיכרון הדומיין של OpenSearch Service:

POST /_plugins/_ml/models/<model_id>/_undeploy

לאחר מכן תוכל למחוק את המודל מאינדקס המודל:

DELETE /_plugins/_ml/models/<model_id>

לבסוף, מחק את המחבר מאינדקס המחבר:

DELETE /_plugins/_ml/connectors/<connector_id>

סיכום

בפוסט זה, למדת כיצד לפרוס מודל ב- SageMaker, ליצור את מחבר AI/ML באמצעות קונסולת OpenSearch Service ולבנות את אינדקס החיפוש העצבי. היכולת להגדיר מחברי AI/ML בשירות OpenSearch מפשטת את תהליך הידרציה הווקטורית על ידי הפיכת האינטגרציות למודלים חיצוניים מקוריים. אתה יכול ליצור אינדקס חיפוש עצבי תוך דקות באמצעות צינור הבליעה העצבית והחיפוש העצבי המשתמשים במזהה המודל כדי ליצור את ההטמעה הוקטורית תוך כדי בליעה וחיפוש.

למידע נוסף על מחברי AI/ML אלה, עיין ב מחברי AI של Amazon OpenSearch Service לשירותי AWS, שילובי תבניות AWS CloudFormation לחיפוש סמנטי, ו יצירת מחברים עבור פלטפורמות ML של צד שלישי.


על הכותבים

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

דאגני בראון הוא מנהל מוצר ראשי ב-AWS המתמקד ב-OpenSearch.

בול זמן:

עוד מ AWS Big Data