Căutare semantică cu vectori

Publicat: 2022-11-01

Dacă ați urmărit cele mai recente știri în căutare, probabil că ați auzit despre căutarea vectorială.

Și poate că ați început chiar să cercetați subiectul pentru a încerca să aflați mai multe despre el, doar pentru a ieși confuz la celălalt capăt. Nu ai lăsat matematica aia în facultate?

Crearea unei căutări vectoriale este dificilă. Înțelegerea asta nu trebuie să fie.

Și înțelegând că căutarea vectorială nu este viitorul, căutarea hibridă este – asta este la fel de important.

Ce sunt vectorii?

Când vorbim despre vectori în contextul învățării automate, ne referim la asta: Vectorii sunt grupuri de numere care reprezintă ceva.

Acel lucru ar putea fi o imagine, un cuvânt sau aproape orice.

Întrebările, desigur, sunt de ce acești vectori sunt utili și cum sunt creați.

Să ne uităm mai întâi de unde provin acei vectori. Răspunsul scurt: învățarea automată.

Jay Alammar are poate cea mai bună postare de blog scrisă vreodată despre ce sunt vectorii .

Totuși, ca rezumat, învățarea automată modelează elemente de intrare (să presupunem doar cuvinte de aici încolo) și încearcă să găsească cele mai bune formule pentru a prezice altceva.

De exemplu, este posibil să aveți un model care preia cuvântul „albină” și încearcă să descopere cele mai bune formule care să prezică cu exactitate că „albină” este văzută în contexte similare cu „insecte” și „viespi”.

Odată ce modelul are cea mai bună formulă, poate transforma cuvântul „albină” într-un grup de numere care se întâmplă să fie similar cu grupul de numere pentru „insecte” și „viespi”.

De ce vectorii sunt puternici

Vectorii sunt cu adevărat puternici din acest motiv: modelele de limbaj mari precum Generative Pre-trained Transformer 3 (GPT-3) sau cele de la Google iau în considerare miliarde de cuvinte și propoziții, astfel încât să înceapă să facă aceste conexiuni și să devină cu adevărat inteligenți.

Este ușor de înțeles de ce oamenii sunt atât de încântați să aplice această inteligență pentru căutare.

Unii spun chiar că căutarea vectorială va înlocui căutarea prin cuvinte cheie pe care am cunoscut-o și am iubit-o de zeci de ani.

Ideea este, totuși, că căutarea vectorială nu înlocuiește căutarea de cuvinte cheie în întregime. A crede că căutarea prin cuvinte cheie nu va păstra o valoare imensă pune prea mult optimism în noul și strălucitor.

Căutarea vectorială și căutările prin cuvinte cheie au fiecare propriile puncte forte și funcționează cel mai bine atunci când lucrează împreună.

Căutare vectorială pentru interogări cu coadă lungă

Dacă lucrați în căutare, probabil că sunteți foarte familiarizat cu coada lungă a interogărilor.

Acest concept, popularizat de Chris Anderson pentru a descrie conținutul digital , spune că există unele articole (pentru interogări de căutare) care sunt mult mai populare decât orice altceva, dar că există o mulțime de articole individuale care sunt încă dorite de cineva.

Așa este și cu căutarea.

Câteva interogări (numite și interogări „cap”) sunt căutate fiecare foarte mult, dar marea majoritate a interogărilor sunt căutate foarte puțin – poate chiar o singură dată.

Cifrele vor diferi de la site la site, dar pe un site mediu, aproximativ o treime din totalul căutărilor pot proveni de la doar câteva zeci de interogări, în timp ce aproape jumătate din volumul de căutări provine de la interogări care se află în afara celor mai populare 1.000.

Interogările cu coadă lungă tind să fie mai lungi și pot fi chiar interogări în limbaj natural.

Cercetările realizate de compania mea Algolia au arătat că 75% dintre interogări sunt două sau mai puține cuvinte. 90% dintre interogări sunt patru sau mai puține cuvinte. Apoi, pentru a ajunge la 99% din interogări, aveți nevoie de 13 cuvinte!

Cu toate acestea, ele nu sunt întotdeauna lungi, ar putea fi pur și simplu obscure. Pentru un site de modă pentru femei, „rochie mov” ar putea fi o întrebare cu coadă lungă, deoarece oamenii nu solicită acea culoare foarte des. „Wristlet” ar putea fi, de asemenea, o interogare rar întâlnită, chiar dacă site-ul web are brățări de vânzare.

