Πώς να χρησιμοποιήσετε το Parent Document Retriever στο LangChain;

Pos Na Chresimopoiesete To Parent Document Retriever Sto Langchain



Το πλαίσιο LangChain δίνει τη δυνατότητα στους προγραμματιστές να δημιουργήσουν μοντέλα μεγάλων γλωσσών που μπορούν να κατανοήσουν και να δημιουργήσουν κείμενο σε φυσική γλώσσα. Τα μοντέλα LangChain εκπαιδεύονται σε έναν τεράστιο όγκο δεδομένων, ώστε το μοντέλο να μπορεί να κατανοήσει τη γλώσσα αποθηκεύοντας τα δεδομένα σε διανυσματικά καταστήματα. Επιτρέπει επίσης στο χρήστη να δημιουργήσει retriever που μπορούν να εξάγουν δεδομένα από τη βάση δεδομένων ή από διανυσματικά καταστήματα με όλα τα δεδομένα που είναι αποθηκευμένα για το μοντέλο.

Αυτή η ανάρτηση θα δείξει τη διαδικασία χρήσης του γονικού εργαλείου ανάκτησης εγγράφων στο LangChain.

Πώς να χρησιμοποιήσετε ένα μητρικό πρόγραμμα ανάκτησης εγγράφων στο LangChain;

Το γονικό εργαλείο ανάκτησης εγγράφων στο LangChain μπορεί να χρησιμοποιηθεί χωρίζοντας τα έγγραφα σε μικρότερα κομμάτια, ώστε να μην χάνουν το νόημά τους τη στιγμή της ενσωμάτωσης. Το μητρικό έγγραφο μπορεί να ειπωθεί ότι είναι ολόκληρο το έγγραφο ή το μεγαλύτερο κομμάτι από το οποίο εξάγονται τα μικρότερα κομμάτια.







Για να μάθετε τη διαδικασία χρήσης του γονικού προγράμματος ανάκτησης εγγράφων στο LangChain, απλώς ανατρέξτε σε αυτόν τον οδηγό:



Βήμα 1: Εγκατάσταση μονάδων



Αρχικά, ξεκινήστε να χρησιμοποιείτε τη γονική ανάκτηση εγγράφων εγκαθιστώντας το πλαίσιο LangChain χρησιμοποιώντας την εντολή pip:





pip install langchain

Εγκαταστήστε τη μονάδα βάσης δεδομένων Chroma για να αποθηκεύσετε τις ενσωματώσεις του εγγράφου και να ανακτήσετε δεδομένα από αυτό:



pip εγκατάσταση chromadb

Για να εγκαταστήσετε το tiktoken που είναι ένα tokenizer που λαμβάνει τα διακριτικά του εγγράφου δημιουργώντας μικρά κομμάτια:

pip εγκατάσταση tiktoken

Αποκτήστε τη λειτουργική μονάδα OpenAI εκτελώντας την ακόλουθη εντολή στο σημειωματάριο Python για να λάβετε τις εξαρτήσεις και τις βιβλιοθήκες του:

pip εγκατάσταση openai

Βήμα 2: Ρύθμιση Περιβάλλοντος & Μεταφόρτωση Δεδομένων

Το επόμενο βήμα είναι να δημιουργήσει το περιβάλλον χρησιμοποιώντας το κλειδί API από το λογαριασμό OpenAI:

εισαγωγή εσείς
εισαγωγή getpass

εσείς . κατά προσέγγιση [ 'OPENAI_API_KEY' ] = getpass . getpass ( 'Κλειδί OpenAI API:' )

Τώρα, ανεβάστε τα έγγραφα από το τοπικό σύστημα μετά την εισαγωγή της βιβλιοθήκης αρχείων και, στη συνέχεια, καλέστε τη μέθοδο upload():

από google. ET AL εισαγωγή αρχεία
ανέβηκε = αρχεία. μεταφόρτωση ( )

Βήμα 3: Εισαγωγή βιβλιοθηκών

Το επόμενο βήμα περιέχει τον κώδικα για την εισαγωγή των απαιτούμενων βιβλιοθηκών για τη χρήση των γονικών ανακτητών εγγράφων χρησιμοποιώντας το πλαίσιο LangChain:

