Microsoft open sourced the vector search library เบ—เบตเปˆเปƒเบŠเป‰เปƒเบ™ Bing

เบšเปเบฅเบดเบชเบฑเบ” Microsoft เบˆเบฑเบ”เบžเบตเบกเบกเบฒ เบฅเบฐเบซเบฑเบ”เปเบซเบผเปˆเบ‡เบซเป‰เบญเบ‡เบชเบฐเปเบธเบ”เบเบฒเบ™เบฎเบฝเบ™เบฎเบนเป‰เป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบ SPTAG (Space Partition Tree And Graph) เบ”เป‰เบงเบเบเบฒเบ™เบˆเบฑเบ”เบ•เบฑเป‰เบ‡เบ›เบฐเบ•เบดเบšเบฑเบ” algorithm เบ›เบฐเบกเบฒเบ™ เบ„เบปเป‰เบ™เบซเบฒเป€เบžเบทเปˆเบญเบ™เบšเป‰เบฒเบ™เบ—เบตเปˆเปƒเบเป‰เบ—เบตเปˆเบชเบธเบ”. เบซเปเบชเบฐเปเบธเบ” เบžเบฑเบ”เบ—เบฐเบ™เบฒ เปƒเบ™เบžเบฐเปเบ™เบเบเบฒเบ™เบ„เบปเป‰เบ™เบ„เบงเป‰เบฒเบ‚เบญเบ‡ Microsoft Research เปเบฅเบฐเบชเบนเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเป€เบ•เบฑเบเป‚เบ™เป‚เบฅเบขเบตเบ„เบปเป‰เบ™เบซเบฒ (Microsoft Search Technology Center). เปƒเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”, SPTAG เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป‚เบ”เบเป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบเบŠเบญเบเบซเบฒ Bing เป€เบžเบทเปˆเบญเบเปเบฒเบ™เบปเบ”เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบ—เบตเปˆเบชเบธเบ”เป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆเบชเบฐเบžเบฒเบšเบเบฒเบ™เบ‚เบญเบ‡เบ„เปเบฒเบ–เบฒเบกเบ„เบปเป‰เบ™เบซเบฒ. เบฅเบฐเบซเบฑเบ”เบ–เบทเบเบ‚เบฝเบ™เป„เบงเป‰เปƒเบ™ C ++ เปเบฅเบฐ เปเบˆเบเบขเบฒเบเป‚เบ”เบ เบžเบฒเบเปƒเบ•เป‰เปƒเบšเบญเบฐเบ™เบธเบเบฒเบ” MIT. เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบชเปเบฒเบฅเบฑเบš Linux เปเบฅเบฐ Windows เปเบกเปˆเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™. เบกเบตเบเบฒเบ™เบœเบนเบเบกเบฑเบ”เบชเปเบฒเบฅเบฑเบšเบžเบฒเบชเบฒ Python.

