Κοινή χρήση τεχνολογίας

Elasticsearch: Παρουσιάζοντας τα ριτρίβερ - Ψάχνοντας τα πάντα

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Συγγραφέας: από το ElasticΤζεφ Βέσταλ, Τζακ Κόνραντσον

Στο 8.14, το Elastic παρουσίασε μια νέα δυνατότητα αναζήτησης που ονομάζεται "retrievers" στο Elasticsearch. Διαβάστε παρακάτω για να μάθετε για την απλότητα και την αποτελεσματικότητά τους και πώς μπορούν να βελτιώσουν τις λειτουργίες αναζήτησής σας.

Τα Retriever είναι ένα νέο επίπεδο αφαίρεσης που προστίθεται στο API αναζήτησης στο Elasticsearch. Παρέχουν τη δυνατότητα διαμόρφωσης αγωγών ανάκτησης πολλαπλών σταδίων σε μία κλήση API _search. Αυτή η αρχιτεκτονική απλοποιεί τη λογική αναζήτησης στην εφαρμογή σας εξαλείφοντας την ανάγκη για πολλαπλές κλήσεις API Elasticsearch για πολύπλοκα ερωτήματα αναζήτησης. Μειώνει επίσης την ανάγκη για λογική από την πλευρά του πελάτη, η οποία συχνά απαιτεί συνδυασμό αποτελεσμάτων από πολλαπλά ερωτήματα.

Ο αρχικός τύπος του retriever

Τρεις τύποι ριτρίβερ περιλαμβάνονται στην αρχική έκδοση. Κάθε retriever έχει σχεδιαστεί για έναν συγκεκριμένο σκοπό και όταν συνδυαστεί, μπορεί να εκτελέσει σύνθετες αναζητήσεις.

Οι διαθέσιμοι τύποι περιλαμβάνουν:

  • πρότυπο - Επιστρέφει έγγραφα ανώτατου επιπέδου σε παραδοσιακά ερωτήματα. Αυτοί οι τύποι είναι συμβατοί προς τα πίσω υποστηρίζοντας υπάρχουσα σύνταξη αιτήματος DSL ερωτήματος, επιτρέποντάς σας να μεταβείτε στο πλαίσιο ανίχνευσης με τον δικό σας ρυθμό.
  • kNN - Επιστρέφει κορυφαία έγγραφα στην αναζήτηση kNN.
  • RRF - Χρησιμοποιήστε τον αλγόριθμο αμοιβαίας σύντηξης για να συνδυάσετε και να ταξινομήσετε πολλαπλά retriever πρώτου σταδίου σε ένα ενιαίο σύνολο αποτελεσμάτων χωρίς ή ελάχιστη προσαρμογή χρήστη. Ένα RRF retriever είναι ένα σύνθετο retriever του οποίου τα στοιχεία φίλτρου διαδίδονται στα θυγατρικά του retriever.

Σε τι διαφέρουν τα ριτρίβερ; Γιατί είναι χρήσιμα;

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

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

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

Διατηρεί συμβατότητα προς τα πίσω με στοιχεία ερωτήματος παλαιού τύπου, μετατρέποντάς τα αυτόματα σε κατάλληλα retriever.

Παράδειγμα χρήσης ανάκτησης

Ας δούμε μερικά παραδείγματα χρήσης ριτρίβερ. Χρησιμοποιούμε το δείγμα δεδομένων του IMDB.

Μπορείτε να εκτελέσετε το συμπεριλαμβανόμενο σημειωματάριο jupyter, εισαγάγετε δεδομένα IMDB στο έργο αναζήτησης χωρίς διακομιστή και εκτελέστε μόνοι σας τα ακόλουθα παραδείγματα!

Οι ρυθμίσεις υψηλού επιπέδου είναι:

  • επισκόπηση - μια σύντομη περίληψη της ταινίας
  • ονόματα - τα ονόματα των ταινιών
  • overview_dense - πυκνό_διάνυσμα που δημιουργήθηκε από το μοντέλο e5-small
  • overview_sparse - Αραιά διανύσματα χρησιμοποιώντας το μοντέλο ELSER του Elastic.
  • Η χρήση μόνο πεδίων και η ρύθμιση _source:false επιστρέφει την έκδοση κειμένου των ονομάτων και την επισκόπηση

