Microsoft originale tekster fra maskinlæringsbiblioteket (Space Partition Tree And Graph) med implementering af algoritmen til tilnærmet . Biblioteket i Microsoft Researchs forskningsenhed og i teknologiudviklingscentret for søgning (Microsoft Search Technology Center). I praksis anvendes SPTAG i søgemaskinen Bing til at bestemme de mest relevante resultater under hensyntagen til konteksten af søgeforespørgsler. Koden er skrevet i C++ og under MIT-licensen. Der tilbydes bygning for Linux og Windows. Der er en binding til Python.
Selvom ideerne om at anvende vektorlager i søgemaskiner har eksisteret i et stykke tid, er implementeringen i praksis blevet hindret af den store ressourcekrav til operationer med vektorer og begrænsninger i skalerbarhed. Kombinationen af metoder fra dyb læring med algoritmer til tilnærmet nærmeste nabo søgning har gjort det muligt at bringe ydeevnen og skalerbarheden i vektorsystemer op på et niveau, der er acceptabelt for store søgemaskiner. For eksempel, i Bing, for et vektorreferencelager på over 150 milliarder vektorer, ligger tiden for at hente de mest relevante resultater inden for 8 ms.
Biblioteket inkluderer værktøjer til opbygning af indekser og organisering af søgning i vektorer samt et sæt værktøjer til vedligeholdelse af et distribueret online-søgesystem, der dækker meget store samlinger af vektorer. følgende moduler: index builder til indeksering, searcher til søgning ved hjælp af indekset, distribueret i et klynge af flere noder, server til at køre håndterere på noderne, Aggregator til at kombinere flere servere til et hele og klient til at sende forespørgsler. Der understøttes tilføjelse af nye vektorer til indekset og fjernelse af vektorer on-the-fly.
Biblioteket forudsætter, at de behandlede og præsenterede data i samlingen er opstillet som relaterede vektorer, der kan sammenlignes på basis af (L2) eller afstande. Ved en søgeforespørgsel returneres vektorer, hvis afstand til den originale vektor er minimal. I SPTAG tilbydes der to metoder til organisering af vektorplads: SPTAG-KDT (K-dimensionelt træ () og ) og SPTAG-BKT (k-centroid træ ( og og grafik over relative nærheder). Den første metode kræver færre ressourcer, når den arbejder med indekset, mens den anden viser en højere præcision i søgningerne ved meget store samlinger af vektorer.
Vektor-søgning er ikke begrænset til tekst og kan også bruges til multimedieinformation og billeder samt i systemer til automatisk generering af anbefalinger. For eksempel blev der i en prototype baseret på PyTorch-rammen implementeret et vektorsystem til søgning baseret på lighed mellem objekter i billeder, konstrueret ved hjælp af data fra flere referencekollektioner med billeder af dyr, katte og hunde, der blev konverteret til vektorsæt. Når et indkommende billede skal søges, omdannes det ved hjælp af en maskinlæringsmodel til en vektor, baseret på hvilken algoritmen SPTAG vælger de mest lignende vektorer fra indekset, og som resultat returneres de associerede billeder.
Kilde: opennet.ru
