Πώς να συνδυάσετε Agents και Vector Stores στο LangChain;

Pos Na Syndyasete Agents Kai Vector Stores Sto Langchain



Το LangChain είναι το πλαίσιο που σχεδιάζει γλωσσικά μοντέλα. Τεράστιες ποσότητες δεδομένων εκπαιδεύουν αυτά τα μοντέλα στη φυσική γλώσσα. Υπάρχουν πολλές βάσεις δεδομένων ή διανυσματικά καταστήματα όπως το Chroma κ.λπ. για τη διαχείριση αυτών των συνόλων δεδομένων. Συνδυάζοντας τα καταστήματα agent και vector, το μοντέλο αποδίδει καλύτερα με δεδομένα από διαφορετικούς τομείς. Το LangChain επιτρέπει τη χρήση πολλών διανυσματικών καταστημάτων για την εκπαίδευση του μοντέλου γλώσσας ή του chatbot.

Γρήγορο περίγραμμα

Αυτή η ανάρτηση θα δείξει:







Πώς να χρησιμοποιήσετε έναν πράκτορα για να επιστρέψετε μια δομημένη έξοδο στο LangChain



Μέθοδος 1: Συνδυασμός παράγοντα με καταστήματα Vector



Μέθοδος 2: Χρήση παράγοντα ως δρομολογητή





Μέθοδος 3: Χρήση Agent With Multi-Hop Vector Store

συμπέρασμα



Πώς να χρησιμοποιήσετε έναν πράκτορα για να επιστρέψετε μια δομημένη έξοδο στο LangChain;

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

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

Βήμα 1: Εγκατάσταση Frameworks

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

pip install langchain

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

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

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

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

Το OpenAI είναι η ενότητα που μπορεί να χρησιμοποιηθεί για τη δημιουργία του μοντέλου μεγάλης γλώσσας στο πλαίσιο LangChain:

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

Βήμα 2: OpenAI Environment

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

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

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

Τώρα, μεταφορτώστε τα δεδομένα από το τοπικό σύστημα στο συνεργείο της Google για να τα χρησιμοποιήσετε στο μέλλον:

από google. ET AL εισαγωγή αρχεία

ανέβηκε = αρχεία. μεταφόρτωση ( )

Βήμα 3: Δημιουργία καταστήματος Vector

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

από langchain. ενσωματώσεις . openai εισαγωγή OpenAIEmbeddings

Το #Vector αποθηκεύει την εξάρτηση για να αποκτήσει την απαιτούμενη βάση δεδομένων ή διάνυσμα

από langchain. διανυσματικά καταστήματα εισαγωγή Χρώμα

Το #Text splitter χρησιμοποιείται για τη μετατροπή του μεγάλου κειμένου σε μικρότερα κομμάτια

από langchain. text_splitter εισαγωγή CharacterTextSplitter

από langchain. llms εισαγωγή OpenAI

από langchain. εγγραφές_φόρτωσης εισαγωγή WebBaseLoader

από langchain. αλυσίδες εισαγωγή RetrievalQA


llm = OpenAI ( θερμοκρασία = 0 )

Βήμα 4: Ορισμός της διαδρομής

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

από pathlib εισαγωγή Μονοπάτι

σχετικά_εξαρτήματα = [ ]
Για Π σε Μονοπάτι ( '.' ) . απόλυτος ( ) . εξαρτήματα :
σχετικά_εξαρτήματα. προσαρτώ ( Π )
αν σχετικά_εξαρτήματα [ - 3 : ] == [ 'langchain' , 'έγγραφα' , 'ενότητες' ] :
Διακοπή
#Conditional Statement εντός του βρόχου για να ορίσετε τη διαδρομή για κάθε βάση δεδομένων
doc_path = str ( Μονοπάτι ( *σχετικά_εξαρτήματα ) / 'state_of_the_union.txt' )

Βήμα 5: Φόρτωση και διαίρεση των δεδομένων

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

από langchain. εγγραφές_φόρτωσης εισαγωγή TextLoader

#Φόρτωση δεδομένων από τη διαδρομή του και αποθήκευση των μικρότερων τμημάτων του στη βάση δεδομένων

φορτωτής = TextLoader ( doc_path )

έγγραφα = φορτωτής. φορτώνω ( )

text_splitter = CharacterTextSplitter ( τεμάχιο_μέγεθος = 2000 , chunk_overlap = 0 )

