Teknologian jakaminen

Elasticsearch: Noutajien esittely – Kaiken etsiminen

2024-07-12

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

Kirjailija: ElasticJeff Vestal, Jack Conradson

Vuonna 8.14 Elastic esitteli uuden hakuominaisuuden nimeltä "noutaja" Elasticsearchissa. Lue lisää niiden yksinkertaisuudesta ja tehokkuudesta sekä siitä, kuinka ne voivat parantaa hakutoimintojasi.

Noutajat ovat uusi abstraktiokerros, joka on lisätty Elasticsearchin hakusovellusliittymään. Ne tarjoavat mahdollisuuden monivaiheisten hakuputkien määrittämiseen yhdessä _search API -kutsussa. Tämä arkkitehtuuri yksinkertaistaa sovelluksesi hakulogiikkaa poistamalla useiden Elasticsearch API -kutsujen tarpeen monimutkaisille hakukyselyille. Se vähentää myös asiakaspuolen logiikan tarvetta, mikä vaatii usein useiden kyselyjen tulosten yhdistämistä.

Noutajan alkuperäinen tyyppi

Ensimmäisessä julkaisussa on kolme noutajatyyppiä. Jokainen noutaja on suunniteltu tiettyyn tarkoitukseen, ja yhdistettynä ne voivat suorittaa monimutkaisia ​​hakuja.

Saatavilla olevia tyyppejä ovat:

  • standardi - Palauttaa huipputason dokumentit perinteisillä kyselyillä. Nämä tyypit ovat taaksepäin yhteensopivia tukemalla olemassa olevaa kyselyn DSL-pyyntösyntaksia, jolloin voit siirtyä indeksointikehykseen omaan tahtiisi.
  • kNN - Palauttaa kNN-haun suosituimmat asiakirjat.
  • RRF - Käytä vastavuoroista fuusioalgoritmia useiden ensimmäisen vaiheen noutajien yhdistämiseen ja luokitteluun yhdeksi tulosjoukoksi ilman tai vain vähän käyttäjän säätöjä. RRF-noutaja on yhdistelmänoutaja, jonka suodatinelementit levitetään sen lapsinoutajalle.

Miten noutajat eroavat toisistaan? Miksi ne ovat hyödyllisiä?

Perinteisissä kyselyissä kysely on osa yleistä hakusovellusliittymäkutsua. Noutajat eroavat toisistaan ​​siinä, että ne on suunniteltu itsenäisiksi kokonaisuuksiksi, joita voidaan käyttää yksittäin tai helposti yhdistellä. Tämä modulaarinen lähestymistapa tarjoaa enemmän joustavuutta hakustrategioita suunniteltaessa.

Noutajat on suunniteltu osaksi "noutajapuuta", hierarkkista rakennetta, joka määrittää hakutoiminnot selventämällä niiden järjestystä ja logiikkaa. Tämä rakenne tekee monimutkaisista hauista helpommin hallittavissa, kehittäjien on helpompi ymmärtää ja mahdollistaa uusien ominaisuuksien lisäämisen helposti tulevaisuudessa.

Noutajat tukevat koostettavuutta, jolloin voit rakentaa putkia ja integroida erilaisia ​​hakustrategioita. Tämä mahdollistaa erilaisten hakuyhdistelmien helpon testaamisen. Ne tarjoavat myös paremman hallinnan siihen, miten asiakirjoja pisteytetään ja suodatetaan. Voit esimerkiksi määrittää vähimmäispistemäärän, käyttää monimutkaisia ​​suodattimia vaikuttamatta pisteisiin ja käyttää parametreja, kuten terminate_after suorituskyvyn optimointiin.

Ylläpitää taaksepäin yhteensopivuuden vanhojen kyselyelementtien kanssa muuntaen ne automaattisesti sopiviksi noutajiksi.

Esimerkki haun käytöstä

Katsotaanpa joitain esimerkkejä noutajien käytöstä. Käytämme IMDB-mallitietojoukkoa.

Voit ajaa mukana jupyter muistikirja, tuo IMDB-tiedot palvelimettomaan hakuprojektiisi ja suorita seuraavat esimerkit itse!

Korkean tason asetukset ovat:

  • yleiskatsaus - lyhyt yhteenveto elokuvasta
  • nimet - elokuvien nimet
  • overview_dense - tiheä_vektori luotu e5-pienestä mallista
  • overview_sparse - Harvat vektorit käyttämällä Elasticin ELSER-mallia.
  • Vain kenttien käyttäminen ja _source:false-asetus palauttaa nimien ja yleiskatsauksen tekstiversion

Vakio - Hae kaikesta tekstistä!

  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 - Hae kaikki tiheät vektorit!

  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 - Hae kaikista harvoista vektoreista!

  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 - yhdistää kaiken!

  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. }

Noutajan nykyinen raja

Noutaja sisältää tiettyjä rajoituksia, jotka käyttäjien tulee olla tietoisia. Esimerkiksi yhdistetyn noutajan käyttö sallii vain elementtien kyselyn. Tämä pakottaa huolenaiheet erottelemaan selkeämmin ja estää monimutkaisuuden, joka aiheutuu liiallisesta sisäkkäisestä tai riippumattomasta määrityksestä. Lisäksi lapsinoutajat eivät saa käyttää elementtejä, jotka rajoittavat yhdistelmänoutajan kuulumaan noutajapuuhun.

Nämä rajoitukset parantavat suorituskykyä ja koostettavuutta jopa monimutkaisia ​​hakustrategioita käytettäessä.

Noutaja julkaistaan ​​alun perin teknisenä esikatseluna, joten sen API voi muuttua

tiivistettynä

Hakijat ovat tärkeä askel eteenpäin Elasticsearch-haun toimivuudessa ja käyttäjäystävällisyydessä. Ne voidaan ketjuttaa putkeen siten, että jokainen noutaja soveltaa logiikkaansa ja välittää tulokset ketjun seuraavaan kohtaan. Noutajat voivat parantaa merkittävästi hakukokemusta mahdollistamalla jäsennellyt, joustavammat ja tehokkaammat hakutoiminnot.

Seuraavat resurssit tarjoavat lisätietoja noutajista.

Kokeile yllä olevaa koodia itse!Voit juostamukana tuleva jupyter-muistikirja, tuo IMDB-tiedot Elastic Serverless Search -projektiin!

Oletko valmis kokeilemaan sitä itse?alkaaIlmainen kokeilu
Haluatko Elastic-sertifioinnin?Ota selvää ensi kerrallaElasticsearch-insinöörikoulutusMilloin aloittaa!

alkuperäinen:Elasticsearchin noutajat – Elasticsearchin hakunoutajien käyttäminen – Elastic Search Labs