Microsoft har åbnet koden til vektorsøgningsbiblioteket, der bruges af Bing

Microsoft опубликовала maskinlæringsbibliotekets kildekoder SPTAG (Space Partition Tree And Graph) med implementering af den omtrentlige algoritme nærmeste nabosøgning. Bibliotek udviklede sig i forskningsafdelingen af ​​Microsoft Research og søgeteknologiudviklingscentret (Microsoft Search Technology Center). I praksis bruges SPTAG af Bing-søgemaskinen til at bestemme de mest relevante resultater baseret på konteksten af ​​søgeforespørgsler. Koden er skrevet i C++ og distribueret af under MIT-licens. Build til Linux og Windows understøttes. Der er en binding for Python-sproget.

På trods af at ideen om at bruge vektorlagring i søgemaskiner har svævet rundt i ret lang tid, er implementeringen i praksis hæmmet af den høje ressourceintensitet af operationer med vektorer og skalerbarhedsbegrænsninger. Kombinationen af ​​dybe maskinlæringsmetoder med omtrentlige nærmeste nabosøgealgoritmer har gjort det muligt at bringe vektorsystemernes ydeevne og skalerbarhed til et niveau, der er acceptabelt for store søgemaskiner. For eksempel, i Bing, for et vektorindeks på over 150 milliarder vektorer, er tiden til at hente de mest relevante resultater inden for 8 ms.

Biblioteket indeholder værktøjer til at opbygge et indeks og organisere vektorsøgninger, samt et sæt værktøjer til at vedligeholde et distribueret online søgesystem, der dækker meget store samlinger af vektorer. Tilbydes følgende moduler: indeksbygger til indeksering, søgemaskine til søgning ved hjælp af et indeks fordelt i en klynge af flere noder, server til at køre handlere på noder, Aggregator til at kombinere flere servere til én og klient til afsendelse af forespørgsler. Inkludering af nye vektorer i indekset og sletning af vektorer i farten understøttes.

Biblioteket indebærer, at de data, der behandles og præsenteres i samlingen, er formateret i form af relaterede vektorer, der kan sammenlignes ud fra Euklidisk (L2) eller cosinus afstande Søgeforespørgslen returnerer vektorer, hvis afstand mellem dem og den oprindelige vektor er minimal. SPTAG giver to metoder til at organisere vektorrum: SPTAG-KDT (K-dimensionelt træ (kd-træ) Og relativ naboskabsgraf) og SPTAG-BKT (k-betyder træ (k-betyder træ og relativ nabolagsgraf). Den første metode kræver færre ressourcer, når man arbejder med indekset, og den anden viser højere nøjagtighed af søgeresultater for meget store samlinger af vektorer.

Samtidig er vektorsøgning ikke begrænset til tekst og kan anvendes på multimedieinformation og billeder såvel som i systemer til automatisk generering af anbefalinger. For eksempel implementerede en af ​​prototyperne baseret på PyTorch-rammeværket et vektorsystem til søgning baseret på ligheden mellem objekter i billeder, bygget ved hjælp af data fra flere referencesamlinger med billeder af dyr, katte og hunde, som blev konverteret til sæt af vektorer . Når et indkommende billede modtages til søgning, konverteres det ved hjælp af en maskinlæringsmodel til en vektor, baseret på hvilken de mest lignende vektorer vælges fra indekset ved hjælp af SPTAG-algoritmen, og de tilknyttede billeder returneres som et resultat.

Kilde: opennet.ru

Tilføj en kommentar