Vektör aramasında ilgililik

Not

Azure Yapay Zeka Arama Azure portalı, REST API'leri ve Azure SDK’ları aracılığıyla kullanılabilir. Ayrıca kuruluş içeriğini Microsoft Foundry portalındaki aracılar için yeniden kullanılabilir, izin kullanan bilgi bankalarına dönüştüren yönetilen bilgi katmanı Foundry IQ'yu temel alır.

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 en yakın komşularla kısıtlanır. Adaylar bulunduğunda, 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ı şunlardır:

Arama ve puanlama için yalnızca dizinde veya searchable sorguda olarak searchFields işaretlenmiş vektör alanları kullanılır.

Kapsamlı KNN hakkında

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. Algoritma, veri noktalarına hızlı rastgele erişim gerektirmediğinden, KNN vektör dizini boyutu kotasını kullanmaz. Ancak, en yakın komşulardan oluşan küresel kümeyi sağlar.

Kapsamlı KNN hesaplama açısından yoğun olduğundan, küçük ve orta ölçekli veri kümeleri için veya duyarlık gereksinimi sorgu performansı gereksiniminden daha fazla olduğunda kullanın. Bir diğer kullanım örneği de ann algoritmasının geri çağrılma durumunu 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 Hakkında

HNSW, bilinmeyen veya geçici veri dağıtımına sahip yüksek geri çekme, düşük gecikme süreli uygulamalar için iyileştirilmiş bir ANN algoritmasıdır. Dizin oluşturma sırasında HNSW, veri noktalarını hiyerarşik bir grafikte düzenleyen ek veri yapıları oluşturur. Sorgu yürütme sırasında HNSW, en uygun eşleşmeleri bulmak için bu grafikte gezinerek en yakın komşu aramalarının verimli olmasını sağlar.

HNSW, vektör dizin boyutu kotasını kullanan hızlı rastgele erişim için tüm veri noktalarının bellekte olmasını gerektirir. Bu tasarım, arama doğruluğunu hesaplama verimliliğiyle dengeler ve HNSW'yi özellikle daha büyük veri kümelerinde arama yaparken çoğu senaryo için uygun hale getirir.

HNSW, arama uygulamanız için aktarım hızını, gecikme süresini ve geri çağırmayı iyileştirmek için çeşitli ayarlanabilir yapılandırma parametreleri sunar. Örneğin, HNSW belirten alanlar sorgu isteği parametresini "exhaustive": truekullanarak kapsamlı KNN'yi de destekler. Ancak, için dizine alınan exhaustiveKnn alanlar HNSW sorgularını desteklemez, çünkü verimli aramayı etkinleştiren ek veri yapıları mevcut değildir.

ANN hakkında

ANN, vektör uzayında eşleşmeleri bulmaya yönelik bir algoritma sınıfıdır. Bu algoritma sınıfı, arama alanını önemli ölçüde azaltmak ve sorgu işlemeyi hızlandırmak için farklı veri yapıları veya veri bölümleme yöntemleri kullanır.

ANN algoritmaları doğruluktan ödün verir, ancak en yakın yaklaşık komşuların ölçeklenebilir ve daha hızlı alınmasını sağlar ve bu da modern bilgi alma uygulamalarında doğruluğu ve verimliliği dengelemek için ideal olmasını sağlar. Arama uygulamanızın geri çekme, gecikme süresi, bellek ve disk ayak izi gereksinimlerini hassas bir şekilde ayarlamak için algoritmanızın parametrelerini ayarlayabilirsiniz.

Azure Yapay Zeka Arama, ANN algoritması için HNSW kullanır.

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ı tam kapsamlı KNN için indekslendiğinde, sorgu "tüm komşular" üzerinde çalıştırı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 grafına dizinlemenin amacı, bunu en verimli en yakın komşu aramasını destekleyecek ş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ınındaki en fazla m komşuya bağlanır. Bu parametredir m .

    • efConstruction parametresi, aday bağlantı olarak kabul edilen veri noktalarının sayısını yönetir. 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. Aşağıdaki adımlar işlemi özetler:

  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. Geçiş: Ardından, grafı seviye seviye dolaşarak, üst seviyeden alt seviyelere doğru gezinir. Kosinüs benzerliği gibi yapılandırılan uzaklık ölçümüne göre sorgu vektöre 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. Olası adaylardan oluşan bir öncelik kuyruğu tutar ve arama ilerledikçe bunu güncelleştirir. 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 sorguya yakın daha fazla komşuyu dikkate alır. Bu önemli nokta, aday vektör kümesinin geliştirilmesine ve doğruluğun artırılmasına olanak tanır.

  5. Tamamlama: İstenen en yakın komşu sayısı tanımlandığında veya diğer durdurma ölçütleri karşılandığında arama tamamlanmıştır. Sorgu zamanı parametresi k , istenen en yakın komşu sayısını yönetir.

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 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 ölçüm 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.

Not

İki veya daha fazla vektör sorgusunu paralel olarak çalıştırırsanız veya aynı istekteki vektör ve metin sorgularını birleştiren karma bir arama yaparsanız, son arama sonuçlarını puanlamada Karşılıklı Rank Fusion (RRF) kullanılır.

Vektör arama sonuçlarındaki puanlar

Sistem her maça puan hesaplar ve atar. En yüksek eşleşmeler k sonuçları olarak döndürülür. @search.score özelliği puanı içerir. Aşağıdaki tabloda bir puanın düştüğü aralık gösterilmektedir.

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

cosine metriği için hesaplanan @search.score sorgu vektörü ile belge vektörleri arasındaki kosinüs değeri değildir. Bunun yerine Azure Yapay Zeka Arama, puan işlevinin monoton olarak azalması için dönüştürmeler uygular. Benzerlik kötüleştikçe puan değerleri her zaman azalır. 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 @search.score, 1 / (1 + cosine_distance) olarak tanımlanır.

Yapay değer yerine kosinüs değerine ihtiyacınız varsa, arama puanını kosinüs mesafesine dönüştürmek için bir formül kullanın:

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ını değiştirmeyi deneyin. Vektör sorgularının puanlama profili, alan veya terim artırma gibi belirli ayarlama özellikleri yoktur:

  • Farklı öbek boyutu ve çakışma ayarlarını deneyin. Öbek boyutunu artırın 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 ila 1.000 arasındadır.

  • Sohbet modeli kullanıyorsanız daha fazla arama sonucunu göndermek için k sonuçlarını artırın.

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