עם כמות קטנה של קוד וכמה ספריות שימושיות, אתה יכול לבנות כלי רב עוצמה זה לניתוח מסמכים.
הפקת תובנות ממסמכים ונתונים היא חיונית בקבלת החלטות מושכלות. עם זאת, חששות לפרטיות מתעוררים בעת התמודדות עם מידע רגיש. LangChain, בשילוב עם OpenAI API, מאפשר לך לנתח את המסמכים המקומיים שלך ללא צורך להעלות אותם באינטרנט.
הם משיגים זאת על ידי שמירה על הנתונים שלך באופן מקומי, שימוש בהטמעות וקטוריזציה לניתוח, וביצוע תהליכים בתוך הסביבה שלך. OpenAI אינה משתמשת בנתונים שנשלחו על ידי לקוחות דרך ה-API שלהם כדי להכשיר את המודלים שלהם או לשפר את השירותים שלהם.
הגדרת הסביבה שלך
צור סביבה וירטואלית חדשה של Python. זה יבטיח שלא יהיו התנגשויות גרסת ספרייה. לאחר מכן הפעל את פקודת הטרמינל הבאה כדי להתקין את הספריות הנדרשות.
pip install langchain openai tiktoken faiss-cpu pypdf
להלן פירוט של אופן השימוש בכל ספריה:
- LangChain: תשתמש בו ליצירה וניהול של שרשראות לשוניות לעיבוד וניתוח טקסטים. זה יספק מודולים לטעינת מסמכים, פיצול טקסט, הטמעות ואחסון וקטורי.
- OpenAI: אתה תשתמש בו להרצת שאילתות ולהשגת תוצאות ממודל שפה.
- tiktoken: תשתמש בו כדי לספור את מספר האסימונים (יחידות טקסט) בטקסט נתון. זה נועד לעקוב אחר ספירת האסימונים בעת אינטראקציה עם OpenAI API אשר גובה תשלום על סמך מספר האסימונים שבהם אתה משתמש.
- FAISS: תשתמש בו כדי ליצור ולנהל חנות וקטורית, המאפשרת שליפה מהירה של וקטורים דומים על סמך ההטמעות שלהם.
- PyPDF: ספריה זו מחלצת טקסט מקובצי PDF. זה עוזר לטעון קבצי PDF ולחלץ את הטקסט שלהם לעיבוד נוסף.
לאחר התקנת כל הספריות, הסביבה שלך מוכנה כעת.
קבלת מפתח API של OpenAI
כאשר אתה מגיש בקשות ל- OpenAI API, עליך לכלול מפתח API כחלק מהבקשה. מפתח זה מאפשר לספק ה-API לאמת שהבקשות מגיעות ממקור לגיטימי ושיש לך את ההרשאות הדרושות כדי לגשת לתכונות שלו.
כדי להשיג מפתח API של OpenAI, המשך אל פלטפורמת OpenAI.
לאחר מכן, מתחת לפרופיל החשבון שלך בפינה השמאלית העליונה, לחץ על הצג מפתחות API. ה מפתחות API יופיע עמוד.
הקלק על ה צור סוד חדשמַפְתֵחַ לַחְצָן. תן שם למפתח שלך ולחץ על צור מפתח סודי חדש. OpenAI יפיק את מפתח ה-API שלך שאותו עליך להעתיק ולשמור במקום בטוח. מטעמי אבטחה, לא תוכל לצפות בו שוב דרך חשבון OpenAI שלך. אם תאבד את המפתח הסודי הזה, תצטרך ליצור מפתח חדש.
קוד המקור המלא זמין ב-a מאגר GitHub.
ייבוא הספריות הנדרשות
כדי שתוכל להשתמש בספריות המותקנות בסביבה הוירטואלית שלך, עליך לייבא אותן.
from langchain.document_loaders import PyPDFLoader, TextLoader
from langchain.text_splitter import CharacterTextSplitter
from langchain.embeddings.openai import OpenAIEmbeddings
from langchain.vectorstores import FAISS
from langchain.chains import RetrievalQA
from langchain.llms import OpenAI
שים לב שאתה מייבא את ספריות התלות מ-LangChain. זה מאפשר לך להשתמש בתכונות ספציפיות של מסגרת LangChain.
טעינת המסמך לניתוח
התחל ביצירת משתנה שמכיל את מפתח ה-API שלך. אתה תשתמש במשתנה זה מאוחר יותר בקוד לצורך אימות.
# Hardcoded API key
openai_api_key = "Your API key"
לא מומלץ לקוד קשיח את מפתח ה-API שלך אם אתה מתכנן לשתף את הקוד שלך עם צדדים שלישיים. עבור קוד ייצור שאתה שואף להפיץ, השתמש במשתנה סביבה במקום זאת.
לאחר מכן, צור פונקציה שטוענת מסמך. הפונקציה צריכה לטעון קובץ PDF או קובץ טקסט. אם המסמך אינו אחד מהם, הפונקציה צריכה להעלות את א ValueError.
defload_document(filename):
if filename.endswith(".pdf"):
loader = PyPDFLoader(filename)
documents = loader.load()
elif filename.endswith(".txt"):
loader = TextLoader(filename)
documents = loader.load()
else:
raise ValueError("Invalid file type")
לאחר טעינת המסמכים, צור א CharacterTextSplitter. מפצל זה יפצל את המסמכים הטעונים לנתחים קטנים יותר בהתבסס על תווים.
text_splitter = CharacterTextSplitter(chunk_size=1000,
chunk_overlap=30, separator="\n")return text_splitter.split_documents(documents=documents)
פיצול המסמך מבטיח שהנתחים יהיו בגודל ניתן לניהול ועדיין מחוברים להקשר חופף כלשהו. זה שימושי למשימות כמו ניתוח טקסט ואחזור מידע.
שאילתה במסמך
אתה צריך דרך לבצע שאילתות במסמך שהועלה כדי להפיק ממנו תובנות. לשם כך, צור פונקציה שלוקחת א שאילתא מחרוזת וא מחזיר כקלט. לאחר מכן הוא יוצר א שליפהQA דוגמה באמצעות מחזיר ומופע של מודל השפה OpenAI.
defquery_pdf(query, retriever):
qa = RetrievalQA.from_chain_type(llm=OpenAI(openai_api_key=openai_api_key),
chain_type="stuff", retriever=retriever)
result = qa.run(query)
print(result)
פונקציה זו משתמשת במופע ה-QA שנוצר כדי להפעיל את השאילתה ולהדפיס את התוצאה.
יצירת הפונקציה הראשית
הפונקציה העיקרית תשלוט בזרימת התוכנית הכוללת. זה ייקח קלט משתמש עבור שם קובץ מסמך ויטען את המסמך הזה. לאחר מכן צור OpenAIEbeddings דוגמה להטמעות ולבניית א חנות וקטור בהתבסס על המסמכים הטעונים ו הטבעות. שמור חנות וקטור זו לקובץ מקומי.
לאחר מכן, טען את מאגר הווקטור המתמשך מהקובץ המקומי. לאחר מכן היכנס ללולאה שבה המשתמש יכול להזין שאילתות. ה רָאשִׁי הפונקציה מעבירה את השאילתות האלה ל- query_pdf פונקציה יחד עם הרטריבר של חנות הווקטור המתמשכת. הלולאה תימשך עד שהמשתמש יכנס ל"יציאה".
defmain():
filename = input("Enter the name of the document (.pdf or .txt):\n")
docs = load_document(filename)
embeddings = OpenAIEmbeddings(openai_api_key=openai_api_key)
vectorstore = FAISS.from_documents(docs, embeddings)
vectorstore.save_local("faiss_index_constitution")
persisted_vectorstore = FAISS.load_local("faiss_index_constitution", embeddings)
query = input("Type in your query (type 'exit' to quit):\n")
while query != "exit":
query_pdf(query, persisted_vectorstore.as_retriever())
query = input("Type in your query (type 'exit' to quit):\n")
הטבעות לוכדות קשרים סמנטיים בין מילים. וקטורים הם צורה שבה אתה יכול לייצג פיסות טקסט.
קוד זה ממיר את נתוני הטקסט במסמך לוקטורים באמצעות ההטמעות שנוצרו על ידי OpenAIEbeddings. לאחר מכן הוא מוסיף את הוקטורים הללו באמצעות FAISS, לאחזור יעיל והשוואה של וקטורים דומים. זה מה שמאפשר ניתוח של המסמך שהועלה.
לבסוף, השתמש המבנה __name__ == "__main__". לקרוא לפונקציה הראשית אם משתמש מריץ את התוכנית עצמאית:
if __name__ == "__main__":
main()
אפליקציה זו היא יישום שורת פקודה. בתור הרחבה, אתה יכול השתמש ב-Streamlit כדי להוסיף ממשק אינטרנט לאפליקציה.
ביצוע ניתוח מסמכים
כדי לבצע ניתוח מסמכים, אחסן את המסמך שברצונך לנתח באותה תיקיה כמו הפרוייקט שלך, ולאחר מכן הפעל את התוכנית. הוא יבקש את שם המסמך שברצונך לנתח. הזן את שמה המלא ולאחר מכן הזן שאילתות עבור התוכנית לניתוח.
צילום המסך שלהלן מציג את התוצאות של ניתוח PDF.
הפלט הבא מציג את התוצאות של ניתוח קובץ טקסט המכיל קוד מקור.
ודא שהקבצים שברצונך לנתח הם בפורמט PDF או טקסט. אם המסמכים שלך הם בפורמטים אחרים, אתה יכול להמיר אותם לפורמט PDF באמצעות כלים מקוונים.
הבנת הטכנולוגיה שמאחורי מודלים גדולים של שפה
LangChain מפשטת את יצירת האפליקציות באמצעות מודלים של שפה גדולים. זה גם אומר שהוא מופשט מה קורה מאחורי הקלעים. כדי להבין בדיוק כיצד פועלת האפליקציה שאתה יוצר, עליך להכיר את הטכנולוגיה שמאחורי מודלים של שפה גדולים.