เป€เบ–เบดเบ‡เบงเปˆเบฒเบˆเบฐเบกเบตเบ„เบงเบฒเบกเบˆเบดเบ‡เบ—เบตเปˆเบงเปˆเบฒเปเบ™เบงเบ„เบงเบฒเบกเบ„เบดเบ”เบ‚เบญเบ‡เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒ vector เปƒเบ™เป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบเบŠเบญเบเบซเบฒเป„เบ”เป‰เป€เบฅเบทเปˆเบญเบ™เบ›เบฐเบกเบฒเบ™เป€เบ›เบฑเบ™เป€เบงเบฅเบฒเบ”เบปเบ™เบ™เบฒเบ™, เปƒเบ™เบ—เบฒเบ‡เบ›เบฐเบ•เบดเบšเบฑเบ”, เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒเบ–เบทเบเบ‚เบฑเบ”เบ‚เบงเบฒเบ‡เป‚เบ”เบเบ„เบงเบฒเบกเป€เบ‚เบฑเป‰เบกเบ‚เบปเป‰เบ™เบ‚เบญเบ‡เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบชเบนเบ‡เบ‚เบญเบ‡เบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™เบ—เบตเปˆเบกเบต vectors เปเบฅเบฐเบ‚เปเป‰เบˆเปเบฒเบเบฑเบ” scalability. เบเบฒเบ™เบฅเบงเบกเป€เบญเบปเบฒเบงเบดเบ—เบตเบเบฒเบ™เบฎเบฝเบ™เบฎเบนเป‰เป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบเบขเปˆเบฒเบ‡เป€เบฅเบดเบเป€เบŠเบดเปˆเบ‡เบเบฑเบšเบงเบดเบ—เบตเบเบฒเบ™เบ„เบปเป‰เบ™เบซเบฒเปƒเบเป‰เบ„เบฝเบ‡เบ—เบตเปˆเปƒเบเป‰เบ„เบฝเบ‡เบ—เบตเปˆเบชเบธเบ”เป„เบ”เป‰เป€เบฎเบฑเบ”เปƒเบซเป‰เบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ—เบตเปˆเบˆเบฐเบ™เปเบฒเป€เบญเบปเบฒเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เปเบฅเบฐเบเบฒเบ™เบ‚เบฐเบซเบเบฒเบเบ‚เบญเบ‡เบฅเบฐเบšเบปเบš vector เปƒเบ™เบฅเบฐเบ”เบฑเบšเบ—เบตเปˆเบเบญเบกเบฎเบฑเบšเป„เบ”เป‰เบชเปเบฒเบฅเบฑเบšเป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบเบŠเบญเบเบซเบฒเบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆ. เบ•เบปเบงเบขเปˆเบฒเบ‡, เปƒเบ™ Bing, เบชเปเบฒเบฅเบฑเบšเบ”เบฑเบ”เบชเบฐเบ™เบต vector เบซเบผเบฒเบเบเบงเปˆเบฒ 150 เบ•เบทเป‰ vectors, เป€เบงเบฅเบฒเบ—เบตเปˆเบˆเบฐเป€เบญเบปเบฒเบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบ—เบตเปˆเบชเบธเบ”เปเบกเปˆเบ™เบžเบฒเบเปƒเบ™ 8 ms.

เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เบ›เบฐเบเบญเบšเบกเบตเป€เบ„เบทเปˆเบญเบ‡เบกเบทเปƒเบ™เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบ”เบฑเบ”เบชเบฐเบ™เบตเปเบฅเบฐเบเบฒเบ™เบˆเบฑเบ”เบฅเปเบฒเบ”เบฑเบšเบเบฒเบ™เบŠเบญเบเบซเบฒ vectors, เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเบŠเบธเบ”เบ‚เบญเบ‡เป€เบ„เบทเปˆเบญเบ‡เบกเบทเปƒเบ™เบเบฒเบ™เบฎเบฑเบเบชเบฒเบฅเบฐเบšเบปเบšเบเบฒเบ™เบ„เบปเป‰เบ™เบซเบฒเบญเบญเบ™เป„เบฅเบ™เปŒเบ—เบตเปˆเปเบˆเบเบขเบฒเบเบเบงเบกเป€เบญเบปเบฒเบเบฒเบ™เป€เบเบฑเบšเบเปเบฒ vectors เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆเบซเบผเบฒเบ. เบชเบฐเป€เปœเบตเปƒเบซเป‰ เป‚เบกเบ”เบนเบ™เบ•เปเปˆเป„เบ›เบ™เบตเป‰: เบ•เบปเบงเบชเป‰เบฒเบ‡เบ”เบฑเบ”เบชเบฐเบ™เบตเบชเปเบฒเบฅเบฑเบšเบ”เบฑเบ”เบชเบฐเบ™เบต, เบœเบนเป‰เบ„เบปเป‰เบ™เบซเบฒเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ„เบปเป‰เบ™เบซเบฒเป‚เบ”เบเปƒเบŠเป‰เบ”เบฑเบ”เบŠเบฐเบ™เบตเบ—เบตเปˆเปเบˆเบเบขเบฒเบเบขเบนเปˆเปƒเบ™เบเบธเปˆเบกเบ‚เบญเบ‡เบซเบผเบฒเบเป‚เบซเบ™เบ”, เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เปเบฅเปˆเบ™เบ•เบปเบงเบˆเบฑเบ”เบเบฒเบ™เปƒเบ™ nodes, Aggregator เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบฅเบงเบกเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบˆเปเบฒเบ™เบงเบ™เบซเบ™เบถเปˆเบ‡เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบซเบ™เบถเปˆเบ‡, เปเบฅเบฐเบฅเบนเบเบ„เป‰เบฒเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบชเบปเปˆเบ‡เบ„เปเบฒเบ–เบฒเบก. เบเบฒเบ™เบฅเบงเบกเป€เบญเบปเบฒ vectors เปƒเบซเบกเปˆเป€เบ‚เบปเป‰เบฒเปƒเบ™เบ”เบฑเบ”เบŠเบฐเบ™เบตเปเบฅเบฐเบเบฒเบ™เบฅเบถเบš vectors เปƒเบ™ fly เปเบกเปˆเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™.

