Vektör aramasında ilgi

Vektör sorgusu yürütme sırasında arama altyapısı, arama sonuçlarında döndürülecek en iyi adayları bulmak için benzer vektörleri arar. Vektör içeriğini nasıl dizinlediğinize bağlı olarak, ilgili eşleşmeler için yapılan arama kapsamlıdır veya daha hızlı işleme için yakın komşularla kısıtlanır. Adaylar bulunduktan sonra, eşleşmenin gücüne göre her sonucu puanlarken benzerlik ölçümleri kullanılır.

Bu makalede, ilgili eşleşmeleri bulmak için kullanılan algoritmalar ve puanlama için kullanılan benzerlik ölçümleri açıklanmaktadır. Ayrıca arama sonuçları beklentileri karşılamıyorsa ilgi düzeyini artırmaya yönelik ipuçları da sunar.

Vektör arama algoritmaları kapsamlı k-en yakın komşular (KNN) ve Hiyerarşik Gezinilebilir Küçük Dünya (HNSW) içerir.

  • Kapsamlı KNN, vektör alanının tamamını tarayan bir deneme yanılma araması gerçekleştirir.

  • HNSW, yaklaşık en yakın komşu (ANN) araması gerçekleştirir.

Yalnızca dizinde veya sorguda olduğu searchable gibi searchFields olarak işaretlenmiş vektör alanları arama ve puanlama için kullanılır.

Kapsamlı KNN ne zaman kullanılır?

Kapsamlı KNN, tüm veri noktası çiftleri arasındaki mesafeleri hesaplar ve sorgu noktası için tam olarak k en yakın komşuları bulur. Yüksek geri çağırmanın son derece önemli olduğu ve kullanıcıların sorgu gecikme süresindeki dengeleri kabul etmeye istekli olduğu senaryolara yöneliktir. Hesaplama açısından yoğun olduğundan, küçük ve orta ölçekli veri kümeleri için kapsamlı KNN kullanın veya duyarlık gereksinimleri sorgu performansında dikkat edilmesi gerekenlerden daha ağır bastığında.

İkincil kullanım örneği, yaklaşık en yakın komşu algoritması geri çağırmasını değerlendirmek için bir veri kümesi oluşturmaktır. En yakın komşulardan oluşan temel gerçeklik kümesini oluşturmak için kapsamlı KNN kullanılabilir.

HNSW ne zaman kullanılır?

Dizin oluşturma sırasında HNSW, daha hızlı arama için ek veri yapıları oluşturur ve veri noktalarını hiyerarşik bir graf yapısında düzenler. HNSW,arama uygulamanızın aktarım hızı, gecikme süresi ve geri çağırma hedeflerine ulaşmak için ayarlanabilen çeşitli yapılandırma parametrelerine sahiptir. Örneğin, sorgu zamanında vektör alanı HNSW için dizinlenmiş olsa bile kapsamlı arama seçeneklerini belirtebilirsiniz.

Sorgu yürütme sırasında HNSW, grafikte gezinerek hızlı komşu sorgularını etkinleştirir. Bu yaklaşım, arama doğruluğu ile hesaplama verimliliği arasında bir denge oluşturur. HNSW, daha büyük veri kümeleri üzerinde arama yaparken verimliliği nedeniyle çoğu senaryo için önerilir.

En yakın komşu araması nasıl çalışır?

Vektör sorguları, aynı ekleme modelinden oluşturulan vektörlerden oluşan bir ekleme alanında yürütülür. Genellikle sorgu isteğindeki giriş değeri, vektör dizininde eklemeler oluşturan aynı makine öğrenmesi modeline beslenir. Çıkış, aynı ekleme alanında bulunan bir vektördür. Benzer vektörler birbirine yakın kümelendiğinden eşleşmeleri bulmak, sorgu vektörlerine en yakın vektörleri bulmaya ve ilişkili belgeleri arama sonucu olarak döndürmeye eşdeğerdir.

Örneğin, bir sorgu isteği oteller hakkındaysa model, sorguyu otellerle ilgili belgeleri temsil eden vektör kümesinde bulunan bir vektörle eşler. Benzerlik ölçümünü temel alarak sorguya en çok benzeyen vektörlerin belirlenmesi, hangi belgelerin en uygun olduğunu belirler.