κείμενα = text_splitter. split_documents ( έγγραφα )

#Μετατρέψτε το κείμενο σε αριθμούς και αποθηκεύστε τις ενσωματώσεις στη βάση δεδομένων

ενσωματώσεις = OpenAIEmbeddings ( )

docsearch = Χρώμα. from_documents ( κείμενα , ενσωματώσεις , όνομα_συλλογής = 'κράτος της ένωσης' )

Βήμα 6: Δημιουργία Retriever

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

κράτος_της_ένωσης = RetrievalQA. from_chain_type (

llm = llm , chain_type = 'υλικό' , ανακτών = docsearch. as_retriever ( )

)

Φορτώστε ένα άλλο σύνολο δεδομένων για να ενσωματώσετε τον παράγοντα με πολλαπλά σύνολα δεδομένων ή διανυσματικά καταστήματα:

φορτωτής = WebBaseLoader ( 'https://beta.ruff.rs/docs/faq/' )

Αποθηκεύστε το σύνολο δεδομένων ruff στο chromadb αφού δημιουργήσετε τα μικρότερα κομμάτια των δεδομένων με τα διανύσματα ενσωμάτωσης επίσης:

έγγραφα = φορτωτής. φορτώνω ( )
ruff_texts = text_splitter. split_documents ( έγγραφα )
ruff_db = Χρώμα. from_documents ( ruff_texts , ενσωματώσεις , όνομα_συλλογής = 'περιλαίμιο' )
περιλαίμιο = RetrievalQA. from_chain_type (
llm = llm , chain_type = 'υλικό' , ανακτών = ruff_db. as_retriever ( )
)

Μέθοδος 1: Συνδυασμός παράγοντα με καταστήματα Vector

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

Βήμα 1: Διαμόρφωση εργαλείων

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

από langchain. πράκτορες εισαγωγή αρχικοποίηση_πράκτορα
από langchain. πράκτορες εισαγωγή Τύπος πράκτορα
#Λήψη εργαλείων από το LangChain για τη δημιουργία του πράκτορα
από langchain. εργαλεία εισαγωγή BaseTool
από langchain. llms εισαγωγή OpenAI
#Λήψη LLMMathChain από αλυσίδες για τη δημιουργία του μοντέλου γλώσσας
από langchain. αλυσίδες εισαγωγή LLMMathChain
από langchain. υπηρεσίες κοινής ωφέλειας εισαγωγή SerpAPIWrapper
από langchain. πράκτορες εισαγωγή Εργαλείο

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

εργαλεία = [
Εργαλείο (
όνομα = 'Σύστημα διασφάλισης ποιότητας κατάστασης της Ένωσης' ,
func = κράτος_της_ένωσης. τρέξιμο ,
περιγραφή = 'Παρέχει απαντήσεις στις ερωτήσεις που σχετίζονται με το φορτωμένο σύνολο δεδομένων με εισαγωγή ως πλήρως διαμορφωμένη ερώτηση' ,
) ,
Εργαλείο (
όνομα = 'Ruff QA System' ,
func = περιλαίμιο. τρέξιμο ,
περιγραφή = 'Παρέχει απαντήσεις στις ερωτήσεις σχετικά με το ruff (ένα πύθωνα) με εισαγωγή ως πλήρως σχηματισμένη ερώτηση' ,
) ,
]

Βήμα 2: Αρχικοποίηση παράγοντα

Μόλις διαμορφωθούν τα εργαλεία, απλώς ορίστε τον πράκτορα στο όρισμα της μεθόδου initializa_agent(). Ο πράκτορας που χρησιμοποιούμε εδώ είναι ο ZERO_SHOT_REACT_DESCRIPTION μαζί με τα εργαλεία, το llm (μοντέλο γλώσσας) και το αναλυτικό:

μέσο = αρχικοποίηση_πράκτορα (

εργαλεία , llm , μέσο = Τύπος πράκτορα. ZERO_SHOT_REACT_DESCRIPTION , πολύλογος = Αληθής

)

Βήμα 3: Δοκιμάστε τον Πράκτορα

Απλώς εκτελέστε τον πράκτορα χρησιμοποιώντας τη μέθοδο run() που περιέχει την ερώτηση στο όρισμά του:

μέσο. τρέξιμο (

'Τι είπε ο Πρόεδρος Τζο Μπάιντεν για τον kanji brown στην ομιλία'

)

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

