Microsoft har öppnat koden för biblioteket för vektorsökning som används i Bing

Microsoft Företaget publicerade ursprungstexter från maskininlärningsbiblioteket SPTAG (Space Partition Tree And Graph) med implementation av algoritmen för approximativ närmaste granne. Biblioteket har utvecklats i forskningsdivisionen Microsoft Research och utvecklingscentret för sökteknologier (Microsoft Search Technology Center). I praktiken används SPTAG i sökmotorn Bing för att bestämma de mest relevanta resultaten med hänsyn till kontexten av sökfrågor. Koden är skriven i C++ och sprids under MIT-licens. Stöd för byggnation för Linux och Windows finns. Det finns en bindning för Python.

Trots att idéerna om att använda vektorlager i sökmotorer har funnits länge, hindras implementeringen i praktiken av den stora resursförbrukningen vid vektoroperationer och begränsningar i skalbarheten. Kombinationen av metoder för djupinlärning med algoritmer för approximativ närmaste granne har gjort det möjligt att nå acceptabel prestanda och skalbarhet för vektorsystem i stora sökmotorer. Till exempel, i Bing för ett vektorindex med mer än 150 miljarder vektorer tar det mindre än 8 ms att hämta de mest relevanta resultaten.

Biblioteket inkluderar verktyg för att bygga index och organisera vektorers sökning, samt en uppsättning verktyg för att stödja ett distribuerat system för online-sökning som omfattar mycket stora samlingar av vektorer. Följande moduler erbjuds: index builder för indexering, searcher för sökning med hjälp av indexet distribuerat i en kluster av flera noder, server för att köra processorer på noder, Aggregator för att sammanfoga flera servrar till en enhet och klient för att skicka förfrågningar. Stöd finns för att inkludera nya vektorer i indexet och ta bort vektorer i realtid.

Biblioteket förutsätter att de bearbetade och presenterade data i samlingen är utformade som relaterade vektorer som kan jämföras baserat på euclidean (L2) eller cosinus avstånd. Vid en sökfråga returneras vektorer vars avstånd till den ursprungliga vektorn är minimalt. I SPTAG tillhandahålls två metoder för organisering av vektorutrymmet: SPTAG-KDT (K-dimensionellt träd (kd-tree) och graf av relativa grannskap) och SPTAG-BKT (k-medelträd (k-means tree och grafen av relativa grannskap). Den första metoden kräver färre resurser vid arbete med index, medan den andra uppvisar högre noggrannhet i sökresultaten vid mycket stora samlingar av vektorer.

Vektor-sökning begränsas inte till text och kan tillämpas på multimediainformation och bilder, liksom i system för automatisk rekommendationsgenerering. Till exempel, i en av prototyperna baserade på PyTorch-ramverket implementerades ett vektorsystem för sökning baserat på objektens likhet i bilder, byggt med data från flera referenssamlingar med bilder på djur, katter och hundar, som omvandlades till uppsättningar av vektorer. När en ingående bild ska sökas omvandlas den med hjälp av en maskininlärningsmodell till en vektor, baserat på vilken algoritmen SPTAG från indexet väljer de mest liknande vektorerna och resultatet returnerar de relaterade bilderna.

Källa: opennet.ru

Köp pålitlig webbhotell med DDoS-skydd, VPS VDS-servrar 🔥 Köp pålitlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster