Αναζήτηση διανυσμάτων (αναζήτηση με σημασία)
Γρήγορος ορισμός
Η αναζήτηση διανυσμάτων είναι μια μέθοδος ανάκτησης που επιστρέφει τα αντικείμενα των οποίων τα embeddings είναι πιο κοντά στο embedding της ερώτησης, έτσι ώστε τα αποτελέσματα να ταιριάζουν με βάση τη σημασία αντί για κοινές λέξεις-κλειδιά. Είναι η συνήθης μηχανή αναζήτησης με σημασία.
Σε αυτή τη σελίδα
Πώς λειτουργεί η αναζήτηση διανυσμάτων
Κάθε έγγραφο, απόσπασμα ή προϊόν μετατρέπεται σε ένα embedding και αποθηκεύεται σε έναν δείκτη. Στη στιγμή της ερώτησης, η ερώτηση ενσωματώνεται με το ίδιο μοντέλο, και ο δείκτης επιστρέφει τα πλησιέστερα διανύσματα, συνήθως μετρώντας με την ομοιότητα συνημίτονου. Ένας πελάτης που ρωτά "κάτι ζεστό για σκι" μπορεί να βρει ένα μπουφάν που περιγράφεται ως "μονωμένο, αδιάβροχο χειμερινό κέλυφος" ακόμα και αν καμία λέξη δεν ταιριάζει.
Η σύγκριση μιας ερώτησης με εκατομμύρια διανύσματα ένα προς ένα θα ήταν αργή, οπότε οι δείκτες χρησιμοποιούν αλγόριθμους προσεγγιστικής αναζήτησης πλησιέστερων γειτόνων. Το HNSW, ένα στρωματοποιημένο γράφημα που περιγράφηκε από τους Malkov και Yashunin το 2016, είναι ένα από τα πιο ευρέως χρησιμοποιούμενα; ανταλλάσσει μια μικρή απώλεια ακρίβειας για πολύ γρήγορη αναζήτηση. Οι ανοιχτού κώδικα επεκτάσεις όπως το pgvector φέρνουν αυτούς τους δείκτες στο PostgreSQL.
Αναζήτηση με σημασία vs αναζήτηση λέξεων-κλειδιών
Η αναζήτηση λέξεων-κλειδιών (BM25, πλήρης κείμενο, τριγράμματος) είναι ακριβής σε ακριβείς όρους: μια αναφορά προϊόντος, μια μάρκα, ένας κωδικός σφάλματος. Αποτυγχάνει σε συνώνυμα και παραφράσεις. Η αναζήτηση διανυσμάτων είναι το αντίστροφο: ισχυρή στη σημασία, αδύναμη σε ακριβείς συμβολοσειρές και σπάνιους αναγνωριστές.
Γι' αυτό οι περισσότερες παραγωγικές συστήματα χρησιμοποιούν υβριδική αναζήτηση: εκτελούν και τις δύο, στη συνέχεια συγχωνεύουν ή αναδιατάσσουν τα αποτελέσματα. Η πυκνή έρευνα ανάκτησης όπως η εργασία του Karpukhin και των συνεργατών του το 2020 σχετικά με την απάντηση σε ερωτήσεις έδειξε πόσο βελτιώνει η αναζήτηση με σημασία την ανάκληση, και οι επαγγελματίες έχουν μάθει από τότε πόσο ακόμη επωφελείται από έναν συνεργάτη λέξεων-κλειδιών.
Παγίδες
Η αναζήτηση με διανύσματα επιστρέφει πάντα κάτι, ακόμη και όταν δεν υπάρχει τίποτα σχετικό, οπότε ένα σύστημα χρειάζεται ένα κατώφλι σχετικότητας ή έναν έλεγχο πριν χρησιμοποιήσει τα αποτελέσματα. Δεν κατανοεί αριθμούς ή περιορισμούς: «κάτω από 50 ευρώ, σε απόθεμα, μέγεθος M» χρειάζεται πραγματικά φίλτρα σε δομημένα δεδομένα. Και η ποιότητα εξαρτάται από το πώς έχει διαχωριστεί το περιεχόμενο: αποσπάσματα που είναι πολύ μεγάλα θολώνουν τη σημασία, αποσπάσματα που είναι πολύ μικρά χάνουν το πλαίσιο.
Αναζήτηση με διανύσματα στο AI SmartTalk
Το AI SmartTalk αποθηκεύει ενσωματώσεις σε PostgreSQL με pgvector, με έναν δείκτη HNSW σε έγγραφα προϊόντων, και συνδυάζει τη διανυσματική ομοιότητα με την αναζήτηση τριγράμματος και πλήρους κειμένου. Για τα προϊόντα, το εργαλείο αναζήτησης του βοηθού προσθέτει δομημένα φίλτρα σε τιμή, απόθεμα, μάρκα, κατηγορία και χαρακτηριστικά παραλλαγής, έτσι ώστε μια σημασιολογική ερώτηση και ένας ακριβής περιορισμός να μπορούν να απαντηθούν μαζί.
Συχνές ερωτήσεις
Είναι η σημασιολογική αναζήτηση το ίδιο με την αναζήτηση με διανύσματα;
Η σημασιολογική αναζήτηση είναι ο στόχος — η εύρεση αποτελεσμάτων με βάση τη σημασία. Η αναζήτηση με διανύσματα πάνω σε ενσωματώσεις είναι ο πιο κοινός τρόπος για να το επιτύχουμε, συχνά σε συνδυασμό με την αναζήτηση λέξεων-κλειδιών.
Χρειάζομαι μια αφιερωμένη βάση δεδομένων διανυσμάτων;
Όχι απαραίτητα. Επεκτάσεις όπως το pgvector προσθέτουν διανυσματικούς δείκτες σε PostgreSQL, που είναι αρκετό για πολλές εφαρμογές και διατηρεί τα διανύσματα δίπλα στα υπόλοιπα δεδομένα.
Τι είναι η υβριδική αναζήτηση;
Μια αναζήτηση που εκτελεί ταυτόχρονα αναζήτηση με διανύσματα και αναζήτηση λέξεων-κλειδιών και συγχωνεύει τα αποτελέσματα, έτσι ώστε να χειρίζεται τόσο παραφρασμένες ερωτήσεις όσο και ακριβείς όρους όπως αναφορές προϊόντων.