Kode Dice.com untuk mengimplementasikan ide-ide yang dibahas dalam pembicaraan berikut:
Ini memperluas pekerjaan saya sebelumnya tentang 'Pencarian Konseptual' yang dapat ditemukan di sini - https://github.com/DiceTechJobs/ConceptualSearch (termasuk slide dan tautan video). Dalam pembicaraan ini, saya menyajikan sejumlah pendekatan berbeda untuk mencari vektor dalam skala besar menggunakan indeks terbalik. Ini mengimplementasikan pendekatan untuk Perkiraan Pencarian Tetangga Terdekat k-terdekat termasuk:
dan menjelaskan bagaimana ide-ide ini dapat diterapkan dan ditanyakan secara efisien dalam indeks terbalik.
PEMBARUAN: Setelah berbicara dengan Trey Grainger dan Erik Hatcher dari LucidWorks, mereka merekomendasikan penggunaan frekuensi term sebagai pengganti payload untuk solusi di mana saya menyematkan bobot term ke dalam indeks dan menggunakan fungsi kesamaan sadar payload khusus (yang juga tidak diperlukan). Muatan menimbulkan penalti kinerja yang signifikan. Tantangannya adalah bobot negatif, saya berasumsi tidak mungkin untuk menyandikan frekuensi istilah negatif, namun hal ini dapat diatasi dengan memiliki token berbeda untuk token berbobot positif dan negatif, dan membuat penyesuaian serupa pada waktu kueri (di mana peningkatan negatif dapat diterapkan di Solr sesuai kebutuhan).
Dokumentasi Lucene: Filter Frekuensi Jangka Terbatas Lucene
Ada juga pembaruan terkini untuk inti Lucene yang dapat diterapkan di sini dan akan segera masuk ke pencarian elastis pada saat penulisan: Block Max WAND. Hal ini menghasilkan kecepatan yang signifikan untuk kueri boolean OR yang besar di mana Anda tidak perlu mengetahui jumlah pasti hasil tetapi hanya ingin mendapatkan hasil N teratas secepat mungkin. Semua pendekatan yang saya diskusikan di sini menghasilkan kueri OR yang relatif besar sehingga ini sangat relevan. Saya juga telah membaca bahwa penerapan minimum-harus-cocok saat ini juga mencakup optimasi serupa, sehingga peningkatan kinerja yang sama mungkin sudah dicapai dengan menggunakan pengaturan mm yang sesuai, sesuatu yang sudah saya coba dalam kode saya.
Aktifkan 2018: 'Vektor dalam Pencarian'
Haystack 2019: 'Mencari dengan Vektor'
Simon Hughes (Kepala Ilmuwan Data, Dice.com)