Με μια μικρή ποσότητα κώδικα και μερικές χρήσιμες βιβλιοθήκες, μπορείτε να δημιουργήσετε αυτό το ισχυρό εργαλείο ανάλυσης εγγράφων.
Η εξαγωγή πληροφοριών από έγγραφα και δεδομένα είναι ζωτικής σημασίας για τη λήψη τεκμηριωμένων αποφάσεων. Ωστόσο, προκύπτουν ανησυχίες σχετικά με το απόρρητο όταν ασχολούμαστε με ευαίσθητες πληροφορίες. Το LangChain, σε συνδυασμό με το OpenAI API, σας επιτρέπει να αναλύετε τα τοπικά σας έγγραφα χωρίς να χρειάζεται να τα ανεβάσετε στο διαδίκτυο.
Αυτό το επιτυγχάνουν διατηρώντας τα δεδομένα σας τοπικά, χρησιμοποιώντας ενσωματώσεις και διανυσματοποίηση για ανάλυση και εκτελώντας διαδικασίες στο περιβάλλον σας. Το OpenAI δεν χρησιμοποιεί δεδομένα που υποβάλλονται από πελάτες μέσω του API τους για να εκπαιδεύσει τα μοντέλα τους ή να βελτιώσει τις υπηρεσίες τους.
Ρύθμιση του περιβάλλοντος σας
Δημιουργήστε ένα νέο εικονικό περιβάλλον Python. Αυτό θα διασφαλίσει ότι δεν υπάρχουν διενέξεις εκδόσεων βιβλιοθήκης. Στη συνέχεια, εκτελέστε την ακόλουθη εντολή τερματικού για να εγκαταστήσετε τις απαιτούμενες βιβλιοθήκες.
pip install langchain openai tiktoken faiss-cpu pypdf
Ακολουθεί μια ανάλυση του τρόπου χρήσης κάθε βιβλιοθήκης:
- LangChain: Θα το χρησιμοποιήσετε για τη δημιουργία και τη διαχείριση γλωσσικών αλυσίδων για επεξεργασία και ανάλυση κειμένου. Θα παρέχει ενότητες για φόρτωση εγγράφων, διαχωρισμό κειμένου, ενσωματώσεις και διανυσματική αποθήκευση.
- OpenAI: Θα το χρησιμοποιήσετε για την εκτέλεση ερωτημάτων και τη λήψη αποτελεσμάτων από ένα μοντέλο γλώσσας.
- tiktoken: Θα το χρησιμοποιήσετε για να μετρήσετε τον αριθμό των διακριτικών (μονάδων κειμένου) σε ένα δεδομένο κείμενο. Αυτό γίνεται για να παρακολουθείτε τον αριθμό των διακριτικών κατά την αλληλεπίδραση με το OpenAI API το οποίο χρεώνει με βάση τον αριθμό των διακριτικών που χρησιμοποιείτε.
- FAISS: Θα το χρησιμοποιήσετε για να δημιουργήσετε και να διαχειριστείτε ένα χώρο αποθήκευσης διανυσμάτων, επιτρέποντας τη γρήγορη ανάκτηση παρόμοιων διανυσμάτων με βάση τις ενσωματώσεις τους.
- PyPDF: Αυτή η βιβλιοθήκη εξάγει κείμενο από αρχεία PDF. Βοηθά στη φόρτωση αρχείων PDF και εξάγει το κείμενό τους για περαιτέρω επεξεργασία.
Αφού εγκατασταθούν όλες οι βιβλιοθήκες, το περιβάλλον σας είναι πλέον έτοιμο.
Λήψη κλειδιού OpenAI API
Όταν κάνετε αιτήματα στο OpenAI API, πρέπει να συμπεριλάβετε ένα κλειδί API ως μέρος του αιτήματος. Αυτό το κλειδί επιτρέπει στον πάροχο API να επαληθεύσει ότι τα αιτήματα προέρχονται από νόμιμη πηγή και ότι έχετε τα απαραίτητα δικαιώματα για πρόσβαση στις δυνατότητές του.
Για να αποκτήσετε ένα κλειδί OpenAI API, προχωρήστε στο Πλατφόρμα OpenAI.
Στη συνέχεια, κάτω από το προφίλ του λογαριασμού σας στην επάνω δεξιά γωνία, κάντε κλικ στο Προβολή κλειδιών API. ο Κλειδιά API θα εμφανιστεί η σελίδα.
Κάνε κλικ στο Δημιουργήστε νέο μυστικόκλειδί κουμπί. Ονομάστε το κλειδί σας και κάντε κλικ στο Δημιουργήστε νέο μυστικό κλειδί. Το OpenAI θα δημιουργήσει το κλειδί API σας το οποίο θα πρέπει να αντιγράψετε και να κρατήσετε κάπου ασφαλές. Για λόγους ασφαλείας, δεν θα μπορείτε να το προβάλετε ξανά μέσω του λογαριασμού σας OpenAI. Εάν χάσετε αυτό το μυστικό κλειδί, θα χρειαστεί να δημιουργήσετε ένα νέο.
Ο πλήρης πηγαίος κώδικας είναι διαθέσιμος σε α Αποθετήριο 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 ή ένα αρχείο κειμένου. Εάν το έγγραφο δεν είναι κανένα από τα δύο, η συνάρτηση θα πρέπει να αυξήσει a 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)
Ο διαχωρισμός του εγγράφου διασφαλίζει ότι τα κομμάτια είναι διαχειρίσιμου μεγέθους και εξακολουθούν να συνδέονται με κάποιο αλληλεπικαλυπτόμενο πλαίσιο. Αυτό είναι χρήσιμο για εργασίες όπως η ανάλυση κειμένου και η ανάκτηση πληροφοριών.
Ερώτηση για το έγγραφο
Χρειάζεστε έναν τρόπο να υποβάλετε ερώτημα στο μεταφορτωμένο έγγραφο για να αντλήσετε πληροφορίες από αυτό. Για να το κάνετε αυτό, δημιουργήστε μια συνάρτηση που απαιτεί a ερώτηση χορδή και α ανακτών ως είσοδος. Στη συνέχεια δημιουργεί ένα RetrievalQA παράδειγμα χρησιμοποιώντας το ανακτών και ένα παράδειγμα του μοντέλου γλώσσας 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 για να εκτελέσει το ερώτημα και να εκτυπώσει το αποτέλεσμα.
Δημιουργία της κύριας συνάρτησης
Η κύρια λειτουργία θα ελέγχει τη συνολική ροή του προγράμματος. Θα λάβει την είσοδο του χρήστη για ένα όνομα αρχείου εγγράφου και θα φορτώσει αυτό το έγγραφο. Στη συνέχεια δημιουργήστε ένα OpenAIEmbeddings παράδειγμα για ενσωματώσεις και κατασκευή α κατάστημα διάνυσμα με βάση τα φορτωμένα έγγραφα και ενσωματώσεις. Αποθηκεύστε αυτό το διανυσματικό κατάστημα σε ένα τοπικό αρχείο.
Στη συνέχεια, φορτώστε το διανυσματικό χώρο αποθήκευσης από το τοπικό αρχείο. Στη συνέχεια, εισάγετε έναν βρόχο όπου ο χρήστης μπορεί να εισάγει ερωτήματα. ο κύριος η συνάρτηση περνά αυτά τα ερωτήματα στο query_pdf λειτουργούν μαζί με το retriever του persisted vector store. Ο βρόχος θα συνεχιστεί μέχρι ο χρήστης να εισέλθει στο "exit".
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")
Οι ενσωματώσεις καταγράφουν σημασιολογικές σχέσεις μεταξύ των λέξεων. Τα διανύσματα είναι μια μορφή με την οποία μπορείτε να αναπαραστήσετε κομμάτια κειμένου.
Αυτός ο κώδικας μετατρέπει τα δεδομένα κειμένου στο έγγραφο σε διανύσματα χρησιμοποιώντας τις ενσωματώσεις που δημιουργούνται από OpenAIEmbeddings. Στη συνέχεια, ευρετηριάζει αυτά τα διανύσματα χρησιμοποιώντας FAISS, για αποτελεσματική ανάκτηση και σύγκριση παρόμοιων διανυσμάτων. Αυτό επιτρέπει την ανάλυση του μεταφορτωμένου εγγράφου.
Τέλος, χρησιμοποιήστε η κατασκευή __name__ == "__main__". για να καλέσετε την κύρια συνάρτηση εάν ένας χρήστης εκτελεί το πρόγραμμα αυτόνομα:
if __name__ == "__main__":
main()
Αυτή η εφαρμογή είναι μια εφαρμογή γραμμής εντολών. Ως επέκταση, μπορείτε χρησιμοποιήστε το Streamlit για να προσθέσετε μια διεπαφή ιστού στην εφαρμογή.
Εκτέλεση ανάλυσης εγγράφων
Για να εκτελέσετε ανάλυση εγγράφων, αποθηκεύστε το έγγραφο που θέλετε να αναλύσετε στον ίδιο φάκελο με το έργο σας και, στη συνέχεια, εκτελέστε το πρόγραμμα. Θα ζητήσει το όνομα του εγγράφου που θέλετε να αναλύσετε. Εισαγάγετε το πλήρες όνομά του και, στη συνέχεια, πληκτρολογήστε ερωτήματα για ανάλυση του προγράμματος.
Το παρακάτω στιγμιότυπο οθόνης δείχνει τα αποτελέσματα της ανάλυσης ενός PDF.
Η ακόλουθη έξοδος δείχνει τα αποτελέσματα της ανάλυσης ενός αρχείου κειμένου που περιέχει τον πηγαίο κώδικα.
Βεβαιωθείτε ότι τα αρχεία που θέλετε να αναλύσετε είναι σε μορφή PDF ή κειμένου. Εάν τα έγγραφά σας είναι σε άλλες μορφές, μπορείτε μετατρέψτε τα σε μορφή PDF χρησιμοποιώντας ηλεκτρονικά εργαλεία.
Κατανόηση της τεχνολογίας πίσω από τα μεγάλα γλωσσικά μοντέλα
Το LangChain απλοποιεί τη δημιουργία εφαρμογών χρησιμοποιώντας μεγάλα μοντέλα γλώσσας. Αυτό σημαίνει επίσης ότι αφαιρεί αυτό που συμβαίνει στα παρασκήνια. Για να κατανοήσετε ακριβώς πώς λειτουργεί η εφαρμογή που δημιουργείτε, θα πρέπει να εξοικειωθείτε με την τεχνολογία πίσω από μεγάλα γλωσσικά μοντέλα.