Τεχνητή νοημοσύνη
LlamaIndex: Αυξήστε τις εφαρμογές σας LLM με προσαρμοσμένα δεδομένα εύκολα

Τα μεγάλα γλωσσικά μοντέλα (LLM) όπως η σειρά GPT της OpenAI έχουν εκπαιδευτεί σε ένα ευρύ φάσμα δημόσια προσβάσιμων δεδομένων, επιδεικνύοντας αξιοσημείωτες δυνατότητες στη δημιουργία κειμένου, τη σύνοψη, την απάντηση ερωτήσεων και τον σχεδιασμό. Παρά την ευελιξία τους, ένα συχνά τιθέμενο ερώτημα περιστρέφεται γύρω από την απρόσκοπτη ενσωμάτωση αυτών των μοντέλων με προσαρμοσμένα, ιδιωτικά ή ιδιόκτητα δεδομένα.
Επιχειρήσεις και ιδιώτες πλημμυρίζουν με μοναδικά και προσαρμοσμένα δεδομένα, που συχνά φιλοξενούνται σε διάφορες εφαρμογές όπως το Notion, το Slack και το Salesforce ή αποθηκεύονται σε προσωπικά αρχεία. Για να αξιοποιηθούν τα LLM για αυτά τα συγκεκριμένα δεδομένα, έχουν προταθεί και πειραματιστεί διάφορες μεθοδολογίες.
Βελτιστοποίηση αντιπροσωπεύει μια τέτοια προσέγγιση, η οποία συνίσταται στην προσαρμογή των βαρών του μοντέλου για την ενσωμάτωση γνώσης από συγκεκριμένα σύνολα δεδομένων. Ωστόσο, αυτή η διαδικασία δεν είναι χωρίς προκλήσεις. Απαιτεί σημαντική προσπάθεια στην προετοιμασία των δεδομένων, σε συνδυασμό με μια δύσκολη διαδικασία βελτιστοποίησης, η οποία απαιτεί ένα ορισμένο επίπεδο εμπειρογνωμοσύνης στη μηχανική μάθηση. Επιπλέον, οι οικονομικές επιπτώσεις μπορεί να είναι σημαντικές, ιδιαίτερα όταν πρόκειται για μεγάλα σύνολα δεδομένων.
Η μάθηση εντός πλαισίου έχει αναδειχθεί ως εναλλακτική λύση, δίνοντας προτεραιότητα στη δημιουργία εισροών και προτροπών για να παρέχει στο LLM το απαραίτητο πλαίσιο για τη δημιουργία ακριβών αποτελεσμάτων. Αυτή η προσέγγιση μετριάζει την ανάγκη για εκτεταμένη επανεκπαίδευση μοντέλων, προσφέροντας ένα πιο αποτελεσματικό και προσιτό μέσο ενσωμάτωσης ιδιωτικών δεδομένων.
Αλλά το μειονέκτημα για αυτό είναι η εξάρτησή του από την ικανότητα και την τεχνογνωσία του χρήστη άμεση μηχανικήΕπιπλέον, η μάθηση εντός πλαισίου μπορεί να μην είναι πάντα τόσο ακριβής ή αξιόπιστη όσο η βελτίωση των συνθηκών, ειδικά όταν πρόκειται για δεδομένα υψηλής εξειδίκευσης ή τεχνικά δεδομένα. Η προεκπαίδευση του μοντέλου σε ένα ευρύ φάσμα κειμένων στο διαδίκτυο δεν εγγυάται την κατανόηση συγκεκριμένης ορολογίας ή πλαισίου, γεγονός που μπορεί να οδηγήσει σε ανακριβή ή άσχετα αποτελέσματα. Αυτό είναι ιδιαίτερα προβληματικό όταν τα ιδιωτικά δεδομένα προέρχονται από έναν εξειδικευμένο τομέα ή κλάδο.
Επιπλέον, ο όγκος του περιβάλλοντος που μπορεί να παρασχεθεί σε ένα μόνο μήνυμα είναι περιορισμένος και η απόδοση του LLM μπορεί να υποβαθμιστεί καθώς αυξάνεται η πολυπλοκότητα της εργασίας. Υπάρχει επίσης η πρόκληση του απορρήτου και της ασφάλειας των δεδομένων, καθώς οι πληροφορίες που παρέχονται στην προτροπή ενδέχεται να είναι ευαίσθητες ή εμπιστευτικές.
Καθώς η κοινότητα διερευνά αυτές τις τεχνικές, εργαλεία όπως CallIndex κερδίζουν πλέον την προσοχή.
Ξεκίνησε από Τζέρι Λιου, πρώην ερευνητής της Uber. Ενώ πειραματιζόταν με το GPT-3 το περασμένο φθινόπωρο, ο Liu παρατήρησε τους περιορισμούς του μοντέλου όσον αφορά τον χειρισμό ιδιωτικών δεδομένων, όπως προσωπικά αρχεία. Αυτή η παρατήρηση οδήγησε στην έναρξη του έργου ανοιχτού κώδικα LlamaIndex.
Η πρωτοβουλία έχει προσελκύσει επενδυτές, εξασφαλίζοντας $ 8.5 εκατομμύρια σε έναν πρόσφατο γύρο χρηματοδότησης εκκίνησης.
Το LlamaIndex διευκολύνει την αύξηση των LLM με προσαρμοσμένα δεδομένα, γεφυρώνοντας το χάσμα μεταξύ προεκπαιδευμένων μοντέλων και προσαρμοσμένων περιπτώσεων χρήσης δεδομένων. Μέσω του LlamaIndex, οι χρήστες μπορούν να αξιοποιήσουν τα δικά τους δεδομένα με LLM, ξεκλειδώνοντας τη δημιουργία γνώσης και τη λογική με εξατομικευμένες πληροφορίες.
Οι χρήστες μπορούν να παρέχουν απρόσκοπτα σε LLM τα δικά τους δεδομένα, ενισχύοντας ένα περιβάλλον όπου η παραγωγή γνώσης και η συλλογιστική είναι βαθιά εξατομικευμένες και διορατικές. Το LlamaIndex αντιμετωπίζει τους περιορισμούς της μάθησης εντός του πλαισίου παρέχοντας μια πιο φιλική προς τον χρήστη και ασφαλή πλατφόρμα για αλληλεπίδραση δεδομένων, διασφαλίζοντας ότι ακόμη και εκείνοι με περιορισμένη τεχνογνωσία μηχανικής μάθησης μπορούν να αξιοποιήσουν πλήρως τις δυνατότητες των LLM με τα προσωπικά τους δεδομένα.
Έννοιες υψηλού επιπέδου και μερικές πληροφορίες
1. Ανάκτηση επαυξημένης γενιάς (RAG):
Το RAG είναι μια διττή διαδικασία που έχει σχεδιαστεί για να συνδυάζει τα LLM με προσαρμοσμένα δεδομένα, ενισχύοντας έτσι την ικανότητα του μοντέλου να παρέχει πιο ακριβείς και ενημερωμένες απαντήσεις. Η διαδικασία περιλαμβάνει:
- Στάδιο ευρετηρίασης: Αυτή είναι η προπαρασκευαστική φάση όπου τίθενται οι βάσεις για τη δημιουργία βάσης γνώσεων.
- Στάδιο ερωτήσεων: Εδώ, η βάση γνώσεων αναζητείται για σχετικό πλαίσιο για να βοηθήσει τους LLM να απαντήσουν σε ερωτήματα.
Ευρετηρίαση ταξιδιού με το LlamaIndex:
- Συνδετήρες δεδομένωνΣκεφτείτε τους συνδέσμους δεδομένων ως το διαβατήριο των δεδομένων σας στο LlamaIndex. Βοηθούν στην εισαγωγή δεδομένων από ποικίλες πηγές και μορφές, ενσωματώνοντάς τα σε μια απλοϊκή αναπαράσταση «εγγράφου». Οι σύνδεσμοι δεδομένων βρίσκονται στο LlamaHub, ένα αποθετήριο ανοιχτού κώδικα γεμάτο με προγράμματα φόρτωσης δεδομένων. Αυτοί οι φορτωτές έχουν σχεδιαστεί για εύκολη ενσωμάτωση, επιτρέποντας μια εμπειρία plug-and-play με οποιαδήποτε εφαρμογή LlamaIndex.
- Έγγραφα / Κόμβοι: Ένα έγγραφο είναι σαν μια γενική βαλίτσα που μπορεί να χωρέσει διαφορετικούς τύπους δεδομένων—είτε πρόκειται για έξοδο PDF, API ή καταχωρήσεις βάσης δεδομένων. Από την άλλη πλευρά, ένας Κόμβος είναι ένα απόσπασμα ή ένα «κομμάτι» από ένα Έγγραφο, εμπλουτισμένο με μεταδεδομένα και σχέσεις με άλλους κόμβους, διασφαλίζοντας μια ισχυρή βάση για ακριβή ανάκτηση δεδομένων αργότερα.
- Ευρετήρια ΔεδομένωνΜετά την εισαγωγή δεδομένων, το LlamaIndex βοηθά στην ευρετηρίαση αυτών των δεδομένων σε ανακτήσιμη μορφή. Στο παρασκήνιο, αναλύει τα ακατέργαστα έγγραφα σε ενδιάμεσες αναπαραστάσεις, υπολογίζει ενσωματώσεις διανυσμάτων και συνάγει μεταδεδομένα. Μεταξύ των ευρετηρίων, το 'VectorStoreIndex' είναι συχνά η πρώτη επιλογή.
Τύποι ευρετηρίων στο LlamaIndex: Κλειδί για τα οργανωμένα δεδομένα
Το LlamaIndex προσφέρει διαφορετικούς τύπους ευρετηρίων, ο καθένας για διαφορετικές ανάγκες και περιπτώσεις χρήσης. Στον πυρήνα αυτών των ευρετηρίων βρίσκονται οι «κόμβοι» όπως συζητήθηκε παραπάνω. Ας προσπαθήσουμε να κατανοήσουμε τους δείκτες LlamaIndex με τους μηχανισμούς και τις εφαρμογές τους.
1. Λίστα ευρετηρίου:
- Μηχανισμός: Ένα List Index ευθυγραμμίζει τους κόμβους διαδοχικά όπως μια λίστα. Μετά την τεμαχισμό των δεδομένων εισόδου σε κόμβους, είναι διατεταγμένα με γραμμικό τρόπο, έτοιμοι να ερωτηθούν είτε διαδοχικά είτε μέσω λέξεων-κλειδιών ή ενσωματώσεων.
- Πλεονέκτημα: Αυτός ο τύπος ευρετηρίου λάμπει όταν απαιτείται διαδοχική αναζήτηση. Το LlamaIndex διασφαλίζει τη χρήση του συνόλου των δεδομένων εισόδου σας, ακόμη και αν υπερβαίνει το όριο διακριτικών του LLM, αναζητώντας έξυπνα κείμενο από κάθε κόμβο και βελτιώνοντας τις απαντήσεις καθώς περιηγείται στη λίστα.
2. Διάνυσμα Ευρετήριο καταστήματος:
- Μηχανισμός: Εδώ, οι κόμβοι μετατρέπονται σε διανυσματικές ενσωματώσεις, αποθηκευμένες είτε τοπικά είτε σε μια εξειδικευμένη διανυσματική βάση δεδομένων όπως Milvus. Όταν ερωτάται, ανακτά τους top_k πιο παρόμοιους κόμβους, διοχετεύοντάς τους στο συνθεσάιζερ απόκρισης.
- Πλεονέκτημα: Εάν η ροή εργασίας σας εξαρτάται από τη σύγκριση κειμένου για σημασιολογική ομοιότητα μέσω διανυσματικής αναζήτησης, αυτό το ευρετήριο μπορεί να χρησιμοποιηθεί.
3. Δέντρο Ευρετήριο:
- Μηχανισμός: Σε έναν Δέντρο Ευρετήριο, τα δεδομένα εισόδου εξελίσσονται σε μια δομή δέντρου, δομημένη από κάτω προς τα πάνω από κόμβους φύλλων (τα αρχικά κομμάτια δεδομένων). Οι γονικοί κόμβοι εμφανίζονται ως περιλήψεις των κόμβων φύλλων, που έχουν δημιουργηθεί με χρήση GPT. Κατά τη διάρκεια ενός ερωτήματος, ο δείκτης δέντρου μπορεί να διασχίσει από τον ριζικό κόμβο σε κόμβους φύλλων ή να δημιουργήσει απαντήσεις απευθείας από επιλεγμένους κόμβους φύλλων.
- Πλεονέκτημα: Με ένα Tree Index, η αναζήτηση μεγάλων τμημάτων κειμένου γίνεται πιο αποτελεσματική και η εξαγωγή πληροφοριών από διάφορα τμήματα κειμένου απλοποιείται.
4. Ευρετήριο λέξεων-κλειδιών:
- Μηχανισμός: Ένας χάρτης λέξεων-κλειδιών σε κόμβους αποτελεί τον πυρήνα ενός Ευρετηρίου λέξεων-κλειδιών. Όταν υποβάλλονται ερωτήματα, οι λέξεις-κλειδιά αφαιρούνται από το ερώτημα και μόνο οι αντιστοιχισμένοι κόμβοι εμφανίζονται στο προσκήνιο.
- Πλεονέκτημα: Όταν έχετε ξεκάθαρα ερωτήματα χρήστη, μπορεί να χρησιμοποιηθεί ευρετήριο λέξεων-κλειδιών. Για παράδειγμα, το κοσκίνισμα των εγγράφων υγειονομικής περίθαλψης γίνεται πιο αποτελεσματικό όταν μηδενίζονται μόνο έγγραφα που σχετίζονται με τον COVID-19.
Εγκατάσταση του LlamaIndex
Η εγκατάσταση του LlamaIndex είναι μια απλή διαδικασία. Μπορείτε να επιλέξετε να το εγκαταστήσετε είτε απευθείας από το Pip είτε από την πηγή. (Βεβαιωθείτε ότι έχετε εγκαταστήσει το python στο σύστημά σας ή μπορείτε να χρησιμοποιήσετε το Google Colab)
1. Εγκατάσταση από την Pip:
- Εκτελέστε την ακόλουθη εντολή:
pip install llama-index
- Σημείωση: Κατά την εγκατάσταση, το LlamaIndex μπορεί να πραγματοποιήσει λήψη και αποθήκευση τοπικών αρχείων για ορισμένα πακέτα όπως το NLTK και το HuggingFace. Για να καθορίσετε έναν κατάλογο για αυτά τα αρχεία, χρησιμοποιήστε τη μεταβλητή περιβάλλοντος "LLAMA_INDEX_CACHE_DIR".
2. Εγκατάσταση από την πηγή:
- Αρχικά, κλωνοποιήστε το αποθετήριο LlamaIndex από το GitHub:
git clone https://github.com/jerryjliu/llama_index.git
- Μόλις κλωνοποιηθεί, μεταβείτε στον κατάλογο του έργου.
- Θα χρειαστείτε το Poetry για τη διαχείριση των εξαρτήσεων πακέτων.
- Τώρα, δημιουργήστε ένα εικονικό περιβάλλον χρησιμοποιώντας το Poetry:
poetry shell
- Τέλος, εγκαταστήστε τις βασικές απαιτήσεις πακέτου με:
poetry install
Ρύθμιση του περιβάλλοντος σας για το LlamaIndex
1. OpenAI Setup:
- Από προεπιλογή, το LlamaIndex χρησιμοποιεί το OpenAI
gpt-3.5-turbo
για δημιουργία κειμένου καιtext-embedding-ada-002
για ανάκτηση και ενσωματώσεις. - Για να χρησιμοποιήσετε αυτήν τη ρύθμιση, θα χρειαστείτε ένα
OPENAI_API_KEY
Αποκτήστε ένα εγγραφόμενοι στον ιστότοπο του OpenAI και δημιουργώντας ένα νέο διακριτικό API. - Έχετε την ευελιξία να προσαρμόσετε το υποκείμενο Large Language Model (LLM) σύμφωνα με τις ανάγκες του έργου σας. Ανάλογα με τον πάροχο LLM που διαθέτετε, μπορεί να χρειαστείτε πρόσθετα κλειδιά και διακριτικά περιβάλλοντος.
2. Ρύθμιση τοπικού περιβάλλοντος:
- Εάν προτιμάτε να μην χρησιμοποιείτε το OpenAI, το LlamaIndex μεταβαίνει αυτόματα σε τοπικά μοντέλα –
LlamaCPP
καιllama2-chat-13B
για δημιουργία κειμένου καιBAAI/bge-small-en
για ανάκτηση και ενσωματώσεις. - Χρησιμοποιώ
LlamaCPP
, ακολουθήστε τον παρεχόμενο οδηγό εγκατάστασης. Βεβαιωθείτε ότι έχετε εγκαταστήσει τοllama-cpp-python
πακέτο, ιδανικά μεταγλωττισμένο για την υποστήριξη της GPU σας. Αυτή η εγκατάσταση θα χρησιμοποιεί περίπου 11.5 GB μνήμης στη CPU και την GPU. - Για τοπικές ενσωματώσεις, εκτελέστε
pip install sentence-transformers
. Αυτή η τοπική εγκατάσταση θα χρησιμοποιεί περίπου 500 MB μνήμης.
Με αυτές τις ρυθμίσεις, μπορείτε να προσαρμόσετε το περιβάλλον σας ώστε είτε να αξιοποιήσετε τη δύναμη του OpenAI είτε να εκτελέσετε μοντέλα τοπικά, ευθυγραμμίζοντας με τις απαιτήσεις και τους πόρους του έργου σας.
Μια απλή περίπτωση χρήσης: Ερώτημα ιστοσελίδων με LlamaIndex και OpenAI
Ακολουθεί ένα απλό σενάριο Python που δείχνει πώς μπορείτε να υποβάλετε ερώτημα σε μια ιστοσελίδα για συγκεκριμένες πληροφορίες:
!pip install llama-index html2text
import os from llama_index import VectorStoreIndex, SimpleWebPageReader # Enter your OpenAI key below: os.environ["OPENAI_API_KEY"] = "" # URL you want to load into your vector store here: url = "http://www.paulgraham.com/fr.html" # Load the URL into documents (multiple documents possible) documents = SimpleWebPageReader(html_to_text=True).load_data([url]) # Create vector store from documents index = VectorStoreIndex.from_documents(documents) # Create query engine so we can ask it questions: query_engine = index.as_query_engine() # Ask as many questions as you want against the loaded data: response = query_engine.query("What are the 3 best advise by Paul to raise money?") print(response)
The three best pieces of advice by Paul to raise money are: 1. Start with a low number when initially raising money. This allows for flexibility and increases the chances of raising more funds in the long run. 2. Aim to be profitable if possible. Having a plan to reach profitability without relying on additional funding makes the startup more attractive to investors. 3. Don't optimize for valuation. While valuation is important, it is not the most crucial factor in fundraising. Focus on getting the necessary funds and finding good investors instead.
Με αυτό το σενάριο, έχετε δημιουργήσει ένα ισχυρό εργαλείο για την εξαγωγή συγκεκριμένων πληροφοριών από μια ιστοσελίδα κάνοντας απλώς μια ερώτηση. Αυτή είναι μόνο μια γεύση του τι μπορεί να επιτευχθεί με το LlamaIndex και το OpenAI κατά την αναζήτηση δεδομένων ιστού.
LlamaIndex vs Langchain: Επιλογή βάσει του στόχου σας
Η επιλογή σας μεταξύ LlamaIndex και Langchain θα εξαρτηθεί από τον στόχο του έργου σας. Αν θέλετε να αναπτύξετε ένα έξυπνο εργαλείο αναζήτησης, το LlamaIndex είναι μια καλή επιλογή, που διαπρέπει ως ένας έξυπνος μηχανισμός αποθήκευσης για την ανάκτηση δεδομένων. Από την άλλη πλευρά, αν θέλετε να δημιουργήσετε ένα σύστημα όπως το ChatGPT με δυνατότητες plugin, το Langchain είναι η επιλογή σας. Δεν διευκολύνει μόνο πολλαπλές παρουσίες του ChatGPT και του LlamaIndex, αλλά επεκτείνει και τη λειτουργικότητα επιτρέποντας την κατασκευή πρακτόρων πολλαπλών εργασιών. Για παράδειγμα, με το Langchain, μπορείτε να δημιουργήσετε πράκτορες ικανούς να εκτελούν κώδικα Python ενώ πραγματοποιούν ταυτόχρονα μια αναζήτηση Google. Με λίγα λόγια, ενώ το LlamaIndex υπερέχει στην επεξεργασία δεδομένων, το Langchain ενορχηστρώνει πολλά εργαλεία για να προσφέρει μια ολιστική λύση.

LlamaIndex Logo Έργο τέχνης που δημιουργήθηκε με χρήση Μεσοταξίδι