כיצד להשתמש ברטריברים ב-LangChain?

Kyzd Lhstms Brtrybrym B Langchain



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

פוסט זה ידגים את תהליך השימוש ברטריברים ב-LangChain.

כיצד להשתמש ברטריברים ב-LangChain?

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







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



שלב 1: התקן מודולים
ראשית, התקן את המודולים הנדרשים כמו LangChain כדי לגרום לספריות והתלות שלה להמשיך בתהליך:



צִפצוּף להתקין langchain





התקן את חנות הווקטור של chromadb אשר יכולה לשמש לבסיס נתונים עבור המאחזר כדי להביא נתונים מהחנות:

צִפצוּף להתקין chromadb



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

צִפצוּף להתקין openai

לאחר התקנת כל המודולים הנדרשים, פשוט הגדר את הסביבה באמצעות מפתח OpenAI API:

לייבא אותנו
ייבוא ​​getpass

os.environ [ 'OPENAI_API_KEY' ] = getpass.getpass ( 'מפתח API של OpenAI:' )

שלב 2: העלה מערך נתונים
כעת, הפעל את הקוד הבא כדי ללחוץ על 'לבחור קבצים' לחצן ולהעלות את המסמך או הקובץ מהמערכת המקומית:

מקבצי ייבוא ​​של google.colab
uploaded = files.upload ( )

שלב 3: ייבוא ​​ספריות
ייבא את הספריות הנדרשות כדי לבנות ולהשתמש באחזרים ב-LangChain כגון ' רשימה ',' התקשרויות חוזרות ', ועוד רבים:

מ-abc יבוא ABC, אבסטרקטשיטה
מהקלדת ייבוא ​​כל, רשימה
מ-langchain.schema ייבוא ​​מסמך
מ-langchain.callbacks.manager ייבוא ​​Callbacks

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

מאת langchain.chains ייבוא ​​RetrievalQA
מאת langchain.llms ייבוא ​​OpenAI

כאן, טען את הנתונים באמצעות TextLoader() שיטה עם הנתיב של הקובץ שהועלה בשלב 2:

יבא את TextLoader מ-langchain.document_loaders
loader = TextLoader ( 'state_of_the_union.txt' , הַצפָּנָה = 'utf8' )

ייבוא ​​ספרייה VectorstoreIndexCreator מ-LangChain לבניית אינדקס עבור מסד הנתונים:

יבא את VectorstoreIndexCreator מ-langchain.indexes

תגדיר את אינדקס משתנה באמצעות שיטת VectorstoreIndexCreator() תוך שימוש ב- מעמיס מִשְׁתַנֶה:

index = VectorstoreIndexCreator ( ) .from_loaders ( [ מעמיס ] )

החל את השאילתה כדי לבדוק את האינדקס על ידי שליפת נתונים מהמסמך:

שאילתה = 'מה אמר הנשיא זלנסקי בנאומו'
index.query ( שאילתא )

קבל את הפרטים של האינדקס לגבי איזה מסד נתונים יש את אינדקס באמצעות הקוד הבא:

index.vectorstore

הקוד הבא יסביר את כל הפרטים על האינדקס, סוגו ומסד הנתונים:

index.vectorstore.as_retriever ( )

השתמש בשיטת index with query() המבקשת את סיכום המסמך באמצעות ארגומנט המקור כדי להשתמש בשם המסמך:

index.query ( 'סיכום כללי של נתונים ממסמך זה' , retriever_kwargs = { 'search_kwargs' : { 'לְסַנֵן' : { 'מָקוֹר' : 'state_of_the_union.txt' } } } )

שלב 5: צור הטמעות
טען את המסמך ליצירת הטבעה שלו ואחסן את הטקסט בצורה מספרית באמצעות מאגר הווקטור:

מסמכים = loader.load ( )

התחל את תהליך ההטמעה באמצעות ה text_splitter עם הארגומנטים של גודל הנתחים והחפיפה:

מאת langchain.text_splitter ייבוא ​​CharacterTextSplitter
#שימוש ב-text_splitter ליצירת נתחים קטנים מהמסמך לשימוש ברטריבר
text_splitter = CharacterTextSplitter ( chunk_size = 1000 , chunk_overlap = 0 )
texts = text_splitter.split_documents ( מסמכים )

החל את שיטת OpenAIEmbeddings() שניתן לייבא מ-LangChain:

מאת langchain.embeddings ייבוא ​​OpenAIEmbeddings
embeddings = OpenAIEembeddings ( )

השתמש בחנות chromadb כדי לאחסן את ההטבעות שנוצרו מהמסמך:

מאת langchain.vectorstores ייבוא ​​Chroma
db = Chroma.from_documents ( טקסטים, הטבעות )

שלב 6: בדוק את הרטריבר
ברגע שההטבעות נוצרות ומאוחסנות במסד הנתונים פשוט הגדר את משתנה האחזור:

retriever = db.as_retriever ( )

קרא לשרשרות באמצעות שיטת RetrievalQA() עם הפונקציה OpenAI() והאחזור כארגומנטים שלה:

qa = RetrievalQA.from_chain_type ( llm =OpenAI ( ) , סוג_שרשרת = 'דברים' , מחזיר =רטריבר )

ספק את הקלט לבדיקת הרטריבר באמצעות ה שאילתא משתנה בתוך שיטת qa.run():

שאילתה = 'מה אמר הנשיא זלנסקי בנאומו'
qa.run ( שאילתא )

פשוט התאם אישית את VectorstoreIndexCreator () באמצעות הארגומנטים שלו כדי להגדיר ערכים שונים:

index_creator = VectorstoreIndexCreator (
vectorstore_cls =Chroma,
הטבעה =OpenAIEbeddings ( ) ,
text_splitter =מפצל טקסט תווים ( chunk_size = 1000 , chunk_overlap = 0 )
)

זה הכל לגבי תהליך ההתחלה עם רטריברים ב-LangChain.

סיכום

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