เบซเปเบชเบฐเบกเบธเบ” เปเบฒเบ เบ„เบงเบฒเบกเบงเปˆเบฒเบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบ›เบธเบ‡เปเบ•เปˆเบ‡เปเบฅเบฐ เบ™เบณ เบชเบฐ เป€เปœเบต เปƒเบ™เบเบฒเบ™เป€เบเบฑเบš เบเบณ เปเบกเปˆเบ™เบ–เบทเบเบˆเบฑเบ”เปƒเบชเปˆเปƒเบ™เบฎเบนเบšเปเบšเบšเบ‚เบญเบ‡ vectors เบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบ›เบฝเบšเบ—เบฝเบšเป„เบ”เป‰เป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆ Euclidean (L2) เบซเบผเบท เป‚เบ„เบŠเบดเบ™ เป„เบฅเบเบฐเบ—เบฒเบ‡ เบ„เปเบฒเบ–เบฒเบกเบ„เบปเป‰เบ™เบซเบฒเบชเบปเปˆเบ‡เบ„เบทเบ™ vectors เบ—เบตเปˆเบกเบตเป„เบฅเบเบฐเบซเปˆเบฒเบ‡เบฅเบฐเบซเบงเปˆเบฒเบ‡เบžเบงเบเบกเบฑเบ™เปเบฅเบฐ vector เบ•เบปเป‰เบ™เบชเบฐเบšเบฑเบšเปเบกเปˆเบ™เบซเบ™เป‰เบญเบ. SPTAG เปƒเบซเป‰โ€‹เบชเบญเบ‡โ€‹เบงเบดโ€‹เบ—เบตโ€‹เบเบฒเบ™โ€‹เบˆเบฑเบ”โ€‹เบงเบฒเบ‡ vector space: SPTAG-KDT (K-dimensional tree (kd-เบ•เบปเป‰เบ™เป„เบกเป‰) เปเบฅเบฐ เป€เบชเบฑเป‰เบ™เบชเบฐเปเบ”เบ‡เบ—เบตเปˆเปƒเบเป‰เบ„เบฝเบ‡) เปเบฅเบฐ SPTAG-BKT (k-means tree (k เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเบ•เบปเป‰เบ™เป„เบกเป‰ เปเบฅเบฐเป€เบชเบฑเป‰เบ™เบชเบฐเปเบ”เบ‡เบ—เบตเปˆเปƒเบเป‰เบ„เบฝเบ‡). เบงเบดเบ—เบตเบเบฒเบ™เบ—เปเบฒเบญเบดเบ”เบฎเบฝเบเบฎเป‰เบญเบ‡เปƒเบซเป‰เบกเบตเบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบซเบ™เป‰เบญเบเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเบ”เบฑเบ”เบชเบฐเบ™เบต, เปเบฅเบฐเบ—เบตเบชเบญเบ‡เบชเบฐเปเบ”เบ‡เปƒเบซเป‰เป€เบซเบฑเบ™เบ„เบงเบฒเบกเบ–เบทเบเบ•เป‰เบญเบ‡เบ‚เบญเบ‡เบœเบปเบ™เบเบฒเบ™เบ„เบปเป‰เบ™เบซเบฒเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบฅเบงเบšเบฅเบงเบก vectors เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆเบซเบผเบฒเบ.

เปƒเบ™เป€เบงเบฅเบฒเบ”เบฝเบงเบเบฑเบ™, เบเบฒเบ™เบ„เบปเป‰เบ™เบซเบฒ vector เบšเปเปˆเบˆเปเบฒเบเบฑเบ”เบ‚เปเป‰เบ„เบงเบฒเบกเปเบฅเบฐเบชเบฒเบกเบฒเบ”เบ™เปเบฒเปƒเบŠเป‰เบเบฑเบšเบ‚เปเป‰เบกเบนเบ™เบกเบฑเบ™เบ•เบดเบกเบตเป€เบ”เบเปเบฅเบฐเบฎเบนเบšเบžเบฒเบš, เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเบฅเบฐเบšเบปเบšเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบชเป‰เบฒเบ‡เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”. เบ•เบปเบงเบขเปˆเบฒเบ‡, เบซเบ™เบถเปˆเบ‡เปƒเบ™เบ•เบปเบงเปเบšเบšเบ—เบตเปˆเบญเบตเบ‡เปƒเบชเปˆเบเบญเบš PyTorch เป„เบ”เป‰เบ›เบฐเบ•เบดเบšเบฑเบ”เบฅเบฐเบšเบปเบš vector เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ„เบปเป‰เบ™เบซเบฒเป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆเบ„เบงเบฒเบกเบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™เบ‚เบญเบ‡เบงเบฑเบ”เบ–เบธเปƒเบ™เบฎเบนเบšเบžเบฒเบš, เบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เป‚เบ”เบเบ™เปเบฒเปƒเบŠเป‰เบ‚เปเป‰เบกเบนเบ™เบˆเบฒเบเบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเบ‚เปเป‰เบกเบนเบ™เบญเป‰เบฒเบ‡เบญเบตเบ‡เบซเบผเบฒเบเบเบฑเบšเบฎเบนเบšเบžเบฒเบšเบ‚เบญเบ‡เบชเบฑเบ”, เปเบกเบงเปเบฅเบฐเบซเบกเบฒ, เป€เบŠเบดเปˆเบ‡เบ–เบทเบเบ›เปˆเบฝเบ™เป€เบ›เบฑเบ™ vectors. . เป€เบกเบทเปˆเบญเบฎเบนเบšเบžเบฒเบšเบ—เบตเปˆเป€เบ‚เบปเป‰เบฒเบกเบฒเปเบกเปˆเบ™เป„เบ”เป‰เบฎเบฑเบšเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบŠเบญเบเบซเบฒ, เบกเบฑเบ™เบ–เบทเบเบ›เปˆเบฝเบ™เป‚เบ”เบเปƒเบŠเป‰เบฎเบนเบšเปเบšเบšเบเบฒเบ™เบฎเบฝเบ™เบฎเบนเป‰เป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบเป€เบ›เบฑเบ™ vector, เป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆ vectors เบ—เบตเปˆเบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™เบ—เบตเปˆเบชเบธเบ”เบ–เบทเบเป€เบฅเบทเบญเบเบˆเบฒเบเบ”เบฑเบ”เบŠเบฐเบ™เบตเป‚เบ”เบเปƒเบŠเป‰ SPTAG algorithm เปเบฅเบฐเบฎเบนเบšเบžเบฒเบšเบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบ–เบทเบเบชเบปเปˆเบ‡เบ„เบทเบ™เป€เบ›เบฑเบ™เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบš.

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: opennet.ru

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™