כיצד להשתמש בהטבעות ב-LangChain

Kyzd Lhstms Bhtb Wt B Langchain



הטבעות הן אינדקס של קשרי מחרוזת טקסט ומבוטאות באמצעות וקטור (רשימה) של מספרים שלמים בנקודה צפה. המרחק בין שני וקטורים משמש כמדד למידת החיבור ביניהם; ככל שהמרחק קטן יותר, הקשר קרוב יותר. מחלקת LangChain Embedding נועדה לשמש כממשק לשירותי הטמעה כגון OpenAI, HuggingFace ואחרים.

שתי שיטות, embed_query() ו-embed_documents(), מסופקות על ידי מחלקת הבסיס. הראשון שבהם פועל על מסמך בודד, ואילו השני יכול לפעול על מסמכים רבים.

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







דוגמה: השגת טקסט קלט יחיד באמצעות הטבעת טקסט OpenAI

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



הספרייה הראשונה שעלינו להתקין בפרויקט שלנו היא LangChain. זה לא מגיע עם הספרייה הסטנדרטית של Python ולכן עלינו להתקין אותה בנפרד. מכיוון ש-langchain זמין ב- PyPi, נוכל להתקין אותו בקלות באמצעות פקודת pip בטרמינל. לפיכך, אנו מפעילים את הפקודה הבאה כדי להתקין את ספריית LangChain:



$ pip התקנת langchain

הספרייה מותקנת ברגע שהדרישות מתקיימות.





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

$ pip התקנת openai

כעת, שתי הספריות הנדרשות מותקנות בקובץ הפרויקט שלנו. עלינו לייבא את המודולים הנדרשים.



מ langchain. הטבעות . openai יְבוּא OpenAIEbeddings

יְבוּא אתה

אתה . בְּעֵרֶך [ 'OPENAI_API_KEY' ] = 'sk-YOUR_API_KEY'

כדי להשיג את ההטמעות של OpenAI, עלינו לייבא את המחלקה OpenAIEmbeddings מחבילת 'langchain.embeddings.openai'. לאחר מכן, אנו מגדירים את מפתח ה-API כמשתנה הסביבה. אנחנו צריכים את מפתח ה-API הסודי כדי לגשת לדגמי OpenAI השונים. ניתן להפיק מפתח זה מפלטפורמת OpenAI. כל שעליך לעשות הוא להירשם ולקבל מפתח סודי מקטע 'הצג מפתח סודי' בפרופיל שלך. ניתן להשתמש במפתח זה בפרויקטים שונים עבור לקוח ספציפי.

משתני הסביבה משמשים לאחסון מפתחות ה-API עבור סביבה מסוימת במקום לקודם קשיח בפונקציות. לכן, כדי להגדיר את מפתח ה-API כמשתנה הסביבה, עלינו לייבא את מודול 'OS'. שיטת os.environ() משמשת להגדרת מפתח ה-API כמשתנה הסביבה. הוא מכיל שם וערך. השם שהגדרנו הוא 'OPENAI_API_KEY' והמפתח הסודי מוגדר ל'ערך'.

דֶגֶם = OpenAIEbeddings ( )

הקלד טקסט = 'זה להפגנה'.

תוֹצָאָה = דֶגֶם. embed_query ( הקלד טקסט )

הדפס ( תוֹצָאָה )

הדפס ( רק ( תוֹצָאָה ) )

כבר התממשקנו עם מעטפת ההטמעה של OpenAI. לאחר מכן, אנו קוראים לבנאי של המחלקה OpenAIEmbedding. OpenAI מספקת מגוון דגמי הטמעה אבל אתה צריך לשלם עבורם. הנה, אנחנו הולכים עם מודל ההטבעה המוגדר כברירת מחדל של OpenAI, כלומר text-embedding-ada-002, שהוא בחינם. כאשר אינך מספק שם דגם כלשהו כפרמטר, נעשה שימוש במודל ברירת המחדל.

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

לבסוף, כדי להציג את התוצאה, יש לנו את שיטת ה-print() של Python. אנחנו פשוט צריכים להעביר את האובייקט שמאחסן את הערך שברצוננו להציג לשיטת print(). לפיכך, אנו מפעילים פונקציה זו פעמיים; ראשית כדי להציג את רשימת המספרים הצפים ושנית כדי להדפיס את האורך של ערכים אלה באמצעות שיטת len() איתה.

ניתן לראות את רשימת הערכים הצפים בתמונת המצב הבאה עם אורך הערכים הללו:

דוגמה: השגת טקסט/מסמך קלט מרובה באמצעות הטבעת טקסט OpenAI

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

כבר התקנו את הספריות באיור הקודם. ספרייה נוספת שעלינו להתקין כאן היא ספריית tiktoken של Python. כתוב את הפקודה בטרמינל כדי להתקין אותו:

$ pip התקנת tiktoken

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

מ langchain. הטבעות . openai יְבוּא OpenAIEbeddings

דֶגֶם = OpenAIEbeddings ( openai_api_key = 'sk-YOUR_API_KEY'

מחרוזות = ['
זֶה הוא ל הפגנה. ',' זֶה חוּט הוא גַם ל הפגנה. ',' זֶה הוא הדגמה נוספת חוּט . ',' זֶה הוא אחרון חוּט . ']

תוצאה = model.embed_documents(strings)

הדפס (תוצאה)

print(len(result))

המחלקה OpenAIEmbeddings מיובאת מחבילת 'langchain.embeddings.openai'. בדוגמה הקודמת, הגדרנו את מפתח ה-API בתור משתנה הסביבה. אבל עבור זה, אנו מעבירים אותו ישירות לבנאי. אז, אנחנו לא צריכים לייבא את מודול 'OS' לכאן.

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

אתה יכול לציין מחרוזות מרובות פשוט על ידי הפרדה של כל אחת בפסיק. במקרה הקודם, שיטת embed_text() נקראת אך איננו יכולים להשתמש בה כאן מכיוון שהיא פועלת רק עבור מחרוזת הטקסט הבודדת. כדי להטביע מחרוזות מרובות, השיטה שיש לנו היא embed_document(). אז, אנו קוראים לזה עם מודל OpenAI שצוין ומחרוזות טקסט כארגומנט. הפלט נשמר באובייקט התוצאה. לבסוף, כדי להציג את הפלט, נעשה שימוש בשיטת Python print() עם תוצאת האובייקט כפרמטר שלה. כמו כן, אנו רוצים לראות את אורך הערכים הצפים הללו. לפיכך, אנו מפעילים את שיטת len() בתוך שיטת print().

הפלט שאוחזר מסופק בתמונה הבאה:

סיכום

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