Μοντέλα και πλατφόρμες AI

LlamaIndex: Αυξήστε τις Εφαρμογές LLM σας με Προσαρμοσμένα Δεδομένα Εύκολα

mm
Προσθέστε το Unite.AI στις προτιμώμενες πηγές σας στο Google

Οι μεγάλες γλωσσικές μοντέλα (LLMs) όπως η σειρά GPT της OpenAI έχουν εκπαιδευτεί σε μια ποικιλία δημόσια προσιτών δεδομένων, επιδεικνύοντας εξαιρετικές ικανότητες στη γενίκευση κειμένου, σύνοψη, απάντηση σε ερωτήσεις και σχεδιασμό. Παρά την ευελιξία τους, μια συχνά提ηθείσα ερώτηση περιστρέφεται γύρω από την ομαλή ενσωμάτωση αυτών των μοντέλων με προσαρμοσμένα, ιδιωτικά ή ιδιοκτησιακά δεδομένα.

Οι επιχειρήσεις και τα άτομα είναι πλημμυρισμένα με μοναδικά και προσαρμοσμένα δεδομένα, συχνά στεγασμένα σε διάφορες εφαρμογές όπως το Notion, το Slack και το Salesforce (CRM ), ή αποθηκευμένα σε προσωπικά αρχεία. Για να αξιοποιήσουν τα LLMs για αυτά τα δεδομένα, έχουν προταθεί και πειραματιστεί με διάφορες μεθόδους.

Το fine-tuning αντιπροσωπεύει μια τέτοια προσέγγιση, που αποτελείται από την προσαρμογή των βαρών του μοντέλου για την ενσωμάτωση γνώσεων από συγκεκριμένα σύνολα δεδομένων. Ωστόσο, αυτή η διαδικασία δεν είναι χωρίς προκλήσεις. Απαιτεί σημαντική προσπάθεια στη προετοιμασία δεδομένων, σε συνδυασμό με μια δύσκολη διαδικασία βελτιστοποίησης, που απαιτεί ένα συγκεκριμένο επίπεδο εμπειρογνωσίας μηχανικής μάθησης. Επιπλέον, οι οικονομικές επιπτώσεις μπορεί να είναι σημαντικές, ιδιαίτερα όταν αντιμετωπίζουμε μεγάλα σύνολα δεδομένων.

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

Αλλά το μειονέκτημα για αυτό είναι η εξάρτησή του από τις ικανότητες και την εμπειρογνωσία του χρήστη στη μηχανική προτροπής. Επιπλέον, η μάθηση στο контέκστ μπορεί να μην είναι πάντα τόσο ακριβής ή αξιόπιστη όσο το fine-tuning, ιδιαίτερα όταν αντιμετωπίζουμε εξειδικευμένα ή τεχνικά δεδομένα. Η προ-εκπαίδευση του μοντέλου σε ένα ευρύ φάσμα διαδικτυακών κειμένων δεν εγγυάται την κατανόηση συγκεκριμένων ιδιωμάτων ή контέκστ, που μπορεί να οδηγήσει σε ανακριβείς ή άσχετες εξόδους. Αυτό είναι ιδιαίτερα προβληματικό όταν τα ιδιωτικά δεδομένα προέρχονται από ένα στενό τομέα ή βιομηχανία.

Επιπλέον, η ποσότητα контέκστ που μπορεί να παρέχεται σε μια seule προτροπή είναι περιορισμένη, και η απόδοση του LLM μπορεί να επιδείξει μείωση καθώς αυξάνεται η复잡ότητα της εργασίας. Υπάρχει επίσης η πρόκληση της ιδιωτικότητας και της ασφάλειας των δεδομένων, καθώς οι πληροφορίες που παρέχονται στην προτροπή μπορεί να είναι ευαίσθητες ή εμπιστευτικές.

Καθώς η κοινότητα εξερευνά αυτές τις τεχνικές, εργαλεία όπως το LlamaIndex κερδίζουν προσοχή.