Vektör alanları kapsamlı KNN için dizine eklendiğinde, sorgu "tüm komşular" için yürütülür. HNSW için dizine alınan alanlar için arama altyapısı, vektör dizinindeki düğümlerin bir alt kümesi üzerinde arama yapmak için bir HNSW grafiği kullanır.

HNSW grafiği oluşturma

Dizin oluşturma sırasında arama hizmeti HNSW grafiğini oluşturur. Yeni bir vektörü bir HNSW grafiğine dizinlemenin amacı, bunu en yakın komşu aramasının verimli bir şekilde grafik yapısına eklemektir. Aşağıdaki adımlar işlemi özetler:

  1. Başlatma: Boş bir HNSW grafiğiyle veya yeni bir dizin değilse mevcut HNSW grafiğiyle başlayın.

  2. Giriş noktası: Bu, hiyerarşik grafiğin en üst düzeyidir ve dizin oluşturma için başlangıç noktası görevi görür.

  3. Grafiğe ekleme: Farklı hiyerarşik düzeyler grafiğin farklı ayrıntı düzeylerini temsil ederek, daha yüksek düzeyler daha genel ve düşük düzeyler daha ayrıntılıdır. Grafikteki her düğüm bir vektör noktasını temsil eder.

    • Her düğüm, yakındaki komşulara m bağlanır. Bu parametredir m .

    • Aday bağlantı olarak kabul edilen veri noktalarının sayısı parametresine efConstruction tabidir. Bu dinamik liste, algoritmanın dikkate alınması için mevcut grafikteki en yakın nokta kümesini oluşturur. Daha yüksek efConstruction değerler daha fazla düğümün dikkate alınmasını sağlar ve bu da genellikle her vektör için daha yoğun yerel mahallelere yol açar.

    • Bu bağlantılar, mesafeyi belirlemek için yapılandırılmış benzerliği metric kullanır. Bazı bağlantılar, farklı hiyerarşik düzeyler arasında bağlanan ve grafikte arama verimliliğini artıran kısayollar oluşturan "uzun mesafeli" bağlantılardır.

  4. Graf ayıklama ve iyileştirme: Tüm vektörler dizine eklendikten sonra bu durum oluşabilir ve HNSW grafiğinin gezinilebilirliğini ve verimliliğini artırır.

Vektör sorgusu, eşleşmeleri taramak için hiyerarşik graf yapısında gezinir. İşlemdeki adımlar aşağıda özetlenmiştir:

  1. Başlatma: Algoritma, aramayı hiyerarşik grafiğin en üst düzeyinde başlatır. Bu giriş noktası, arama için başlangıç noktası görevi görecek vektör kümesini içerir.

  2. Dolaşma: Daha sonra grafik düzeyinde düzeye göre geçiş yaparak en üst düzeyden daha düşük düzeylere gider ve kosinüs benzerliği gibi yapılandırılan uzaklık ölçümüne göre sorgu vektörine daha yakın olan aday düğümleri seçer.

  3. Ayıklama: Verimliliği artırmak için algoritma, arama alanını yalnızca en yakın komşuları içerme olasılığı olan düğümleri göz önünde bulundurarak ayıklamayı sağlar. Bu, olası adayların öncelik sırası korunarak ve arama ilerledikçe güncelleştirilerek elde edilir. Bu kuyruğun uzunluğu parametresiyle efSearchyapılandırılır.

  4. İyileştirme: Algoritma daha düşük, daha ayrıntılı düzeylere ilerledikçe HNSW sorgunun yakınında daha fazla komşuyu dikkate alır ve bu da aday vektör kümesinin geliştirilmesine olanak tanır ve doğruluğu artırır.

  5. Tamamlama: Arama, istenen en yakın komşu sayısı belirlendiğinde veya diğer durdurma ölçütleri karşılandığında tamamlar. Bu istenen en yakın komşu sayısı sorgu zamanı parametresi ktarafından yönetilir.

Yakınlığı ölçmek için kullanılan benzerlik ölçümleri

