Κάντε κλικ στην εικόνα παραπάνω για να δείτε το βίντεο αυτού του μαθήματος
Τα LLMs δεν περιορίζονται μόνο σε chatbots και δημιουργία κειμένου. Είναι επίσης δυνατό να δημιουργήσετε εφαρμογές αναζήτησης χρησιμοποιώντας Embeddings. Τα Embeddings είναι αριθμητικές αναπαραστάσεις δεδομένων, γνωστά και ως διανύσματα, και μπορούν να χρησιμοποιηθούν για σημασιολογική αναζήτηση δεδομένων.
Σε αυτό το μάθημα, θα δημιουργήσετε μια εφαρμογή αναζήτησης για την εκπαιδευτική μας startup. Η startup μας είναι ένας μη κερδοσκοπικός οργανισμός που παρέχει δωρεάν εκπαίδευση σε μαθητές σε αναπτυσσόμενες χώρες. Η startup μας διαθέτει μεγάλο αριθμό βίντεο στο YouTube που οι μαθητές μπορούν να χρησιμοποιήσουν για να μάθουν για την Τεχνητή Νοημοσύνη. Η startup μας θέλει να δημιουργήσει μια εφαρμογή αναζήτησης που επιτρέπει στους μαθητές να αναζητούν ένα βίντεο στο YouTube πληκτρολογώντας μια ερώτηση.
Για παράδειγμα, ένας μαθητής μπορεί να πληκτρολογήσει "Τι είναι τα Jupyter Notebooks;" ή "Τι είναι το Azure ML" και η εφαρμογή αναζήτησης θα επιστρέψει μια λίστα με βίντεο στο YouTube που είναι σχετικά με την ερώτηση, και ακόμα καλύτερα, η εφαρμογή αναζήτησης θα επιστρέψει έναν σύνδεσμο στο σημείο του βίντεο όπου βρίσκεται η απάντηση στην ερώτηση.
Σε αυτό το μάθημα, θα καλύψουμε:
- Σημασιολογική vs Αναζήτηση με λέξεις-κλειδιά.
- Τι είναι τα Text Embeddings.
- Δημιουργία ενός Text Embeddings Index.
- Αναζήτηση σε έναν Text Embeddings Index.
Μετά την ολοκλήρωση αυτού του μαθήματος, θα μπορείτε:
- Να διακρίνετε τη διαφορά μεταξύ σημασιολογικής και αναζήτησης με λέξεις-κλειδιά.
- Να εξηγήσετε τι είναι τα Text Embeddings.
- Να δημιουργήσετε μια εφαρμογή χρησιμοποιώντας Embeddings για αναζήτηση δεδομένων.
Η δημιουργία μιας εφαρμογής αναζήτησης θα σας βοηθήσει να κατανοήσετε πώς να χρησιμοποιείτε Embeddings για αναζήτηση δεδομένων. Θα μάθετε επίσης πώς να δημιουργήσετε μια εφαρμογή αναζήτησης που μπορεί να χρησιμοποιηθεί από μαθητές για να βρίσκουν πληροφορίες γρήγορα.
Το μάθημα περιλαμβάνει έναν Embedding Index από τις μεταγραφές του YouTube για το κανάλι AI Show. Το AI Show είναι ένα κανάλι στο YouTube που σας διδάσκει για την Τεχνητή Νοημοσύνη και τη μηχανική μάθηση. Ο Embedding Index περιέχει τα Embeddings για κάθε μεταγραφή του YouTube μέχρι τον Οκτώβριο του 2023. Θα χρησιμοποιήσετε τον Embedding Index για να δημιουργήσετε μια εφαρμογή αναζήτησης για τη startup μας. Η εφαρμογή αναζήτησης επιστρέφει έναν σύνδεσμο στο σημείο του βίντεο όπου βρίσκεται η απάντηση στην ερώτηση. Αυτός είναι ένας εξαιρετικός τρόπος για τους μαθητές να βρίσκουν τις πληροφορίες που χρειάζονται γρήγορα.
Το παρακάτω είναι ένα παράδειγμα σημασιολογικής ερώτησης για την ερώτηση "μπορείτε να χρησιμοποιήσετε το rstudio με το azure ml;". Δείτε το url του YouTube, θα δείτε ότι το url περιέχει ένα timestamp που σας οδηγεί στο σημείο του βίντεο όπου βρίσκεται η απάντηση στην ερώτηση.
Ίσως αναρωτιέστε, τι είναι η σημασιολογική αναζήτηση; Η σημασιολογική αναζήτηση είναι μια τεχνική αναζήτησης που χρησιμοποιεί τη σημασία ή το νόημα των λέξεων σε μια ερώτηση για να επιστρέψει σχετικά αποτελέσματα.
Ακολουθεί ένα παράδειγμα σημασιολογικής αναζήτησης. Ας πούμε ότι θέλετε να αγοράσετε ένα αυτοκίνητο, μπορεί να αναζητήσετε "το αυτοκίνητο των ονείρων μου", η σημασιολογική αναζήτηση κατανοεί ότι δεν "ονειρεύεστε" ένα αυτοκίνητο, αλλά μάλλον ψάχνετε να αγοράσετε το "ιδανικό" σας αυτοκίνητο. Η σημασιολογική αναζήτηση κατανοεί την πρόθεσή σας και επιστρέφει σχετικά αποτελέσματα. Η εναλλακτική είναι η "αναζήτηση με λέξεις-κλειδιά", η οποία θα αναζητούσε κυριολεκτικά όνειρα για αυτοκίνητα και συχνά επιστρέφει άσχετα αποτελέσματα.
Τα Text embeddings είναι μια τεχνική αναπαράστασης κειμένου που χρησιμοποιείται στην επεξεργασία φυσικής γλώσσας. Τα Text embeddings είναι σημασιολογικές αριθμητικές αναπαραστάσεις κειμένου. Τα Embeddings χρησιμοποιούνται για να αναπαραστήσουν δεδομένα με τρόπο που είναι εύκολο για μια μηχανή να κατανοήσει. Υπάρχουν πολλά μοντέλα για τη δημιουργία text embeddings, σε αυτό το μάθημα θα επικεντρωθούμε στη δημιουργία embeddings χρησιμοποιώντας το OpenAI Embedding Model.
Ακολουθεί ένα παράδειγμα, φανταστείτε ότι το παρακάτω κείμενο βρίσκεται σε μια μεταγραφή από ένα επεισόδιο του καναλιού AI Show στο YouTube:
Today we are going to learn about Azure Machine Learning.
Θα περάσουμε το κείμενο στο OpenAI Embedding API και θα επιστρέψει το ακόλουθο embedding που αποτελείται από 1536 αριθμούς, γνωστό και ως διάνυσμα. Κάθε αριθμός στο διάνυσμα αντιπροσωπεύει μια διαφορετική πτυχή του κειμένου. Για συντομία, εδώ είναι οι πρώτοι 10 αριθμοί στο διάνυσμα.
[-0.006655829958617687, 0.0026128944009542465, 0.008792596869170666, -0.02446001023054123, -0.008540431968867779, 0.022071078419685364, -0.010703742504119873, 0.003311325330287218, -0.011632772162556648, -0.02187200076878071, ...]Ο Embedding Index για αυτό το μάθημα δημιουργήθηκε με μια σειρά από Python scripts. Θα βρείτε τα scripts μαζί με οδηγίες στο README στον φάκελο 'scripts' αυτού του μαθήματος. Δεν χρειάζεται να εκτελέσετε αυτά τα scripts για να ολοκληρώσετε αυτό το μάθημα, καθώς ο Embedding Index παρέχεται για εσάς.
Τα scripts εκτελούν τις ακόλουθες λειτουργίες:
- Η μεταγραφή για κάθε βίντεο στο YouTube στη λίστα αναπαραγωγής AI Show κατεβαίνει.
- Χρησιμοποιώντας OpenAI Functions, γίνεται προσπάθεια να εξαχθεί το όνομα του ομιλητή από τα πρώτα 3 λεπτά της μεταγραφής του YouTube. Το όνομα του ομιλητή για κάθε βίντεο αποθηκεύεται στον Embedding Index με όνομα
embedding_index_3m.json. - Το κείμενο της μεταγραφής στη συνέχεια χωρίζεται σε τμήματα κειμένου 3 λεπτών. Το τμήμα περιλαμβάνει περίπου 20 λέξεις που επικαλύπτονται από το επόμενο τμήμα για να διασφαλιστεί ότι το Embedding για το τμήμα δεν κόβεται και για να παρέχει καλύτερο πλαίσιο αναζήτησης.
- Κάθε τμήμα κειμένου στη συνέχεια περνάει στο OpenAI Chat API για να συνοψίσει το κείμενο σε 60 λέξεις. Η σύνοψη αποθηκεύεται επίσης στον Embedding Index
embedding_index_3m.json. - Τέλος, το κείμενο του τμήματος περνάει στο OpenAI Embedding API. Το Embedding API επιστρέφει ένα διάνυσμα 1536 αριθμών που αντιπροσωπεύει τη σημασιολογική σημασία του τμήματος. Το τμήμα μαζί με το OpenAI Embedding διάνυσμα αποθηκεύεται στον Embedding Index
embedding_index_3m.json.
Για απλότητα μαθήματος, ο Embedding Index αποθηκεύεται σε ένα αρχείο JSON με όνομα embedding_index_3m.json και φορτώνεται σε ένα Pandas DataFrame. Ωστόσο, σε παραγωγή, ο Embedding Index θα αποθηκευόταν σε μια βάση δεδομένων διανυσμάτων όπως Azure Cognitive Search, Redis, Pinecone, Weaviate, για να αναφέρουμε μερικά.
Έχουμε μάθει για τα text embeddings, το επόμενο βήμα είναι να μάθουμε πώς να χρησιμοποιούμε τα text embeddings για αναζήτηση δεδομένων και συγκεκριμένα να βρούμε τα πιο παρόμοια embeddings με μια δεδομένη ερώτηση χρησιμοποιώντας την ομοιότητα συνημιτόνου.
Η ομοιότητα συνημιτόνου είναι ένα μέτρο ομοιότητας μεταξύ δύο διανυσμάτων, θα το ακούσετε επίσης ως αναζήτηση πλησιέστερου γείτονα. Για να εκτελέσετε μια αναζήτηση ομοιότητας συνημιτόνου, πρέπει να διανυσματοποιήσετε το κείμενο ερώτησης χρησιμοποιώντας το OpenAI Embedding API. Στη συνέχεια, υπολογίστε την ομοιότητα συνημιτόνου μεταξύ του διανύσματος ερώτησης και κάθε διανύσματος στον Embedding Index. Θυμηθείτε, ο Embedding Index έχει ένα διάνυσμα για κάθε τμήμα κειμένου μεταγραφής του YouTube. Τέλος, ταξινομήστε τα αποτελέσματα κατά ομοιότητα συνημιτόνου και τα τμήματα κειμένου με την υψηλότερη ομοιότητα συνημιτόνου είναι τα πιο παρόμοια με την ερώτηση.
Από μαθηματική άποψη, η ομοιότητα συνημιτόνου μετράει το συνημίτονο της γωνίας μεταξύ δύο διανυσμάτων που προβάλλονται σε έναν πολυδιάστατο χώρο. Αυτή η μέτρηση είναι χρήσιμη, γιατί αν δύο έγγραφα είναι μακριά με βάση την Ευκλείδεια απόσταση λόγω μεγέθους, μπορεί να έχουν ακόμα μικρότερη γωνία μεταξύ τους και επομένως υψηλότερη ομοιότητα συνημιτόνου. Για περισσότερες πληροφορίες σχετικά με τις εξισώσεις ομοιότητας συνημιτόνου, δείτε Cosine similarity.
Στη συνέχεια, θα μάθουμε πώς να δημιουργήσουμε μια εφαρμογή αναζήτησης χρησιμοποιώντας Embeddings. Η εφαρμογή αναζήτησης θα επιτρέπει στους μαθητές να αναζητούν ένα βίντεο πληκτρολογώντας μια ερώτηση. Η εφαρμογή αναζήτησης θα επιστρέφει μια λίστα με βίντεο που είναι σχετικά με την ερώτηση. Η εφαρμογή αναζήτησης θα επιστρέφει επίσης έναν σύνδεσμο στο σημείο του βίντεο όπου βρίσκεται η απάντηση στην ερώτηση.
Αυτή η λύση δημιουργήθηκε και δοκιμάστηκε σε Windows 11, macOS και Ubuntu 22.04 χρησιμοποιώντας Python 3.10 ή νεότερη έκδοση. Μπορείτε να κατεβάσετε την Python από python.org.
Παρουσιάσαμε τη startup μας στην αρχή αυτού του μαθήματος. Τώρα είναι η ώρα να δώσουμε τη δυνατότητα στους μαθητές να δημιουργήσουν μια εφαρμογή αναζήτησης για τις αξιολογήσεις τους.
Σε αυτή την εργασία, θα δημιουργήσετε τις υπηρεσίες Azure OpenAI που θα χρησιμοποιηθούν για τη δημιουργία της εφαρμογής αναζήτησης. Θα δημιουργήσετε τις ακόλουθες υπηρεσίες Azure OpenAI. Θα χρειαστείτε μια συνδρομή Azure για να ολοκληρώσετε αυτή την εργασία.
- Συνδεθείτε στο Azure portal.
- Επιλέξτε το εικονίδιο Cloud Shell στην επάνω δεξιά γωνία του Azure portal.
- Επιλέξτε Bash για τον τύπο περιβάλλοντος.
Για αυτές τις οδηγίες, χρησιμοποιούμε την ομάδα πόρων με όνομα "semantic-video-search" στην Ανατολική ΗΠΑ. Μπορείτε να αλλάξετε το όνομα της ομάδας πόρων, αλλά όταν αλλάζετε την τοποθεσία για τους πόρους, ελέγξτε τον πίνακα διαθεσιμότητας μοντέλων.
az group create --name semantic-video-search --location eastusΑπό το Azure Cloud Shell, εκτελέστε την ακόλουθη εντολή για να δημιουργήσετε έναν πόρο υπηρεσίας Azure OpenAI.
az cognitiveservices account create --name semantic-video-openai --resource-group semantic-video-search \
--location eastus --kind OpenAI --sku s0Από το Azure Cloud Shell, εκτελέστε τις ακόλουθες εντολές για να λάβετε το endpoint και τα κλειδιά για τον πόρο υπηρεσίας Azure OpenAI.
az cognitiveservices account show --name semantic-video-openai \
--resource-group semantic-video-search | jq -r .properties.endpoint
az cognitiveservices account keys list --name semantic-video-openai \
--resource-group semantic-video-search | jq -r .key1Από το Azure Cloud Shell, εκτελέστε την ακόλουθη εντολή για να αναπτύξετε το μοντέλο OpenAI Embedding.
az cognitiveservices account deployment create \
--name semantic-video-openai \
--resource-group semantic-video-search \
--deployment-name text-embedding-ada-002 \
--model-name text-embedding-ada-002 \
--model-version "2" \
--model-format OpenAI \
--sku-capacity 100 --sku-name "Standard"Ανοίξτε το notebook λύσης στο GitHub Codespaces και ακολουθήστε τις οδηγίες στο Jupyter Notebook.
Όταν εκτελέσετε το notebook, θα σας ζητηθεί να εισάγετε μια ερώτηση. Το πλαίσιο εισόδου θα μοιάζει με αυτό:
Μετά την ολοκλήρωση αυτού του μαθήματος, δείτε τη συλλογή μάθησης για τη Γενετική Τεχνητή Νοημοσύνη για να συνεχίσετε να αναβαθμίζετε τις γνώσεις σας στη Γενετική Τεχνητή Νοημοσύνη!
Προχωρήστε στο Μάθημα 9 όπου θα εξετάσουμε πώς να δημιουργήσουμε εφαρμογές δημιουργίας εικόνων!
Αποποίηση ευθύνης:
Αυτό το έγγραφο έχει μεταφραστεί χρησιμοποιώντας την υπηρεσία μετάφρασης AI Co-op Translator. Παρόλο που καταβάλλουμε προσπάθειες για ακρίβεια, παρακαλούμε να έχετε υπόψη ότι οι αυτοματοποιημένες μεταφράσεις ενδέχεται να περιέχουν λάθη ή ανακρίβειες. Το πρωτότυπο έγγραφο στη μητρική του γλώσσα θα πρέπει να θεωρείται η αυθεντική πηγή. Για κρίσιμες πληροφορίες, συνιστάται επαγγελματική ανθρώπινη μετάφραση. Δεν φέρουμε ευθύνη για τυχόν παρεξηγήσεις ή εσφαλμένες ερμηνείες που προκύπτουν από τη χρήση αυτής της μετάφρασης.