Llama Index

Llama Index

Ξεκίνησε από τον Jerry Liu, einem πρώην ερευνητή της Uber. Ενώ πειραματιζόταν με το GPT-3 το προηγούμενο φθινόπωρο, ο Liu παρατήρησε τις περιορισμούς του μοντέλου σχετικά με την αντιμετώπιση ιδιωτικών δεδομένων, όπως προσωπικά αρχεία. Αυτή η παρατήρηση οδήγησε στην έναρξη του ανοιχτού προγράμματος LlamaIndex.

Η πρωτοβουλία έχει προσελκύσει επενδυτές, εξασφαλίζοντας $8.5 εκατομμύρια σε μια πρόσφατη φάση σπόρων.

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

Οι χρήστες μπορούν να παρέχουν στα LLMs τα δικά τους δεδομένα, δημιουργώντας ένα περιβάλλον όπου η γενίκευση γνώσεων και η σύνθεση είναι βαθιά προσωποποιημένες και ενημερωμένες. Το LlamaIndex αντιμετωπίζει τις περιορισμούς της μάθησης στο контέκστ, παρέχοντας μια πιο φιλική και ασφαλή πλατφόρμα για την αλληλεπίδραση δεδομένων, εξασφαλίζοντας ότι ακόμη και όσοι έχουν περιορισμένη εμπειρογνωσία μηχανικής μάθησης μπορούν να αξιοποιήσουν πλήρως το δυναμικό των LLMs με τα ιδιωτικά τους δεδομένα.

Υψηλό Επίπεδο Εννοιών και Εντυπώσεων

1. Ανακτητική Ενίσχυση Γενίκευσης (RAG):

LlamaIndex RAG

LlamaIndex RAG

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

  • Στάδιο Ευρετηρίου: Αυτό είναι το προπαρασκευαστικό στάδιο όπου γίνεται η βάση για τη δημιουργία της βάσης γνώσεων.
LlamaIndex INDEXES

LlamaIndex Indexing

  • Στάδιο Ερωτήματος: Εδώ, η βάση γνώσεων αναζητείται για σχετικές πληροφορίες για να βοηθήσει τα LLMs στην απάντηση ερωτημάτων.
LlamaIndex QUERY STAGE

LlamaIndex Query Stage

Διαδρομή Ευρετηρίου με το LlamaIndex:

  • Συνδετές Δεδομένων: Σκεφτείτε τους συνδετές δεδομένων ως το διαβατήριο των δεδομένων σας για το LlamaIndex. Βοηθούν στην εισαγωγή δεδομένων από διάφορες πηγές και μορφές, ενσωματώνοντας τα σε μια απλή αναπαράσταση “Εγγράφου”. Οι συνδετές δεδομένων μπορούν να βρεθούν στο LlamaHub, ένα ανοιχτό αποθετήριο γεμάτο φορτωτές δεδομένων. Αυτοί οι φορτωτές είναι σχεδιασμένοι για εύκολη ενσωμάτωση, επιτρέποντας μια εμπειρία “plug-and-play” με οποιαδήποτε εφαρμογή LlamaIndex.
Llama hub

