Microsoft åpnet vektorsøkebiblioteket som ble brukt i Bing

Microsoft опубликовала maskinlæringsbibliotekets kildekoder SPTAG (Space Partition Tree And Graph) med implementering av den omtrentlige algoritmen nærmeste nabosøk. Bibliotek utviklet i forskningsavdelingen til Microsoft Research og utviklingssenteret for søketeknologi (Microsoft Search Technology Center). I praksis brukes SPTAG av Bing-søkemotoren for å bestemme de mest relevante resultatene basert på konteksten til søkene. Koden er skrevet i C++ og distribuert av under MIT-lisens. Bygg for Linux og Windows støttes. Det er en binding for Python-språket.

Til tross for at ideen om å bruke vektorlagring i søkemotorer har flytet rundt i ganske lang tid, er implementeringen i praksis hemmet av den høye ressursintensiteten til operasjoner med vektorer og skalerbarhetsbegrensninger. Ved å kombinere dype maskinlæringsmetoder med omtrentlige nærmeste nabosøkealgoritmer har det gjort det mulig å bringe ytelsen og skalerbarheten til vektorsystemer til et nivå som er akseptabelt for store søkemotorer. For eksempel, i Bing, for en vektorindeks på over 150 milliarder vektorer, er tiden for å hente de mest relevante resultatene innenfor 8 ms.

Biblioteket inkluderer verktøy for å bygge en indeks og organisere vektorsøk, samt et sett med verktøy for å vedlikeholde et distribuert nettsøksystem som dekker svært store samlinger av vektorer. Tilbudt følgende moduler: indeksbygger for indeksering, søker for søk ved hjelp av en indeks fordelt i en klynge av flere noder, server for å kjøre behandlere på noder, Aggregator for å kombinere flere servere til én, og klient for å sende spørringer. Inkludering av nye vektorer i indeksen og sletting av vektorer er støttet.

Biblioteket innebærer at dataene som behandles og presenteres i samlingen er formatert i form av relaterte vektorer som kan sammenlignes basert på Euklidisk (L2) eller kosinus avstander Søket returnerer vektorer hvis avstand mellom dem og den opprinnelige vektoren er minimal. SPTAG gir to metoder for å organisere vektorrom: SPTAG-KDT (K-dimensjonalt tre (kd-tre) Og relativ nabolagsgraf) og SPTAG-BKT (k-betyr tre (k-betyr tre og relativ nabolagsgraf). Den første metoden krever mindre ressurser når du arbeider med indeksen, og den andre viser høyere nøyaktighet av søkeresultater for svært store samlinger av vektorer.

Samtidig er vektorsøk ikke begrenset til tekst og kan brukes på multimedieinformasjon og bilder, så vel som i systemer for automatisk generering av anbefalinger. For eksempel implementerte en av prototypene basert på PyTorch-rammeverket et vektorsystem for søk basert på likheten til objekter i bilder, bygget ved hjelp av data fra flere referansesamlinger med bilder av dyr, katter og hunder, som ble konvertert til sett med vektorer . Når et innkommende bilde mottas for søk, konverteres det ved hjelp av en maskinlæringsmodell til en vektor, basert på hvilken de mest like vektorene velges fra indeksen ved hjelp av SPTAG-algoritmen og de tilknyttede bildene returneres som et resultat.

Kilde: opennet.ru

Legg til en kommentar