Microsoft öppnade vektorsökningsbiblioteket som används i Bing

Microsoft Company опубликовала maskininlärningsbibliotekets källkoder SPTAG (Space Partition Tree And Graph) med implementering av den ungefärliga algoritmen närmaste granne sök. Bibliotek tagit fram i forskningsavdelningen för Microsoft Research och utvecklingscentret för sökteknologi (Microsoft Search Technology Center). I praktiken används SPTAG av Bings sökmotor för att bestämma de mest relevanta resultaten baserat på sökfrågors sammanhang. Koden är skriven i C++ och levererad av under MIT-licens. Bygg för Linux och Windows stöds. Det finns en bindning för Python-språket.

Trots det faktum att idén om att använda vektorlagring i sökmotorer har svävat runt ganska länge, hämmas implementeringen i praktiken av den höga resursintensiteten hos operationer med vektorer och skalbarhetsbegränsningar. Genom att kombinera djupa maskininlärningsmetoder med ungefärliga algoritmer för närmaste granne har det gjort det möjligt att få prestanda och skalbarhet hos vektorsystem till en nivå som är acceptabel för stora sökmotorer. Till exempel, i Bing, för ett vektorindex på över 150 miljarder vektorer, är tiden för att hämta de mest relevanta resultaten inom 8 ms.

Biblioteket innehåller verktyg för att bygga ett index och organisera vektorsökningar, samt en uppsättning verktyg för att underhålla ett distribuerat söksystem online som täcker mycket stora samlingar av vektorer. Erbjuds följande moduler: indexbyggare för indexering, sökare för sökning med ett index fördelat i ett kluster av flera noder, server för att köra hanterare på noder, Aggregator för att kombinera flera servrar till en och klient för att skicka frågor. Inkludering av nya vektorer i indexet och radering av vektorer i farten stöds.

Biblioteket innebär att data som behandlas och presenteras i samlingen formateras i form av relaterade vektorer som kan jämföras utifrån euklidisk (L2) eller cosinus avstånd Sökfrågan returnerar vektorer vars avstånd mellan dem och den ursprungliga vektorn är minimalt. SPTAG tillhandahåller två metoder för att organisera vektorrymden: SPTAG-KDT (K-dimensionellt träd (kd-träd) Och relativ grannskapsgraf) och SPTAG-BKT (k-betyder träd (k- betyder träd och relativ grannskapsgraf). Den första metoden kräver mindre resurser när man arbetar med indexet, och den andra visar högre noggrannhet av sökresultat för mycket stora samlingar av vektorer.

Samtidigt är vektorsökning inte begränsad till text utan kan appliceras på multimediainformation och bilder, såväl som i system för automatisk generering av rekommendationer. Till exempel implementerade en av prototyperna baserade på PyTorch-ramverket ett vektorsystem för sökning baserat på likheten mellan objekt i bilder, byggt med hjälp av data från flera referenssamlingar med bilder av djur, katter och hundar, som omvandlades till uppsättningar av vektorer. . När en inkommande bild tas emot för sökning omvandlas den med hjälp av en maskininlärningsmodell till en vektor, baserat på vilken de mest lika vektorerna väljs från indexet med hjälp av SPTAG-algoritmen och de associerade bilderna returneras som ett resultat.

Källa: opennet.ru

Lägg en kommentar