כיצד לעבוד עם מטמון ב-LangChain?

Kyzd L Bwd M Mtmwn B Langchain



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

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







כיצד לעבוד עם מטמון ב-LangChain?

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



כדי ללמוד את תהליך העבודה עם מטמון ב-LangChain, פשוט עברו על השלבים המפורטים:



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





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

מודול FAISS נדרש לבצע חיפוש דמיון לחילוץ או הפקת פלט בהתבסס על הקלט שסופק על ידי המשתמש:



צִפצוּף להתקין faiss-gpu

המודול האחרון עבור מדריך זה שנדרש להתקנה הוא OpenAI אשר ניתן להשתמש בו ליצירת הטבעות של הנתונים באמצעות שיטת OpenAIEmbeddings():

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

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

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

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

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

מאת langchain.storage ייבוא ​​InMemoryStore
מאת langchain.embeddings ייבוא ​​CacheBackedEmbeddings
מ-langchain.storage ייבוא ​​LocalFileStore
מאת langchain.embeddings ייבוא ​​OpenAIEmbeddings
מ-langchain.document_loaders ייבוא ​​TextLoader
מאת langchain.embeddings.openai ייבוא ​​OpenAIEmbeddings
מאת langchain.text_splitter ייבוא ​​CharacterTextSplitter
מאת langchain.vectorstores ייבוא ​​FAISS

שלב 3: בניית מודל מטמון
לאחר ייבוא ​​הספריות, פשוט קרא לשיטת OpenAIEmbeddings() כדי לבנות את המודל ולאחסן אותו במשתנה:

underlying_embeddings = OpenAIEmbeddings ( )

כעת, החל מטמון באמצעות שיטת LocalFileStore() ושיטות CacheBackedEmbeddings() עם מספר ארגומנטים:

fs = LocalFileStore ( './cache/' )

cached_embedder = CacheBackedEmbeddings.from_bytes_store (
הטמעות_בסיסיות, fs, מרחב שמות =underlying_embeddings.model
)

כל שעליך לעשות הוא לקבל את רשימת ההטבעות ולעת עתה, הרשימה ריקה מכיוון שההטבעות אינן מאוחסנות ברשימה:

רשימה ( fs.yield_keys ( ) )

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

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

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

raw_documents = TextLoader ( 'state_of_the_union.txt' ) .לִטעוֹן ( )
text_splitter = CharacterTextSplitter ( chunk_size = 1000 , chunk_overlap = 0 )
documents = text_splitter.split_documents ( מסמכים_גולמיים )

לאחר פיצול הטקסט, אחסן את הנתונים ב- db משתנה באמצעות ספריית FAISS כדי לקבל את הפלט באמצעות שיטת חיפוש הדמיון:

db = FAISS.from_documents ( מסמכים, cached_embedder )

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

רשימה ( fs.yield_keys ( ) ) [ : 5 ]

שלב 5: שימוש ב-Caching בתוך הזיכרון
ניתן להשתמש במטמון הבא באמצעות שיטות InMemoryStore() כדי להגדיר את משתנה החנות:

חנות = InMemoryStore ( )

בנה את מודל המטמון באמצעות שיטות OpenAIEmbeddings() ו-CacheBackedEmbeddings() עם המודל, החנות ומרחב השמות כפרמטרים שלו:

underlying_embeddings = OpenAIEmbeddings ( )
embedder = CacheBackedEmbeddings.from_bytes_store (
הטמעות_בסיסיות, חנות, מרחב שמות =underlying_embeddings.model
)

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

embeddings = embedder.embed_documents ( [ 'שלום' , 'הֱיה שלום' ] )

כעת, החל מטמון על ההטבעות כדי להביא במהירות נתונים מהמסמכים:

embeddings_from_cache = embedder.embed_documents ( [ 'שלום' , 'הֱיה שלום' ] )

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

embeddings == embeddings_from_cache

שלב 6: שימוש במטמון של מערכת קבצים
השיטה האחרונה להחלת מטמון בהטמעות ממסמך test_cache באמצעות מאגר מערכת הקבצים:

fs = LocalFileStore ( './test_cache/' )

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

embedder2 = CacheBackedEmbeddings.from_bytes_store (
הטמעות_בסיסיות, fs, מרחב שמות =underlying_embeddings.model
)

השתמש במשתנה embeddings עם הנתונים המאוחסנים במטמון כדי לקרוא לשיטת embedder():

embeddings = embedder2.embed_documents ( [ 'שלום' , 'הֱיה שלום' ] )

כעת קבלו את ההטמעות של שני העולמות לעיל שהוזכרו כפרמטרים:

רשימה ( fs.yield_keys ( ) )

זה הכל על תהליך הבנייה והעבודה עם מטמון ב-LangChain.

סיכום

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