Căutarea vectorială funcționează în general excelent pentru interogări cu coadă lungă. Poate înțelege că brățările sunt asemănătoare brățărilor și evidențiază brățările chiar și fără sinonime. Poate arăta rochii roz sau mov atunci când cineva caută ceva în mov.

Căutarea vectorială poate funcționa bine chiar și pentru acele interogări lungi sau în limbaj natural. „Ceva care să-mi țină băuturile la rece” va aduce frigidere în căutarea vectorială bine reglată, în timp ce, cu căutarea prin cuvinte cheie, mai bine sperați că textul se află undeva în descrierea produsului.

Cu alte cuvinte, căutarea vectorială mărește reamintirea rezultatelor căutării sau câte rezultate sunt găsite.

Cum funcționează căutarea vectorială

Căutarea vectorială face acest lucru luând acele grupuri de numere pe care le-am descris mai sus și punând motorul de căutare vectorială să întrebe: „Dacă aș reprezenta grafic aceste grupuri de numere ca linii, care ar fi cel mai apropiat unul de celălalt?”

O modalitate ușoară de a conceptualiza acest lucru este să ne gândim la grupuri care au doar două numere. Grupul [1,2] va fi mai aproape de grupul [2,2] decât ar fi de grupul [2.500].

(Desigur, deoarece vectorii au zeci de numere în ei, ei sunt „reprezentați” în zeci de dimensiuni, ceea ce nu este atât de ușor de vizualizat.)

Această abordare pentru determinarea asemănării este puternică, deoarece vectorii care reprezintă cuvinte precum „medic” și „medicină” vor fi „reprezentați grafic” mult mai asemănători decât ar fi cuvintele „doctor” și „rock”.

Dezavantaje ale căutării vectoriale

Cu toate acestea, există dezavantaje ale căutării vectoriale.

Primul este costul. Toate învățarea automată despre care am discutat mai sus? Are costuri.

În primul rând, stocarea vectorilor este mai costisitoare decât stocarea unui index de căutare bazat pe cuvinte cheie. Căutarea pe acești vectori este, de asemenea, mai lentă decât o căutare prin cuvinte cheie în majoritatea cazurilor.

Acum, hashingul poate atenua ambele probleme.

Da, introducem mai multe concepte tehnice, dar acesta este un altul care este destul de simplu de înțeles elementele de bază.

Hashingul efectuează o serie de pași pentru a transforma o informație (cum ar fi un șir sau un număr) într-un număr, care ocupă mai puțină memorie decât informațiile originale.

Se pare că putem folosi și hashing pentru a reduce dimensiunile vectorilor , păstrând totuși ceea ce face vectorii folositori: capacitatea lor de a potrivi elemente similare conceptual.

Prin utilizarea hashingului, putem face căutări vectoriale mult mai rapide și ca vectorii să utilizeze mai puțin spațiu în general.

Detaliile sunt foarte tehnice, dar important este să înțelegeți că este posibil.

Utilitatea continuă a căutării prin cuvinte cheie

Acest lucru nu înseamnă că căutarea prin cuvinte cheie nu este încă utilă! Căutarea prin cuvinte cheie este în general mai rapidă decât căutarea vectorială.

În plus, este mai ușor de înțeles de ce rezultatele sunt clasate așa cum sunt.

Luați exemplul interogării „texas” și „tejano” și „state” ca potriviri de cuvinte potențiale. În mod clar, „tejano” este mai aproape dacă privim comparația dintr-o perspectivă pură a căutării prin cuvinte cheie. Cu toate acestea, nu este atât de ușor de spus care ar fi mai aproape dintr-o abordare de căutare vectorială.

Căutarea bazată pe cuvinte cheie înțelege „texas” ca fiind mai asemănător cu „tejano”, deoarece folosește o abordare bazată pe text pentru a găsi înregistrări.

Dacă înregistrările conțin cuvinte care sunt exact aceleași cu ceea ce este în interogare (sau într-un anumit nivel de diferență pentru a ține cont de greșelile de scriere), atunci înregistrarea este considerată relevantă și revine în seturile de rezultate.

