cevap

6

Elastic Search'e özel bir cevabım yok çünkü hiç kullanmadım (Elastic aramalarının yapıldığı Lucene kullanıyorum). Ancak, sorunuza genel bir cevap vermeye çalışıyorum. Bir sorgu vektörü verilen en yakın vektörlerin aşağıdaki gibi tarif edilmesi için iki standart yol vardır.

K-d ağaç

Birinci yaklaşım en yakın komşu sorguları destekleyen bir veri yapısı sayesinde, örneğin, birlikte hafızada vektörleri depolamaktır k-d ağaçları. Bir k-d tree, ikili arama ağacının her bir seviyesinin, k k boyutlarından birinin iki parçaya bölünmesi anlamında bir genellemedir. Hafızadaki tüm noktaları yüklemek için yeterli alanınız varsa, kosinüs benzerlik değerlerine göre sıralanan vektörlerin bir listesini elde etmek için nearest neighbour search algorithm k-d ağaçlarına uygulamak mümkündür. Bu yöntemin bariz dezavantajı, bilgi edinmede sıklıkla karşılaşılan devasa puan kümeleriyle ölçeklenmemesidir.

Ters Kuantize Vektörler

İkinci yaklaşım ters nicemlenmiş vektörler kullanmaktır. Basit bir aralık tabanlı kuantizasyon, bir vektörün gerçek sayılarına sözde terim veya etiketlerini etiketlerine atar, böylece bunlar daha sonra Lucene tarafından indekslenebilir (veya bu konuda Elastik arama).

Örneğin, aralık [0.1, 0.2) ve böylece ... örnek vektör etiketi aralığında [0 A, 0.1), B atayabilir kayıt Daha sonra soru (J, D, C, .. A) olarak kodlanır. (çünkü [.9,1] J, [0.3,0.4] D ve benzeridir). Sonuç olarak, gerçek sayıların bir vektörü böylece bir dizgeye (bir belge olarak ele alınabilir) dönüştürülür ve dolayısıyla bir standart bilgi alma (IR) aracı ile indekslenir. Bir sorgu vektörü aynı zamanda sözde-terimlerden oluşan bir torbaya dönüştürülür ve dolayısıyla mevcut olana en benzer (kosinüs benzerliği veya başka bir ölçü olarak) koleksiyondaki diğer benzer vektörlerin bir kümesini hesaplayabilir.

Bu yöntemin ana avantajı, gerçek numaralı vektörlerin büyük koleksiyonu için iyi ölçeklendirilmesidir. Temel dezavantaj, hesaplanan benzerlik değerlerinin, gerçek kosinüs benzerliklerine (kuantizasyonda karşılaşılan kayıptan dolayı) sadece yaklaşık değerler olduğudur. Daha küçük bir kuantizasyon aralığı, artan indeks büyüklüğüne göre daha iyi performans sağlar.

+0

Kuantize vektörler ile bulunan değerlerin kosinüs benzerliklerine yakınlıklar olduğu iddianızın aşırı derecede iyimser olduğuna dikkat edin. Spesifik olarak, bu "yaklaşık" 0.11'de 0.1'den 0.1'e kadar olan değer 0.99'tır. "A" nın "b" ye "b" den daha yakın olduğu söylenemez. Bunu düzeltmenin bir yolu yoksa, bu yaklaşım hiçbir şeyden çok daha kötüdür. Sahip olduğunuz uzaklık bilgisini aktif olarak yok edecektir. Lütfen, lütfen, lütfen bunu kimsenin uygulamamasına izin verin, başvurunuzu yok edersiniz. –

+0

Ayrıca, "tersine çevrilmiş nicelenmiş vektörler" in bir şey olmadığını da belirtmek gerekir. Kelimenin tam anlamıyla bu terimin tamamı internette ortaya çıkıyor. Vektör Niceleme bir şeydir, ama kesinlikle bu cevapta belirtilenlerden değildir. –

+0

Kuantizasyon, vektörleri her bir bileşene göre bulmanıza yardımcı olacaktır, yani 0.11'lik bir aralık boyutu kullandığınızı varsayarak, 0.11'in hücreye [0,1, 0,2] ait olacağını belirlersiniz. Ancak vektörlerin bileşenlerini kendileri saklayabilirsiniz. Bir sorgu noktası verildiğinde, kesin mesafeleri hesaplamak mümkündür. Vektörleri nicelleştirseniz bile, mesafe hesaplamalarında meydana gelen kuantizasyon hatası, eğer aralıklar yeterince küçükse, o zaman anlamlı olmayacaktır. – Debasis

İlgili konular