Algoritma, benzerliği değerlendirmek için aday vektörleri bulur. Bu görevi gerçekleştirmek için, benzerlik ölçüm hesaplaması aday vektörünü sorgu vektörünü karşılaştırır ve benzerliği ölçer. Algoritma, bulduğu en benzer vektörlerin sıralı kümesini izler ve algoritma tamamlandığında dereceli sonuç kümesini oluşturur.

Metrik Sistem Açıklama
cosine Bu ölçüm iki vektör arasındaki açıyı ölçer ve farklı vektör uzunluklarından etkilenmez. Matematiksel olarak, iki vektör arasındaki açıyı hesaplar. Kosinüs, Azure OpenAI ekleme modelleri tarafından kullanılan benzerlik ölçümüdür, bu nedenle Azure OpenAI kullanıyorsanız vektör yapılandırmasında belirtincosine.
dotProduct Bu ölçüm hem iki vektör çiftinin uzunluğunu hem de aralarındaki açıyı ölçer. Matematiksel olarak vektörlerin büyüklüklerinin ürünlerini ve aralarındaki açıyı hesaplar. Normalleştirilmiş vektörler için bu benzerlikle cosine aynıdır, ancak biraz daha yüksek performanslıdır.
euclidean (olarak da bilinir l2 norm) Bu ölçüm, iki vektör arasındaki vektör farkının uzunluğunu ölçer. Matematiksel olarak, iki vektör arasındaki Öklid uzaklığını hesaplar. Bu, iki vektör arasındaki farkın l2 normudur.

Vektör arama sonuçlarındaki puanlar

Puanlar hesaplanır ve her eşleşmeye atanır ve en yüksek eşleşme sonuç olarak k döndürülür. @search.score özelliği puanı içerir. Aşağıdaki tabloda puanın düşeceği aralık gösterilmektedir.

Arama yöntemi Parametre Puanlama ölçümü Aralık
vektör araması @search.score Kosinüs 0.333 - 1.00

Ölçüm içincosine , hesaplanan @search.score değerin sorgu vektörü ile belge vektörleri arasındaki kosinüs değeri olmadığını unutmayın. Bunun yerine Azure AI Search, puan işlevinin monoton olarak azaldığı ve benzerlik kötüleştikçe puan değerlerinin her zaman değerde azalacağı şekilde dönüşümler uygular. Bu dönüşüm, arama puanlarının derecelendirme amacıyla kullanılabilir olmasını sağlar.

Benzerlik puanlarına sahip bazı nüanslar vardır:

  • Kosinüs benzerliği, iki vektör arasındaki açının kosinüsü olarak tanımlanır.
  • Kosinüs uzaklığı olarak 1 - cosine_similaritytanımlanır.

Monoton olarak azalan bir işlev oluşturmak için olarak @search.score tanımlanır 1 / (1 + cosine_distance).

Yapay değer yerine kosinüs değerine ihtiyaç duyan geliştiriciler, arama puanını kosinüs mesafesine dönüştürmek için bir formül kullanabilir:

double ScoreToSimilarity(double score)
{
    double cosineDistance = (1 - score) / score;
    return  -cosineDistance + 1;
}

Özgün kosinüs değerinin olması, düşük kaliteli sonuçların sonuçlarını kırpmak için eşikleri ayarlayan özel çözümlerde yararlı olabilir.

İlgi ayarlama ipuçları

İlgili sonuçlar almıyorsanız, sorgu yapılandırmasında yapılan değişiklikleri deneyin. Vektör sorguları için puanlama profili, alan veya terim artırma gibi belirli ayarlama özellikleri yoktur:

  • Öbek boyutu ve çakışma ile denemeler yapın. Öbek boyutunu artırmayı ve öbekler arasındaki bağlamı veya sürekliliği korumak için yeterli çakışma olduğundan emin olun.

  • HNSW için, yakınlık grafiğinin efConstruction iç bileşimini değiştirmek için farklı düzeylerini deneyin. Varsayılan değer 400'dür. Aralık 100 ile 1.000 arasındadır.

  • Kullanıyorsanız, sohbet modeline daha fazla arama sonucu aktarmak için sonuçları artırın k .

  • Anlamsal derecelendirmeye sahip karma sorguları deneyin. Kıyaslama testinde bu birleşim tutarlı bir şekilde en uygun sonuçları üretmektedir.

Sonraki adımlar