Microsoft sumber terbuka perpustakaan carian vektor yang digunakan dalam Bing

Microsoft ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π»Π° kod sumber perpustakaan pembelajaran mesin SPTAG (Pokok Pemisahan Ruang Dan Graf) dengan pelaksanaan algoritma anggaran carian jiran terdekat. Perpustakaan dibangunkan di bahagian penyelidikan Microsoft Research dan pusat pembangunan teknologi carian (Pusat Teknologi Carian Microsoft). Dalam amalan, SPTAG digunakan oleh enjin carian Bing untuk menentukan hasil yang paling relevan berdasarkan konteks pertanyaan carian. Kod ini ditulis dalam C++ dan diedarkan oleh di bawah lesen MIT. Bina untuk Linux dan Windows disokong. Terdapat pengikatan untuk bahasa Python.

Walaupun pada hakikatnya idea menggunakan storan vektor dalam enjin carian telah berlegar-legar sejak sekian lama, pada praktiknya, pelaksanaannya dihalang oleh keamatan sumber yang tinggi bagi operasi dengan vektor dan had kebolehskalaan. Menggabungkan kaedah pembelajaran mesin mendalam dengan anggaran algoritma carian jiran terdekat telah memungkinkan untuk membawa prestasi dan kebolehskalaan sistem vektor ke tahap yang boleh diterima untuk enjin carian yang besar. Contohnya, dalam Bing, untuk indeks vektor lebih 150 bilion vektor, masa untuk mendapatkan hasil yang paling berkaitan ialah dalam masa 8 ms.

Perpustakaan termasuk alat untuk membina indeks dan mengatur carian vektor, serta satu set alat untuk mengekalkan sistem carian dalam talian teragih yang meliputi koleksi vektor yang sangat besar. Ditawarkan modul berikut: pembina indeks untuk pengindeksan, pencari untuk mencari menggunakan indeks yang diedarkan dalam kelompok beberapa nod, pelayan untuk mengendalikan pengendali pada nod, Agregator untuk menggabungkan beberapa pelayan menjadi satu, dan klien untuk menghantar pertanyaan. Kemasukan vektor baharu ke dalam indeks dan pemadaman vektor dengan cepat disokong.

Perpustakaan membayangkan bahawa data yang diproses dan dipersembahkan dalam koleksi diformatkan dalam bentuk vektor berkaitan yang boleh dibandingkan berdasarkan Euclidean (L2) atau kosinus jarak Pertanyaan carian mengembalikan vektor yang jaraknya antara mereka dan vektor asal adalah minimum. SPTAG menyediakan dua kaedah untuk mengatur ruang vektor: SPTAG-KDT (pokok dimensi K (pokok kd) Dan graf kejiranan relatif) dan SPTAG-BKT (pokok k-means (k-bermaksud pokok dan graf kejiranan relatif). Kaedah pertama memerlukan kurang sumber apabila bekerja dengan indeks, dan kaedah kedua menunjukkan ketepatan hasil carian yang lebih tinggi untuk koleksi vektor yang sangat besar.

Pada masa yang sama, carian vektor tidak terhad kepada teks dan boleh digunakan pada maklumat dan imej multimedia, serta dalam sistem untuk menjana cadangan secara automatik. Sebagai contoh, salah satu prototaip berdasarkan rangka kerja PyTorch melaksanakan sistem vektor untuk mencari berdasarkan persamaan objek dalam imej, dibina menggunakan data daripada beberapa koleksi rujukan dengan imej haiwan, kucing dan anjing, yang ditukarkan kepada set vektor . Apabila imej masuk diterima untuk carian, ia ditukar menggunakan model pembelajaran mesin kepada vektor, berdasarkan vektor yang paling serupa dipilih daripada indeks menggunakan algoritma SPTAG dan imej yang berkaitan dikembalikan sebagai hasilnya.

Sumber: opennet.ru

Tambah komen