Τυπικό - Αναζήτηση σε όλο το κείμενο!

  1. GET /imdb_movies/_search?pretty
  2. {
  3. "retriever": {
  4. "standard": {
  5. "query": {
  6. "term": {
  7. "overview": "clueless"
  8. }
  9. }
  10. }
  11. },
  12. "size": 3,
  13. "fields": [
  14. "names",
  15. "overview"
  16. ],
  17. "_source": false
  18. }

kNN - Αναζήτηση όλων των πυκνών διανυσμάτων!

  1. GET /imdb_movies/_search?pretty
  2. {
  3. "retriever": {
  4. "knn": {
  5. "field": "overview_dense",
  6. "query_vector_builder": {
  7. "text_embedding": {
  8. "model_id": ".multilingual-e5-small_linux-x86_64",
  9. "model_text": "clueless slackers"
  10. }
  11. },
  12. "k": 5,
  13. "num_candidates": 5
  14. }
  15. },
  16. "size": 3,
  17. "fields": [
  18. "names",
  19. "overview"
  20. ],
  21. "_source": false
  22. }

text_expansion - Αναζήτηση σε όλα τα αραιά διανύσματα!

  1. GET /imdb_movies/_search?pretty
  2. {
  3. "retriever": {
  4. "standard": {
  5. "query": {
  6. "text_expansion": {
  7. "overview_sparse": {
  8. "model_id": ".elser_model_2_linux-x86_64",
  9. "model_text": "clueless slackers"
  10. }
  11. }
  12. }
  13. }
  14. },
  15. "size": 3,
  16. "fields": [
  17. "names",
  18. "overview"
  19. ],
  20. "_source": false
  21. }

rrf - συνδυάζει τα πάντα!

  1. GET /imdb_movies/_search?pretty
  2. {
  3. "retriever": {
  4. "rrf": {
  5. "retrievers": [
  6. {
  7. "standard": {
  8. "query": {
  9. "term": {
  10. "overview": "clueless slackers"
  11. }
  12. }
  13. }
  14. },
  15. {
  16. "knn": {
  17. "field": "overview_dense",
  18. "query_vector_builder": {
  19. "text_embedding": {
  20. "model_id": ".multilingual-e5-small_linux-x86_64",
  21. "model_text": "clueless slackers"
  22. }
  23. },
  24. "k": 5,
  25. "num_candidates": 5
  26. }
  27. },
  28. {
  29. "standard": {
  30. "query": {
  31. "text_expansion": {
  32. "overview_sparse": {
  33. "model_id": ".elser_model_2_linux-x86_64",
  34. "model_text": "clueless slackers"
  35. }
  36. }
  37. }
  38. }
  39. }
  40. ],
  41. "rank_window_size": 5,
  42. "rank_constant": 1
  43. }
  44. },
  45. "size": 3,
  46. "fields": [
  47. "names",
  48. "overview"
  49. ],
  50. "_source": false
  51. }

Το τρέχον όριο του retriever

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

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

Το retriever κυκλοφορεί αρχικά ως προεπισκόπηση τεχνολογίας, επομένως το API του υπόκειται σε αλλαγές

Συμπερασματικά

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

Οι παρακάτω πόροι παρέχουν περισσότερες λεπτομέρειες σχετικά με τα retriever.

Δοκιμάστε μόνοι σας τον παραπάνω κωδικό!Μπορείτε να τρέξετεσυνοδευτικό σημειωματάριο jupyter, εισάγετε δεδομένα IMDB στο έργο Elastic Serverless Search!

Είστε έτοιμοι να το δοκιμάσετε μόνοι σας;αρχήΔωρεάν δοκιμή
Θέλετε να αποκτήσετε πιστοποίηση Elastic;Μάθετε την επόμενη φοράΕκπαίδευση μηχανικών ElasticsearchΠότε να ξεκινήσετε!

πρωτότυπο:Elasticsearch retriever - Πώς να χρησιμοποιήσετε τα search retriever στο Elasticsearch — Elastic Search Labs