Connect with us

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

Τεχνητή νοημοσύνη

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

mm
LlamaIndex

Οι μεγάλες γλώσσες μοντέλα (LLMs) όπως η σειρά GPT της OpenAI έχουν εκπαιδευτεί σε eine ποικιλία δημοσίως προσβάσιμων δεδομένων,展示remarkable ικανότητες στη γεννήτρια κειμένου, σύνοψη, απάντηση σε ερωτήσεις και σχεδιασμό.尽管它们的多功能性, μια συχνά提出的 ερώτηση περιστρέφεται γύρω από την ομαλή ενσωμάτωση αυτών των μοντέλων με προσαρμοσμένα, ιδιωτικά ή ιδιοκτησιακά δεδομένα.

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

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

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

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

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

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

Llama Index

Llama Index

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

Η πρωτοβουλία έχει προσελκύσει επενδυτές, εξασφαλίζοντας $8.5 εκατομμύρια σε một πρόσφατο γύρο σπορ финансирования.

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

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

Υψηλά Επίπεδα Εννοιών & κάποια Εισichten

1. Retrieval Augmented Generation (RAG):

LlamaIndex RAG

LlamaIndex RAG

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

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

LlamaIndex Indexing

  • Στάδιο Ερωτήματος: Εδώ, η βάση γνώσεων αναζητείται για σχετικό контекστό για να βοηθήσει τα LLMs να απαντήσουν σε ερωτήσεις.
LlamaIndex QUERY STAGE

LlamaIndex Query Stage

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

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

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

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

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

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

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

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

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

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

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

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

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:

  • Κατά προεπιλογή, το 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,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

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

# URL που θέλετε να φορτώσετε στο vector store σας εδώ:
url = "http://www.paulgraham.com/fr.html"

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

# Δημιουργήστε vector store από έγγραφα
index = VectorStoreIndex.from_documents(documents)

# Δημιουργήστε μηχανή αναζήτησης για να μπορέσετε να κάνετε ερωτήσεις:
query_engine = index.as_query_engine()

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

Google Colab Llama Index Notebook

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

LlamaIndex vs Langchain: Επιλέγοντας Βασισμένα στις Ανάγκες σας

Η επιλογή σας μεταξύ LlamaIndex και Langchain θα εξαρτηθεί από το αντικείμενο του έργου σας. Αν θέλετε να αναπτύξετε ένα έξυπνο εργαλείο αναζήτησης, το LlamaIndex είναι μια στερεή επιλογή, εξέχοντας ως ένα έξυπνο μηχανισμό αποθήκευσης δεδομένων. Από την άλλη πλευρά, αν θέλετε να δημιουργήσετε ένα σύστημα όπως το ChatGPT με ικανότητες plugin, το Langchain είναι η επιλογή σας. Δεν μόνο διευκολύνει πολλαπλά экземпляρες του ChatGPT και του LlamaIndex, αλλά και επεκτείνει τη λειτουργικότητα επιτρέποντας την κατασκευή multi-εργασιών agent. Για παράδειγμα, με το Langchain, μπορείτε να δημιουργήσετε agents ικανούς να εκτελούν κώδικα Python ενώ διεξάγουν μια αναζήτηση Google ταυτόχρονα. Σε σύντομο, ενώ το LlamaIndex excels στη διαχείριση δεδομένων, το Langchain ορχηστρώνει πολλαπλά εργαλεία για να παραδώσει μια ολιστική λύση.

LlamaIndex Logo Artwork created using Midjourney

LlamaIndex Logo Artwork created using Midjourney

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