από langchain. ριτρίβερ εισαγωγή ParentDocumentRetriever
από langchain. διανυσματικά καταστήματα εισαγωγή Χρώμα
από langchain. ενσωματώσεις εισαγωγή OpenAIEmbeddings
από langchain. text_splitter εισαγωγή RecursiveCharacterTextSplitter
από langchain. αποθήκευση εισαγωγή ΣτοMemoryStore
από langchain. εγγραφές_φόρτωσης εισαγωγή TextLoader

Φορτώστε το έγγραφο για να δημιουργήσετε το retriever χρησιμοποιώντας τις μεθόδους TextLoader() με τη διαδρομή των αρχείων:

φορτωτές = [
TextLoader ( 'Data.txt' ) ,
TextLoader ( 'state_of_the_union.txt' ) ,
]
έγγραφα = [ ]
Για μεγάλο σε φορτωτές:

Βήμα 4: Ανάκτηση πλήρων εγγράφων

Μόλις φορτωθούν τα έγγραφα/αρχεία στο μοντέλο, απλώς δημιουργήστε τις ενσωματώσεις των εγγράφων και αποθηκεύστε τα στα διανυσματικά καταστήματα:

παιδί_διαιρέτης = RecursiveCharacterTextSplitter ( τεμάχιο_μέγεθος = 400 )

vectorstore = Χρώμα (
όνομα_συλλογής = 'πλήρη_έγγραφα' ,
embedding_function = OpenAIEmbeddings ( )
)

κατάστημα = ΣτοMemoryStore ( )
ανακτών = ParentDocumentRetriever (
vectorstore = vectorstore ,
docstore = κατάστημα ,
παιδί_διαιρέτης = παιδί_διαιρέτης ,
)

Τώρα, καλέστε τη μέθοδο add_documents() χρησιμοποιώντας το retriever για να μεταφέρετε το retriever στα έγγραφα:

ανακτών. add_documents ( έγγραφα , ταυτότητες = Κανένας )

Ο ακόλουθος κώδικας εξάγει τις ενσωματώσεις των εγγράφων που έχουν αποθηκευτεί στη βάση δεδομένων για τα μεταφορτωμένα αρχεία:

λίστα ( κατάστημα. yield_keys ( ) )

Αφού λάβετε τις ενσωματώσεις των εγγράφων, καλέστε τη μέθοδο similarity_search() με το ερώτημα για να λάβετε τα μικρά κομμάτια από το έγγραφο:

sub_docs = vectorstore. ομοιότητα_αναζήτησης ( 'Justice Breyer' )

Καλέστε τη μέθοδο print() για να εμφανίσετε τα κομμάτια που καλούνται στον προηγούμενο κώδικα με βάση το ερώτημα:

Τυπώνω ( sub_docs [ 0 ] . page_content )

Καλέστε την πλήρη συνάρτηση retriever() για να λάβετε όλα τα διακριτικά που είναι αποθηκευμένα στη βάση δεδομένων χρησιμοποιώντας τον ακόλουθο κώδικα:

retrieved_docs = ανακτών. get_relevant_documents ( 'Justice Breyer' )

Η εκτύπωση όλων των εγγράφων θα απαιτούσε τεράστιο χρόνο και ισχύ επεξεργασίας, επομένως απλά λάβετε το μήκος των εγγράφων που έχετε ανακτήσει προηγουμένως:

μόνο ( retrieved_docs [ 0 ] . page_content )

Βήμα 5: Ανάκτηση μεγαλύτερων κομματιών

Αυτό το βήμα δεν θα λάβει ολόκληρο το έγγραφο. Ωστόσο, θα έπαιρνε ένα μεγαλύτερο chipmunk από το έγγραφο και θα ανακτούσε ένα μικρότερο κομμάτι από αυτό:

parent_splitter = RecursiveCharacterTextSplitter ( τεμάχιο_μέγεθος = 2000 )
παιδί_διαιρέτης = RecursiveCharacterTextSplitter ( τεμάχιο_μέγεθος = 400 )
vectorstore = Χρώμα ( όνομα_συλλογής = 'split_parents' , embedding_function = OpenAIEmbeddings ( ) )
κατάστημα = ΣτοMemoryStore ( )

Διαμορφώστε το retriever για να λάβετε το μικρότερο διακριτικό από την τεράστια δεξαμενή δεδομένων που είναι αποθηκευμένα στο ' vectorstore ' μεταβλητή:

ανακτών = ParentDocumentRetriever (
vectorstore = vectorstore ,
docstore = κατάστημα ,
παιδί_διαιρέτης = παιδί_διαιρέτης ,
parent_splitter = parent_splitter ,
)

Καλέστε το retriever για να λάβετε τα μεγαλύτερα κομμάτια από τα διανυσματικά καταστήματα χρησιμοποιώντας το έγγραφα μεταβλητή στο όρισμα της συνάρτησης:

ανακτών. add_documents ( έγγραφα )

Λάβετε το μήκος αυτών των εγγράφων από το έγγραφα μεταβλητή μέσω της παρακάτω εντολής:

μόνο ( λίστα ( κατάστημα. yield_keys ( ) ) )

Απλώς λάβετε ένα μικρότερο κομμάτι από ένα μεγαλύτερο, καθώς το προηγούμενο στιγμιότυπο οθόνης δείχνει ότι υπάρχουν 23 έγγραφα αποθηκευμένα στον χώρο αποθήκευσης διανυσμάτων. Το ερώτημα χρησιμοποιείται για τη λήψη των σχετικών δεδομένων χρησιμοποιώντας το similarity_search() μέθοδος ανάκτησης δεδομένων από το χώρο αποθήκευσης διανυσμάτων:

sub_docs = vectorstore. ομοιότητα_αναζήτησης ( 'Justice Breyer' )

Εκτυπώστε τα μικρότερα κομμάτια χρησιμοποιώντας το ερώτημα που αναφέρεται στον προηγούμενο κώδικα για να τα εμφανίσετε στην οθόνη:

Τυπώνω ( sub_docs [ 0 ] . page_content )

Τώρα, χρησιμοποιήστε το retriever στο πλήρες σύνολο δεδομένων που είναι αποθηκευμένο στη βάση δεδομένων χρησιμοποιώντας το ερώτημα ως όρισμα της συνάρτησης:

retrieved_docs = ανακτών. get_relevant_documents ( 'Justice Breyer' )

Λάβετε το μήκος των πλήρων τμημάτων που δημιουργήθηκαν και αποθηκεύτηκαν στη βάση δεδομένων:

μόνο ( retrieved_docs [ 0 ] . page_content )

Δεν μπορούμε να εμφανίσουμε όλα τα κομμάτια, αλλά το πρώτο κομμάτι με τον αριθμό ευρετηρίου 0 εμφανίζεται χρησιμοποιώντας τον ακόλουθο κώδικα:

Τυπώνω ( retrieved_docs [ 0 ] . page_content

Αυτό αφορά τη διαδικασία χρήσης του γονικού προγράμματος ανάκτησης εγγράφων στο LangChain.

συμπέρασμα

Για να χρησιμοποιήσετε τη μητρική ανάκτηση εγγράφων στο LangChain, απλώς εγκαταστήστε τις λειτουργικές μονάδες και ρυθμίστε το περιβάλλον OpenAI χρησιμοποιώντας το κλειδί API του. Μετά από αυτό, εισαγάγετε τις απαιτούμενες βιβλιοθήκες από το LangChain για χρήση της γονικής ανάκτησης εγγράφων και, στη συνέχεια, φορτώστε τα έγγραφα για το μοντέλο. Ο χρήστης μπορεί να χρησιμοποιήσει γονικά έγγραφα ως ολόκληρο το έγγραφο ή το μεγάλο κομμάτι και να πάρει ένα μικρότερο κομμάτι χρησιμοποιώντας το ερώτημα. Αυτή η ανάρτηση έχει επεξεργαστεί τη διαδικασία χρήσης της γονικής ανάκτησης εγγράφων στο LangChain.