LlamaIndex hub (https://llamahub.ai/)

  • Εγγράφοι / Κόμβοι: Ένας Εγγράφος είναι σαν ένα γενικό χαρτοκιβώτιο που μπορεί να περιέχει διάφορους τύπους δεδομένων—είτε είναι ένα PDF, έξοδος API ή καταχωρήσεις βάσης δεδομένων. Από την άλλη πλευρά, ένας Κόμβος είναι ένα τμήμα ή “chunk” από ένα Εγγράφο, εμπλουτισμένο με μεταδεδομένα και σχέσεις με άλλους κόμβους, εξασφαλίζοντας μια ισχυρή βάση για ακριβή ανάκτηση δεδομένων αργότερα.
  • Ευρετήρια Δεδομένων: Μετά την εισαγωγή δεδομένων, το LlamaIndex βοηθά στην ευρετηρίαση αυτών των δεδομένων σε μια ανακτήσιμη μορφή. Πίσω από τις κulis, το LlamaIndex αναλύει τα ακατέργαστα έγγραφα σε ενδιάμεσες αναπαραστάσεις, υπολογίζει ενσωματώσεις διανυσμάτων και καταλήγει σε μεταδεδομένα. Μεταξύ των ευρετηρίων, το “VectorStoreIndex” είναι συχνά η προτιμώμενη επιλογή.

Τύποι Ευρετηρίων στο LlamaIndex: Κλειδί για Οργανωμένα Δεδομένα

Το LlamaIndex προσφέρει διάφορους τύπους ευρετηρίων, каждый για διαφορετικές ανάγκες και περιπτώσεις χρήσης. Στο κέντρο αυτών των ευρετηρίων βρίσκονται οι “κόμβοι” όπως αναφέρθηκαν παραπάνω. Ας προσπαθήσουμε να κατανοήσουμε τα ευρετήρια του LlamaIndex με τη μηχανική τους και τις εφαρμογές τους.

1. Λίστα Ευρετηρίου:

  • Μηχανισμός: Ένα Ευρετήριο Λίστας ευθυγραμμίζει τους κόμβους σε σειρά. Μετά το chunking των εισαγώμενων δεδομένων σε κόμβους, αυτοί ευθυγραμμίζονται σε μια γραμμική μορφή, έτοιμοι να ερωτηθούν είτε σε σειρά είτε μέσω λέξεων-κλειδιών ή ενσωματώσεων.
  • Πλεονέκτημα: Αυτός ο τύπος ευρετηρίου ξεχωρίζει όταν η ανάγκη είναι για σειριακές ερωτήσεις. Το LlamaIndex εξασφαλίζει την αξιοποίηση όλων των εισαγώμενων δεδομένων, ακόμη και αν αυτά υπερβαίνουν το όριο token του LLM,スマρτ ερωτώντας κείμενο από κάθε κόμβο και βελτιώνοντας τις απαντήσεις καθώς προχωράει κάτω από τη λίστα.

2. Ευρετήριο Αποθήκης Διανυσμάτων:

  • Μηχανισμός: Εδώ, οι κόμβοι μετατρέπονται σε ενσωματώσεις διανυσμάτων, αποθηκευμένα είτε τοπικά είτε σε một ειδική βάση δεδομένων διανυσμάτων όπως το Milvus. Όταν ερωτηθεί, ανακτά τα top_k πιο παρόμοιους κόμβους, κατευθύνοντάς τους στον συνθέτη απαντήσεων.
  • Πλεονέκτημα: Αν η ροή εργασιών σας εξαρτάται από σύγκριση κειμένου για σεμαντική ομοιότητα μέσω αναζήτησης διανυσμάτων, αυτό το ευρετήριο μπορεί να χρησιμοποιηθεί.

3. Ευρετήριο Δέντρου:

  • Μηχανισμός: Σε ένα Ευρετήριο Δέντρου, τα εισαγόμενα δεδομένα εξελίσσονται σε μια δομή δέντρου, κατασκευασμένη από κάτω προς τα πάνω από κόμβους φύλλων (τα αρχικά τμήματα δεδομένων). Οι γονείς κόμβοι εμφανίζονται ως περίληψη των κόμβων φύλλων, χρησιμοποιώντας το GPT. Κατά τη διάρκεια μιας ερώτησης, το ευρετήριο δέντρου μπορεί να διασχίσει από τον ριζικό κόμβο στους κόμβους φύλλων ή να κατασκευάσει απαντήσεις直接 από τους επιλεγμένους κόμβους φύλλων.
  • Πλεονέκτημα: Με ένα Ευρετήριο Δέντρου, η ερώτηση μεγάλων τμημάτων κειμένου γίνεται πιο αποτελεσματική, και η εξαγωγή πληροφοριών από διάφορα τμήματα κειμένου απλοποιείται.

4. Ευρετήριο Λέξεων-Κλειδιών:

  • Μηχανισμός: Ένα χάρτη λέξεων-κλειδιών σε κόμβους αποτελεί το κέντρο ενός Ευρετηρίου Λέξεων-Κλειδιών. Όταν ερωτηθεί, οι λέξεις-κλειδιά αφαιρούνται από την ερώτηση, και μόνο οι χαρτογραφημένοι κόμβοι φέρνονται στο προσκήνιο.
  • Πλεονέκτημα: Όταν έχετε σαφείς ερωτήσεις χρήστη, ένα Ευρετήριο Λέξεων-Κλειδιών μπορεί να χρησιμοποιηθεί. Για παράδειγμα, το να ψάχνεις για έγγραφα υγείας γίνεται πιο αποτελεσματικό όταν επικεντρώνεστε μόνο στα έγγραφα που αφορούν το COVID-19.

Εγκατάσταση του LlamaIndex

Η εγκατάσταση του LlamaIndex είναι μια απλή διαδικασία. Μπορείτε να επιλέξετε να το εγκαταστήσετε είτε trực tiếp από το 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:

  • Κατ’ οίκον, το LlamaIndex χρησιμοποιεί το gpt-3.5-turbo της OpenAI για τη γενίκευση κειμένου και το text-embedding-ada-002 για ανάκτηση και ενσωματώσεις.
  • Για να χρησιμοποιήσετε αυτή τη ρύθμιση, θα χρειαστείτε ένα OPENAI_API_KEY. Πάρτε ένα καταχωρώντας σας στην ιστοσελίδα της OpenAI και δημιουργώντας einen νέο API κλειδί.
  • Έχετε την ευελιξία να προσαρμόσετε το υποκείμενο Μεγάλο Γλωσσικό Μοντέλο (LLM) ανάλογα με τις ανάγκες του έργου σας. Ανεξάρτητα από τον πάροχο LLM, μπορεί να χρειαστεί να ορίσετε πρόσθετες περιβαλλοντικές κλειδιά και token.

2. Τοπική Ρύθμιση Περιβάλλοντος:

  • Εάν προτιμάτε να μην χρησιμοποιήσετε την OpenAI, το LlamaIndex μεταβαίνει αυτόματα σε τοπικά μοντέλα – LlamaCPP και llama2-chat-13B για τη γενίκευση κειμένου, και BAAI/bge-small-en για ανάκτηση και ενσωματώσεις.
  • Για να χρησιμοποιήσετε το LlamaCPP, ακολουθήστε τον οδηγό εγκατάστασης. Βεβαιωθείτε να εγκαταστήσετε το πακέτο llama-cpp-python, ιδανικά συναρμολογημένο για υποστήριξη της GPU σας. Αυτή η ρύθμιση θα χρησιμοποιήσει περίπου 11.5GB μνήμης σε CPU και GPU.
  • Για τοπικές ενσωματώσεις, εκτελέστε pip install sentence-transformers. Αυτή η τοπική ρύθμιση θα χρησιμοποιήσει περίπου 500MB μνήμης.

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

Μια Απλή Περίπτωση Χρήσης: Ερώτηση Ιστοσελίδων με το LlamaIndex και την OpenAI

Εδώ είναι ένα απλό σενάριο Python για να δείξουμε πώς μπορείτε να ερωτήσετε μια ιστοσελίδα για συγκεκριμένες εντυπώσεις:

!pip install llama-index html2text


<p>import os
from llama_index import VectorStoreIndex, SimpleWebPageReader</p>

<p># Εισαγάγετε το κλειδί OpenAI σας παρακάτω:
os.environ["OPENAI_API_KEY"] = ""</p>

<p># Το URL που θέλετε να φορτώσετε στην αποθήκη διανυσμάτων σας εδώ:
url = "http://www.paulgraham.com/fr.html"</p>

<p># Φορτώστε το URL σε έγγραφα (πολλαπλά έγγραφα είναι δυνατά)
documents = SimpleWebPageReader(html_to_text=True).load_data([url])</p>

<p># Δημιουργήστε αποθήκη διανυσμάτων από έγγραφα
index = VectorStoreIndex.from_documents(documents)</p>

<p># Δημιουργήστε μηχανή ερωτήματος για να ρωτήσετε:
query_engine = index.as_query_engine()</p>

<p># Ρωτήστε όσες ερωτήσεις θέλετε ενάντια στα φορτωμένα δεδομένα:
response = query_engine.query("Ποια είναι τα 3 καλύτερα советы του Paul για να ανεβάσετε χρήματα;")
print(response)
Τα τρία καλύτερα советы του Paul για να ανεβάσετε χρήματα είναι:
1. Ξεκινήστε με ένα χαμηλό νούμερο όταν αρχικά ανεβάζετε χρήματα. Αυτό σας επιτρέπει ευελιξία και αυξάνει τις πιθανότητες να ανεβάσετε περισσότερα χρήματα στο μακρότερο χρονικό διάστημα.
2. Στόχευστε να είστε κερδοφόροι αν είναι δυνατόν. Έχοντας ένα σχέδιο για να φτάσετε στην κερδοφορία χωρίς να εξαρτόσαστε από πρόσθετη χρηματοδότηση κάνει την επιχείρηση σας πιο ελκυστική στους επενδυτές.
3. Μην βελτιστοποιείτε για αξιολόγηση. Αν και η αξιολόγηση είναι σημαντική, δεν είναι το πιο κρίσιμο στοιχείο στη χρηματοδότηση. Σосредότευστε να πάρτε τα απαραίτητα χρήματα και να βρείτε καλούς επενδυτές αντί για αυτό.
Google Colab Llama Index Notebook

Google Colab Llama Index Notebook

LlamaIndex vs Langchain: Επιλογή Βασισμένη στο Στόχο σας

Η επιλογή σας μεταξύ LlamaIndex και Langchain θα εξαρτηθεί από τον στόχο του έργου σας. Αν θέλετε να αναπτύξετε ένα έξυπνο εργαλείο αναζήτησης, το LlamaIndex είναι μια στερεή επιλογή, εξαιρετικό ως έξυπνο μηχανισμό αποθήκευσης για ανάκτηση δεδομένων. Από την άλλη πλευρά, αν θέλετε να δημιουργήσετε ένα σύστημα όπως το ChatGPT με ικανότητες plugin, το Langchain είναι η επιλογή σας. Δεν μόνο διευκολύνει πολλαπλά στιγμιότυπα του ChatGPT και του LlamaIndex, αλλά cũng επεκτείνει τη λειτουργικότητα επιτρέποντας την κατασκευή multi-εργαλείων. Για παράδειγμα, με το Langchain, μπορείτε να δημιουργήσετε πράκτορες ικανούς να εκτελούν κώδικα Python ενώ διεξάγουν μια αναζήτηση Google ταυτόχρονα. Σε λίγα λόγια, ενώ το LlamaIndex excels στην διαχείριση δεδομένων, το Langchain ορχηστρώνει πολλαπλά εργαλεία για να παρέχει μια ολιστική λύση.

Έχω περάσει τα τελευταία πέντε χρόνια βυθισμένος στον συναρπαστικό κόσμο της Μηχανικής Μάθησης και του Βαθιάς Μάθησης. Η δέσμευσή μου και η εξειδίκευσή μου με οδήγησαν να συμβάλλω σε πάνω από 50 διαφορετικά projects μηχανικής λογισμικού, με ιδιαίτερη έμφαση στο AI/ML. Η συνεχής περιέργειά μου με έχει οδηγήσει επίσης προς την Επεξεργασία Φυσικής Γλώσσας, ένα πεδίο που είμαι πρόθυμος να εξερευνήσω περαιτέρω.