Δυσκολεύεστε με το AI ή την ανάπτυξη πλήρους πακέτου; Οι ειδικοί μας είναι εδώ για να σας καθοδηγήσουν: εξατομικευμένες συμβουλές, τεχνική ενσωμάτωση και πολλά άλλα. Επικοινωνήστε μαζί μας στο [email protected].

Δημιουργία ενός μοντέλου σημασιολογικής αναζήτησης με μετασχηματιστές προτάσεων για μια εφαρμογή RAG

Η εφαρμογή ενός αγωγού επαυξημένης ανάκτησης (Retrieval Augmented Generation - RAG) με τη λεπτομερή ρύθμιση του δικού σας μοντέλου σημασιολογικής αναζήτησης είναι μια ισχυρή προσέγγιση για τη βελτίωση της ακρίβειας και της συνάφειας των συστημάτων απάντησης ερωτήσεων.

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

Σημασιολογική αναζήτηση

Τι είναι η σημασιολογική αναζήτηση;

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

Για να επιτευχθεί αυτό, η σημασιολογική αναζήτηση χρησιμοποιεί διάφορες τεχνικές, όπως η αποσαφήνιση της έννοιας της λέξης, η εξαγωγή εννοιών και η επέκταση ερωτημάτων. Χρησιμοποιεί επίσης διανυσματική αναζήτηση και μηχανική μάθηση για να επιστρέψει αποτελέσματα που στοχεύουν να ταιριάζουν με την πρόθεση και το πλαίσιο του χρήστη. Η σημασιολογική αναζήτηση χρησιμοποιείται ευρέως σε μηχανές αναζήτησης στο διαδίκτυο, όπως η Google, και τροφοδοτείται από τεχνολογίες όπως το Knowledge Graph, το οποίο αποθηκεύει δομημένα δεδομένα σχετικά με οντότητες και τις σχέσεις τους. Αυτό επιτρέπει στις μηχανές αναζήτησης να κατανοούν το νόημα πίσω από τα ερωτήματα αναζήτησης και να παρέχουν ακριβέστερα και ουσιαστικότερα αποτελέσματα.

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

Τι είναι το Retrieval Augmented Generation (RAG);

Σημασιολογική αναζήτηση

Η επαυξημένη παραγωγή ανάκτησης (Retrieval Augmented Generation - RAG) είναι μια τεχνική που ενισχύει την ακρίβεια και την αξιοπιστία των παραγωγικών μοντέλων τεχνητής νοημοσύνης, όπως τα μεγάλα γλωσσικά μοντέλα (Large Language Models - LLMs), ενσωματώνοντας εξωτερικές πηγές δεδομένων για την παροχή πιο ακριβών και ενημερωμένων από άποψη πλαισίου πληροφοριών. Ενσωματώνει μια συνιστώσα ανάκτησης με ένα παραγωγικό μοντέλο, επιτρέποντας στο σύστημα να αναζητά και να αντλεί σχετικές πληροφορίες από μια βάση δεδομένων ή μια βάση γνώσης για να συμπληρώνει την εσωτερική του γνώση κατά τη δημιουργία απαντήσεων.

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

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

Τι είναι η Βιβλιοθήκη Μετασχηματιστών προτάσεων;

Μετασχηματιστές προτάσεων

Η βιβλιοθήκη Sentence Transformers είναι ένα ισχυρό πλαίσιο Python που έχει σχεδιαστεί για ενσωμάτωση κειμένου τελευταίας τεχνολογίας. Βασίζεται σε νευρωνικά δίκτυα μετασχηματιστών όπως τα BERT, RoBERTa, XLM-R και άλλα, επιτυγχάνοντας κορυφαίες επιδόσεις σε διάφορες εργασίες όπως σημασιολογική αναζήτηση, εξόρυξη παραφράσεων, σύγκριση σημασιολογικής ομοιότητας, ομαδοποίηση και άλλα. Αυτή η βιβλιοθήκη επιτρέπει την εύκολη τελειοποίηση των μεθόδων ενσωμάτωσης προτάσεων, επιτρέποντας τη δημιουργία ενσωμάτωσης προτάσεων για συγκεκριμένες εργασίες, προσαρμοσμένων στις ανάγκες συγκεκριμένων εργασιών. Μάθετε περισσότερα στον ιστότοπο Sentence Transformers

Η βιβλιοθήκη προσφέρει μια ευρεία επιλογή προ-εκπαιδευμένων μοντέλων Sentence Transformers για περισσότερες από 50 γλώσσες, διαθέσιμα στην πλατφόρμα Hugging Face. Οι χρήστες μπορούν επίσης να εκπαιδεύσουν ή να τελειοποιήσουν τα δικά τους μοντέλα χρησιμοποιώντας τη βιβλιοθήκη, παρέχοντας την ευελιξία για τη δημιουργία προσαρμοσμένων μοντέλων για μοναδικές περιπτώσεις χρήσης. Η ομάδα Sentence Transformers κυκλοφόρησε πρόσφατα μια νέα μεγάλη έκδοση (v3) που βελτιώνει σημαντικά τις δυνατότητες αυτής της βιβλιοθήκης, ιδίως τις δυνατότητες τελειοποίησης.

