Sari la conținut

O introducere în căutarea vectorială pentru dezvoltatori

Sursa: bmmagazine.co.uk

Lectură: 6 min
O introducere în căutarea vectorială pentru dezvoltatori

Cu toții iubim confortul unui motor de căutare. Cu toate acestea, dacă sunteți un dezvoltator sau cineva care lucrează cu date în mod regulat, poate fi frustrant atunci când trebuie să treceți prin cercuri doar pentru a obține rezultate.

Motoarele de căutare sunt foarte bune în a găsi lucruri pe baza interogărilor de text și a cuvintelor cheie, dar dacă ar exista o altă cale? Ce-ar fi dacă am putea să ne organizăm datele mai mult ca și cum ființele umane își organizează gândurile?

Căutarea vectorială este un tip de căutare care returnează cele mai apropiate rezultate de o anumită interogare. Este diferită de căutarea tradițională deoarece, în spațiul vectorial, fiecare element are asociată o listă de atribute (vectori) și fiecare vector reprezintă un anumit aspect al unui obiect. Acest lucru vă permite să găsiți obiecte similare pe baza atributelor lor, mai degrabă decât pe baza numelor sau a conținutului textului. Spațiul vectorial are multe utilizări, inclusiv găsirea celor mai apropiate corespondențe cu o interogare atunci când se caută imagini sau videoclipuri pe YouTube sau sarcini Amazon Mechanical Turk, cum ar fi etichetarea imaginilor cu cuvinte-cheie pentru sistemele de învățare automată, cum ar fi Google Photos sau Cloud Vision API

Înțelegerea căutării vectoriale și a modului în care funcționează?

Căutarea vectorială este un nou mod de căutare, dar nu este atât de diferită de căutarea tradițională. În căutarea vectorială, căutați obiecte care corespund unui set de criterii. Acesta poate fi orice, de la „găsiți-mi toate cărțile scrise de autorul X” sau „vreau să văd toate restaurantele pe o rază de 16 km de casa mea”.

În căutarea tradițională, folosim cuvinte ca primă linie de atac – și de multe ori aceste cuvinte nu ne spun suficient despre ceea ce dorim de fapt. De exemplu: Dacă scriu în Google „care este cel mai bun restaurant din San Francisco?” voi primi rezultate care sunt bune, dar nu neapărat grozave (pentru că nu au fost concepute special pentru mine). Cu toate acestea, cu ajutorul căutării vectoriale, putem folosi informații suplimentare, cum ar fi datele privind locația sau preferințele personale, atunci când ne construim lista de rezultate – și acest lucru le face mult mai precise!

Diferența dintre căutarea tradițională și cea vectorială

Căutarea vectorială este un nou mod de căutare. Este mai eficient, mai precis și consumă mai puțină energie decât căutarea tradițională.

Avantajele unei baze de date vectoriale

Căutarea vectorială este mai flexibilă decât căutarea tradițională. Într-o bază de date vectoriale, puteți utiliza aceeași interogare pentru a găsi elemente similare și elemente care sunt similare cu un anumit element de interogare. Acest lucru înseamnă că nu trebuie să efectuați mai multe interogări dacă doriți ambele tipuri de rezultate; dacă datele dvs. sunt organizate în vectori și stocate într-o bază de date vectoriale, atunci toate aceste căutări pot fi efectuate cu o singură interogare!

Această flexibilitate are un cost: pentru ca bazele de date vectoriale să funcționeze bine cu complexitatea lor suplimentară, au nevoie de mai multă memorie decât bazele de date obișnuite – dar acest lucru nu ar trebui să fie o problemă prea mare atâta timp cât lucrați cu seturi de date relativ mici (ceea ce ar trebui să fie valabil pentru majoritatea aplicațiilor).

Provocările bazelor de date tradiționale

Modelul tradițional de baze de date nu este bine adaptat la seturile de date cu dimensiuni mari. După cum am menționat în secțiunea anterioară, este dificil să se indexeze și să se efectueze căutări în toate dimensiunile în același timp.