Μέθοδος 2: Χρήση παράγοντα ως δρομολογητή

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

Βήμα 1: Διαμόρφωση εργαλείων

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

εργαλεία = [
#διαμόρφωση των εργαλείων που απαιτούνται για τη δημιουργία του πράκτορα για τη λήψη δεδομένων από τα δεδομένα
Εργαλείο (
όνομα = 'Σύστημα διασφάλισης ποιότητας κατάστασης της Ένωσης' ,
func = κράτος_της_ένωσης. τρέξιμο ,
περιγραφή = 'Παρέχει απαντήσεις στις ερωτήσεις που σχετίζονται με το φορτωμένο σύνολο δεδομένων με εισαγωγή ως πλήρη ερώτηση' ,
επιστροφή_απευθείας = Αληθής ,
) ,
Εργαλείο (
όνομα = 'Ruff QA System' ,
func = περιλαίμιο. τρέξιμο ,
περιγραφή = 'Παρέχει απαντήσεις στις ερωτήσεις σχετικά με το ruff (ένα πύθωνα) με την εισαγωγή ως πλήρη ερώτηση' ,
επιστροφή_απευθείας = Αληθής ,
) ,
]

Βήμα 2: Εκκίνηση και δοκιμή του παράγοντα

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

μέσο = αρχικοποίηση_πράκτορα (

εργαλεία , llm , μέσο = Τύπος πράκτορα. ZERO_SHOT_REACT_DESCRIPTION , πολύλογος = Αληθής

)

Δοκιμάστε τον πράκτορα δίνοντας την ερώτηση εισόδου στη μέθοδο agent.run() εκτελώντας την ακόλουθη εντολή:

μέσο. τρέξιμο (

'Τι είπε ο Πρόεδρος Τζο Μπάιντεν για τον kanji brown στην ομιλία'

)

Παραγωγή

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

Μέθοδος 3: Χρήση Agent With Multi-Hop Vector Store

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

Βήμα 1: Διαμόρφωση εργαλείων

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

εργαλεία = [
Εργαλείο (
όνομα = 'Σύστημα διασφάλισης ποιότητας κατάστασης της Ένωσης' ,
func = κράτος_της_ένωσης. τρέξιμο ,
περιγραφή = 'Παρέχει απαντήσεις στις ερωτήσεις που σχετίζονται με το φορτωμένο σύνολο δεδομένων με εισαγωγή ως πλήρως σχηματισμένη ερώτηση, χωρίς αναφορά σε αντωνυμίες από την προηγούμενη συνομιλία' ,
) ,
Εργαλείο (
όνομα = 'Ruff QA System' ,
func = περιλαίμιο. τρέξιμο ,
περιγραφή = 'Παρέχει απαντήσεις στις ερωτήσεις που σχετίζονται με το φορτωμένο σύνολο δεδομένων με εισαγωγή ως πλήρως σχηματισμένη ερώτηση, χωρίς αναφορά σε αντωνυμίες από την προηγούμενη συνομιλία' ,
) ,
]

Βήμα 2: Αρχικοποιήστε και δοκιμάστε τον παράγοντα

Μετά από αυτό, δημιουργήστε τη μεταβλητή agent χρησιμοποιώντας τη μέθοδο initialize_agent() με το όνομα του πράκτορα:

μέσο = αρχικοποίηση_πράκτορα (

εργαλεία , llm , μέσο = Τύπος πράκτορα. ZERO_SHOT_REACT_DESCRIPTION , πολύλογος = Αληθής

)

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

μέσο. τρέξιμο (

'Τι εργαλείο χρησιμοποιεί το ruff για να περάσει πάνω από σημειωματάρια Python και αν κάποιος από τους ομιλητές ανέφερε το εργαλείο στη διεύθυνσή του'

)

Παραγωγή

Το παρακάτω στιγμιότυπο οθόνης υποδηλώνει ότι ο πράκτορας πρέπει να επεξεργαστεί την ερώτηση για να κατανοήσει την πολυπλοκότητά της. Έχει επιστρέψει την απάντηση που εξήχθη από το σύστημα QA από τα πολλαπλά καταστήματα δεδομένων που ανεβάσαμε νωρίτερα στη διαδικασία:

Αυτό αφορά το πώς να συνδυάσετε πράκτορες και διανυσματικά καταστήματα στο LangChain.

συμπέρασμα

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