Η βιβλιοθήκη Sentence Transformers είναι γρήγορη, περιεκτική και καλά συντηρημένη, γι' αυτό και τη χρησιμοποιούμε σε αυτό το σεμινάριο.

Δημιουργία του δικού σας μοντέλου σημασιολογικής αναζήτησης

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

Αρχικά, ας δημιουργήσουμε ένα μικρό σύνολο δεδομένων που θα περιέχει τα δεδομένα μας. Δημιουργήστε ένα αρχείο CSV με 1 στήλη (με όνομα "dataset.csv") που περιέχει την ακόλουθη τεχνική τεκμηρίωση σχετικά με τους εκτυπωτές HP (σε ένα πραγματικό σενάριο θα θέλετε να συμπεριλάβετε πολλά περισσότερα παραδείγματα φυσικά):

"HP® LaserJets have unmatched printing speed, performance and reliability that you can trust. Enjoy Low Prices and Free Shipping when you buy now online."
"Every HP LaserJet comes with a one-year HP commercial warranty (or HP Limited Warranty)."
"HP LaserJet ; Lowest cost per page on mono laser printing. · $319.99 ; Wireless options available. · $109.00 ; Essential management features. · $209.00."

Κάθε γραμμή μπορεί να περιέχει έως και 512 μάρκες (που αντιστοιχούν περίπου σε 400 λέξεις), ενώ για να μεγιστοποιηθεί η ακρίβεια συνιστάται να μην υπερβαίνει τις 128 μάρκες (που αντιστοιχούν περίπου σε 100 λέξεις). Τώρα που έχουμε τα 3 κομμάτια τεκμηρίωσης στο σύνολο δεδομένων μας, μπορούμε να κωδικοποιήσουμε τα δεδομένα χρησιμοποιώντας το μοντέλο μας με Sentence Transformers. Δημιουργήστε ένα σενάριο Python με τα ακόλουθα (βεβαιωθείτε ότι το PyTorch και το Sentence Transformers είναι εγκατεστημένα).

from sentence_transformers import SentenceTransformer
import csv
import torch

model_name = 'paraphrase-multilingual-mpnet-base-v2'
encoded_model_path = 'semantic_search_model.pt'
dataset_path = 'dataset.csv'

bi_encoder = SentenceTransformer(model_name)

passages = []
with open(dataset_path) as csv_file:
    csv_reader = csv.reader(csv_file)
    for row in csv_reader:
        passages.append(row[0])
        
corpus_embeddings = bi_encoder.encode(
    passages, batch_size=32, convert_to_tensor=True, show_progress_bar=True)

torch.save(corpus_embeddings, encoded_model_path)

Αυτό το σενάριο κατεβάζει και χρησιμοποιεί το paraphrase-multilingual-mpnet-base-v2 ως βασικό μοντέλο και το χρησιμοποιεί για να κωδικοποιήσει τα δεδομένα μας. Μπορείτε να επιλέξετε ανάμεσα σε πολλά διαθέσιμα προ-εκπαιδευμένα μοντέλα, ανάλογα με τις απαιτήσεις σας (μέγεθος μοντέλου, περίπτωση χρήσης, υποστηριζόμενες γλώσσες, ...). Ανάλογα με το υλικό σας, θα πρέπει να προσαρμόσετε την παράμετρο "batch_size" προκειμένου να επιταχύνετε τη διαδικασία κωδικοποίησης.

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

import csv
from sentence_transformers import SentenceTransformer, util
import torch

bi_encoder = SentenceTransformer('paraphrase-multilingual-mpnet-base-v2')
semantic_search_model = torch.load('semantic_search_model.pt')

passages = []
with open('app/custom_model/dataset.csv') as csv_file:
    csv_reader = csv.reader(csv_file)
    for row in csv_reader:
        passages.append(row[0])

question_embedding = bi_encoder.encode(
    "How long is the warranty on the HP Color LaserJet Pro?", convert_to_tensor=True)
hits = util.semantic_search(
    question_embedding, semantic_search_model, top_k=3)
hits = hits[0]

result = {"search_results": [
    {"score": hit['score'], "text": passages[hit['corpus_id']]} for hit in hits]}

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