Bazele de date tradiționale au, de asemenea, probleme cu recuperarea eficientă a datelor atunci când aveți nevoie de ele. Atunci când citiți o carte, nu doriți să cunoașteți fiecare cuvânt din ea; le doriți doar pe cele care sunt relevante pentru interogarea dumneavoastră! O bază de date tradițională nu ar avea cum să știe câte cuvinte există în total și, prin urmare, nu ar putea filtra în mod inteligent acele cuvinte irelevante înainte de a le trimite înapoi ca rezultate – ar returna pur și simplu toate documentele care conțin un anumit cuvânt sau o anumită frază (chiar dacă ar fi doar unul).

Căutarea vectorială în acțiune

Căutarea vectorială este o formă puternică de regăsire a datelor care poate fi utilizată pentru o varietate de aplicații, inclusiv pentru regăsirea informațiilor și analiza de text. Este deosebit de utilă atunci când doriți să găsiți cea mai apropiată potrivire de un anumit vector. Un bun exemplu este găsirea numărului de telefon al unei persoane pornind de la numele acesteia: dacă știți că „John Smith” are numărul de telefon 555-5555, atunci puteți cere toate persoanele ale căror nume sunt cele mai apropiate de „John Smith” (sau care diferă cel mai puțin de acesta) și puteți obține și numerele de telefon corespunzătoare.

Căutarea vectorială este, de asemenea, utilă pentru a găsi documente similare în cadrul unor colecții mari de documente sau imagini; acest proces este cunoscut sub numele de regăsire a documentelor, respectiv de regăsire a imaginilor. În acest caz, nu suntem interesați de potriviri exacte, ci mai degrabă de documente/imagini care par să provină din aceeași sursă (sau aceleași surse).

Alegerea numărului corect de dimensiuni

Numărul de dimensiuni de care aveți nevoie depinde de problema pe care încercați să o rezolvați. O bună regulă de bază este de a alege un număr care să surprindă structura de bază a datelor dumneavoastră, fără a fi prea mare. De exemplu, dacă aveți un set de date cu 100 de elemente și fiecare element conține trei atribute (de exemplu, x1, x2, x3), atunci a avea o dimensiune pentru fiecare atribut ar fi prea mult, deoarece nu există suficiente dimensiuni pentru toate cele 100 de elemente. Pe de altă parte, dacă ați lucra cu și mai multe informații despre fiecare element – cum ar fi locația sa pe Pământ – atunci adăugarea unei alte dimensiuni ar putea ajuta la captarea acestor relații mai bine decât ar face-o două sau trei singure!

Când să folosiți căutarea vectorială față de căutarea tradițională

Căutarea vectorială este un instrument puternic care poate fi utilizat într-o varietate de situații. Este deosebit de utilă atunci când trebuie să găsiți obiecte sau grupuri de obiecte similare în cadrul setului de date, dar este utilă și pentru a găsi potriviri exacte atunci când nu aveți suficiente date pentru a justifica utilizarea căutării în text complet.

O bună regulă de bază este de a utiliza căutarea vectorială ori de câte ori este posibil – vă va economisi timp și bani!

Căutarea vectorială poate debloca o gamă complet nouă de posibilități pentru dezvoltatori.

Căutarea vectorială este un nou tip de bază de date care poate fi utilizată pentru a găsi lucruri care sunt similare, dar nu identice. Acest lucru o face mult mai flexibilă decât bazele de date tradiționale, care sunt optimizate pentru potriviri exacte.

În acest articol, voi explica cum funcționează căutarea vectorială și voi oferi câteva exemple de utilizare a acesteia în propriile dumneavoastră aplicații.

Concluzie

Sperăm că acest articol v-a oferit o mai bună înțelegere a căutării vectoriale și v-a ajutat să decideți dacă este potrivită pentru proiectul dumneavoastră. Dacă da, vă încurajăm să încercați biblioteca noastră open-source pentru căutare vectorială pe GitHub!

Distribuie

Corina Popescu scrie la rubricile Externe, Politică și Actual de pe news24.ro. Toate articolele →

Citește și

Parteneri Articole recomandate din rețeaua noastră