פיתוח אפליקציות מבוססות-LLM באמצעות LangChain

השילוב של LangChain עם AlloyDB ל-PostgreSQL מאפשר לכם לפתח אפליקציות של מודל שפה גדול (LLM) ושל יצירת תוכן מבוססת-אחזור (RAG) שמגובות במסד הנתונים שלכם. אתם יכולים להשתמש במחלקות של LangChain ב-AlloyDB כדי לבצע חיפוש סמנטי באמצעות מאגר וקטורים, לטעון ולשמור מסמכים ולשמר את היסטוריית ההודעות בצ'אט. בסקירה הכללית של כל רכיב יש קישור למדריך מפורט ב-GitHub.

מה זה LangChain?

‫LangChain הוא framework לתזמור של מודלי שפה גדולים (LLM), שעוזר למפתחים ליצור אפליקציות של AI גנרטיבי או תהליכי עבודה של יצירת נתונים משולבת אחזור (RAG). הוא מספק את המבנה, הכלים והרכיבים לייעול תהליכי עבודה מורכבים של מודלים גדולים של שפה (LLM). למידע נוסף על מודלים של שפה גדולה (LLM), על תרחישי השימוש בהם ועל המודלים והשירותים הספציפיים ש-Google מציעה, אפשר לעיין בסקירה הכללית של המושגים והשירותים של LLM ב- Google Cloud.

מידע נוסף על LangChain זמין בדף Google LangChain. למידע נוסף על LangChain, קראו את המסמכים של LangChain.

רכיבי LangChain ל-AlloyDB

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

מאגר וקטורים ל-AlloyDB

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

כדי לעבוד עם מאגר וקטורים ב-AlloyDB, משתמשים במחלקה AlloyDBVectorStore.

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

מדריך לפרוצדורות של מאגר וקטורים

במדריך של AlloyDB למאגר וקטורים מוסבר איך:

  • התקנת חבילת השילוב ו-LangChain
  • יוצרים אובייקט AlloyDBEngine ומגדירים מאגר חיבורים למסד הנתונים ב-AlloyDB.
  • אתחול טבלה למאגר הווקטורים
  • הגדרת שירות הטמעה באמצעות VertexAIEmbeddings
  • אתחול AlloyDBVectorStore
  • הוספה ומחיקה של מסמכים
  • חיפוש מסמכים דומים
  • הוספת אינדקס וקטורי לשיפור ביצועי החיפוש
  • יצירת מאגר וקטורים בהתאמה אישית כדי להתחבר למסד נתונים קיים של AlloyDB ל-PostgreSQL, שיש בו טבלה עם הטמעות וקטורים

טוען מסמכים ל-AlloyDB

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

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

משתמשים במחלקה AlloyDBSaver כדי לשמור ולמחוק מסמכים.

מידע נוסף זמין במאמר בנושא טועני מסמכים של LangChain.

מדריך לתהליך טעינת מסמכים

במדריך לטעינת מסמכים ב-AlloyDB מוסבר איך:

  • התקנת חבילת השילוב ו-LangChain
  • טעינת מסמכים מטבלה
  • הוספת מסנן לטוען
  • התאמה אישית של החיבור והאימות
  • התאמה אישית של מבנה המסמך על ידי ציון תוכן ומטא-נתונים של הלקוח
  • איך משתמשים בAlloyDBSaver ומתאימים אותו אישית כדי לאחסן ולמחוק מסמכים

היסטוריית הודעות הצ'אט ב-AlloyDB

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

‫AlloyDB מרחיב את המחלקה הזו עם AlloyDBChatMessageHistory.

מדריך לתהליך של היסטוריית ההודעות בצ'אט

במדריך AlloyDB להיסטוריית הודעות בצ'אט מוסבר איך:

  • התקנת חבילת השילוב ו-LangChain
  • יוצרים אובייקט AlloyDBEngine ומגדירים מאגר חיבורים למסד הנתונים ב-AlloyDB.
  • הפעלת טבלה
  • מאתחלים את המחלקה AlloyDBChatMessageHistory כדי להוסיף ולמחוק הודעות
  • יצירת שרשרת להיסטוריית ההודעות באמצעות LangChain Expression Language‏ (LCEL)

המאמרים הבאים