Cu alte cuvinte, căutarea prin cuvinte cheie se concentrează pe precizia rezultatelor căutării sau pe asigurarea faptului că înregistrările care revin sunt relevante, chiar dacă sunt mai puține.

Căutarea prin cuvinte cheie ca fiind benefică pentru interogările de la cap

Din acest motiv, căutarea prin cuvinte cheie are rezultate foarte bune pentru interogările principale: acele interogări care sunt cele mai populare.

Interogările principale tind să fie mai scurte și sunt, de asemenea, mai ușor de optimizat. Aceasta înseamnă că, dacă, din orice motiv, un cuvânt cheie nu se potrivește cu textul potrivit dintr-o înregistrare, este adesea prins prin analize și puteți adăuga un sinonim .

Deoarece căutarea prin cuvinte cheie funcționează cel mai bine pentru interogările cap și căutarea vectorială funcționează cel mai bine pentru interogările cu coadă lungă, cele două funcționează cel mai bine împreună.

Aceasta este cunoscută sub numele de căutare hibridă.

Căutarea hibridă este atunci când un motor de căutare utilizează atât căutarea prin cuvinte cheie, cât și căutarea vectorială pentru o singură interogare și clasifică corect înregistrările, indiferent de abordarea de căutare care le-a generat.

Clasificarea înregistrărilor în sursele de căutare

Clasificarea înregistrărilor care provin din două surse diferite nu este ușoară.

Cele două abordări au, prin însăși natura lor, moduri diferite de a nota recorduri.

Căutarea vectorială va returna un scor, în timp ce unele motoare bazate pe cuvinte cheie nu. Chiar dacă motoarele bazate pe cuvinte cheie returnează un scor, nu există nicio garanție că cele două scoruri sunt echivalente.

Dacă scorurile nu sunt echivalente, atunci nu puteți spune că un scor de 0,8 din motorul de cuvinte cheie este mai relevant decât un scor de 0,79 din motorul vectorial.

O altă alternativă ar fi să rulați toate rezultatele prin scorarea fie a motorului vectorial, fie a motorului de cuvinte cheie.

Acest lucru are avantajul de a obține rechemarea suplimentară de la motorul vectorial, dar are și unele dezavantaje. Acele rezultate suplimentare rechemate care provin din motorul vectorial nu vor fi evaluate ca relevante dintr-un scor de cuvinte cheie, altfel ar fi apărut deja în setul de rezultate.

Alternativ, puteți rula toate rezultatele – cuvânt cheie sau altfel – prin scoring vectorial, dar acest lucru este lent și costisitor.

Căutare vectorială ca alternativă

De aceea, unele motoare de căutare nici măcar nu încearcă să le combină pe cele două, ci vor afișa întotdeauna rezultatele cuvintelor cheie în primul rând, iar apoi rezultatele vectoriale în al doilea rând.

Gândirea aici este că, dacă o căutare returnează zero sau puține rezultate, atunci puteți reveni la rezultatele vectoriale.

Rețineți că căutarea vectorială este orientată spre îmbunătățirea reamintirii sau găsirea mai multor rezultate și, prin urmare, poate găsi rezultate relevante pe care nu le-a găsit căutarea prin cuvinte cheie.

Acesta este o soluție decentă, dar nu este viitorul căutării hibride adevărate.

Căutarea hibridă adevărată va clasifica mai multe surse de căutare diferite în același set de rezultate, creând un scor care este comparabil în diferite surse.

Există multe cercetări în această abordare astăzi, dar puțini o fac bine și își oferă motorul public.

Deci, ce înseamnă asta pentru tine?

În acest moment, cel mai bun lucru pe care îl poți face este probabil să stai bine și să fii la curent cu ceea ce se întâmplă în industrie.

Căutarea hibridă bazată pe vector și pe cuvinte cheie va veni în următorii ani și va fi disponibilă pentru persoanele fără echipe de știință a datelor.

Între timp, căutarea prin cuvinte cheie este încă valoroasă și va fi îmbunătățită doar atunci când căutarea vectorială este introdusă mai târziu.

Mai multe resurse:

  • Căutare semantică: Cum funcționează și cui i se adresează
  • Cum funcționează NLP și NLU pentru căutarea semantică
  • Cum funcționează motoarele de căutare

Imagine prezentată: pluie_r/Shutterstock