{
"search_results": [
    {
        "score": 0.99,
        "text": "Every HP LaserJet comes with a one-year HP commercial warranty (or HP Limited Warranty)."
    },
    {
        "score": 0.74,
        "text": "All consumer PCs and printers come with a standard one-year warranty. Care packs provide an enhanced level of support and/or an extended period of coverage for your HP hardware. All commercial PCs and printers come with either a one-year or three-year warranty."
    },
    {
        "score": 0.68,
        "text": "In-warranty plan · Available in 2-, 3-, or 4-year extension plans · Includes remote problem diagnosis support and Next Business Day Exchange Service."
    },
    ]
}

Στο σενάριο εξαγωγής συμπερασμάτων, η παράμετρος "top_k" καθορίζει πόσα αποτελέσματα θέλουμε να επιστρέψουμε. Στο αποτέλεσμα, εμφανίζουμε το κείμενο που ταιριάζει από το σύνολο δεδομένων με ένα σκορ εμπιστοσύνης. Αυτό το σκορ είναι σημαντικό, επειδή μας βοηθά να αποφασίσουμε αν θέλουμε να αποδεχτούμε την απάντηση ή όχι.

Δημιουργία μιας απάντησης σε φυσική γλώσσα με Γενετική Τεχνητή Νοημοσύνη

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

Μπορούμε εύκολα να το επιτύχουμε αυτό αξιοποιώντας ένα προηγμένο LLM όπως το GPT-4 στο OpenAI ή το LLaMA 3 και το ChatDolphin στο NLP Cloud. Μπορείτε είτε να αποφασίσετε να κρατήσετε το καλύτερο αποτέλεσμα από το μοντέλο σημασιολογικής αναζήτησης και να το περάσετε ως πλαίσιο στο LLM, είτε να κρατήσετε πολλά αποτελέσματα. Ακολουθεί ένα παράδειγμα προτροπής που χρησιμοποιεί μόνο το καλύτερο αποτέλεσμα:

Context: Every HP LaserJet comes with a one-year HP commercial warranty (or HP Limited Warranty).
Based on the above context, answer the following question: How long is the warranty on the HP Color LaserJet Pro?

Αυτή η αίτηση επιστρέφει κάτι τέτοιο:

The warranty on the HP Color LasertJet Pro lasts at least 1 year.

Μοντέλο σημασιολογικής αναζήτησης με κωδικοποιημένα δεδομένα VS Αποθήκευση ενσωματώσεων σε διανυσματική βάση δεδομένων

Σε ένα σύστημα Retrieval-Augmented Generation (RAG), η δημιουργία ενός σημασιολογικού μοντέλου αναζήτησης με τοπικά κωδικοποιημένα δεδομένα ή η χρήση μιας διανυσματικής βάσης δεδομένων είναι δύο ενδιαφέρουσες επιλογές.

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

Για τις επιχειρήσεις που επιθυμούν να επιτύχουν πολύ χαμηλές καθυστερήσεις, συνιστάται η κωδικοποίηση των δικών σας δεδομένων και η φόρτωση των δεδομένων σε μια GPU προκειμένου να βελτιωθεί ο χρόνος υπολογισμού. Ωστόσο, αυτό γίνεται εις βάρος της ευελιξίας, καθώς τα δεδομένα σας πρέπει να κωδικοποιούνται εκ νέου κάθε φορά που αλλάζει το σύνολο δεδομένων. Εάν τα υποκείμενα δεδομένα σας αλλάζουν πολύ συχνά, ίσως είναι απλούστερο για εσάς να εξαγάγετε τις ενσωματώσεις και να τις αποθηκεύσετε σταδιακά σε μια διανυσματική βάση δεδομένων (όπως για παράδειγμα η PG Vector).

Συμπέρασμα

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

Το Sentence Transformers είναι μια εξαιρετική βιβλιοθήκη που μπορεί να χρησιμοποιηθεί για να δημιουργήσετε το δικό σας μοντέλο σημασιολογικής αναζήτησης με βάση τα δικά σας δεδομένα. Όταν αναπτύσσεται σε μια GPU και συνδυάζεται με ένα προηγμένο γεννητικό μοντέλο AI, ένα τέτοιο μοντέλο αποδεικνύεται εξαιρετικά ισχυρό.

Αν δεν ενδιαφέρεστε να δημιουργήσετε και να αναπτύξετε το δικό σας μοντέλο σημασιολογικής αναζήτησης με βάση τους μετασχηματιστές προτάσεων μόνοι σας, μπορείτε εύκολα να το κάνετε με 1 κλικ στο NLP Cloud. Δοκιμάστε τη σημασιολογική αναζήτηση στο NLP Cloud τώρα!

Αν έχετε ερωτήσεις σχετικά με το RAG, τη σημασιολογική αναζήτηση και τους Sentence Transformers, μη διστάσετε να μας ρωτήσετε, είναι πάντα χαρά μας να σας συμβουλεύουμε!

Julien
CTO στο NLP Cloud