Azure AI Arama'daki vektörler
Vektör arama, içeriğin sayısal gösterimleri üzerinde dizin oluşturmayı ve sorgu yürütmeyi destekleyen bilgi alma yaklaşımıdır. İçerik düz metin yerine sayısal olduğundan, eşleştirme, sorgu vektörine en çok benzeyen vektörleri temel alır ve bu da aşağıdakiler arasında eşleştirmeyi etkinleştirir:
- semantik veya kavramsal benzerlik ("köpek" ve "köpek", kavramsal olarak benzer ama dilsel olarak ayrı)
- çok dilli içerik ("köpek" İngilizce ve "hund" Almanca)
- düz metinde birden çok içerik türü ("köpek" ve görüntü dosyasındaki bir köpeğin fotoğrafı)
Bu makale, Azure AI Search'teki vektörlere üst düzey bir giriş sağlar. Ayrıca diğer Azure hizmetleriyle tümleştirmeyi açıklar ve vektör arama geliştirmeyle ilgili terimleri ve kavramları kapsar.
Arka plan için bu makaleyi öneririz, ancak kullanmaya başlamayı tercih ederseniz şu adımları izleyin:
Ayrıca vektör hızlı başlangıcı veya GitHub'da kod örnekleriyle de başlayabilirsiniz.
Vektör araması hangi senaryoları destekleyebilir?
Vektör arama senaryoları şunlardır:
Benzerlik araması. OpenAI eklemeleri veya SBERT gibi açık kaynak modelleri gibi ekleme modellerini kullanarak metni kodlar ve vektör olarak da kodlanmış sorgular içeren belgeleri alır.
Farklı içerik türlerinde (çokmodlu) arama. Çok modüllü eklemeleri (örneğin, Azure OpenAI'de Görüntü İşleme ile OpenAI CLIP veya GPT-4 Turbo ile) kullanarak görüntüleri ve metinleri kodlar ve her iki içerik türünden vektörlerden oluşan bir ekleme alanını sorgular.
Karma arama. Azure AI Search'te karma arama, aynı istekte vektör ve anahtar sözcük sorgu yürütmeyi ifade eder. Vektör desteği, hem vektör alanlarını hem de aranabilir metin alanlarını içeren bir dizinle alan düzeyinde uygulanır. Sorgular paralel olarak yürütülür ve sonuçlar tek bir yanıtta birleştirilir. İsteğe bağlı olarak, Bing'i destekleyen aynı dil modellerini kullanarak L2 yeniden boyutlandırma ile daha fazla doğruluk için anlamsal derecelendirme ekleyin.
Çok dilli arama. Kullanıcıların kendi dilinde arama deneyimi sağlamak, birden çok dilde eğitilen modelleri ve sohbet modellerini eklemekle mümkündür. Çeviri üzerinde daha fazla denetime ihtiyacınız varsa karma arama senaryolarında Azure AI Search'ün görsel olmayan içerik için desteklediği çok dilli özellikleri tamamlayabilirsiniz.
Filtrelenmiş vektör araması. Sorgu isteği vektör sorgusu ve filtre ifadesi içerebilir. Filtreler metin ve sayısal alanlara uygulanır ve meta veri filtreleri için ve filtre ölçütlerine göre arama sonuçlarını dahil etmek veya dışlamak için kullanışlıdır. Vektör alanı filtrelenebilir olmasa da, filtrelenebilir bir metin veya sayısal alan ayarlayabilirsiniz. Arama altyapısı, vektör sorgusu yürütülmeden önce veya sonra filtreyi işleyebilir.
Vektör veritabanı. Azure AI Search, sorguladığınız verileri depolar. Uzun süreli belleğe veya bilgi bankası ihtiyacınız olduğunda ya da Alma Artırılmış Nesil (RAG) mimarisi veya vektör kullanan herhangi bir uygulama için topraklama verilerine ihtiyaç duyduğunuzda bunu saf vektör deposu olarak kullanın.
Azure AI Search'te vektör araması nasıl çalışır?
Vektör desteği, bir arama dizininden vektör eklemelerinin dizin oluşturma, depolama ve sorgulamayı içerir.
Aşağıdaki diyagramda vektör araması için dizin oluşturma ve sorgu iş akışları gösterilmektedir.
Dizin oluşturma tarafında, Azure AI Search vektör eklemeleri alır ve benzer vektörleri bir dizine yakın yerleştirmek için en yakın komşular algoritmasını kullanır. Dahili olarak, her vektör alanı için vektör dizinleri oluşturur.
Kaynak içeriğinizden Azure AI Search'e ekleme işlemini nasıl gerçekleştirebileceğiniz, işi bir Azure AI Search dizin oluşturma işlem hattı içinde mi yoksa dışarıdan mı gerçekleştirmek istediğinize bağlıdır. Azure AI Search, dizin oluşturucu işlem hattında tümleşik veri öbekleme ve vektörleştirme sunar. Kaynakları (uç noktalar ve Azure OpenAI'ye bağlantı bilgileri) sağlamaya devam edebilirsiniz ancak Azure AI Search tüm çağrıları yapar ve geçişleri işler. Bu yaklaşım için bir dizin oluşturucu, desteklenen bir veri kaynağı ve öbekleme ve eklemeyi yönlendiren bir beceri kümesi gerekir. Aksi takdirde, tüm vektörleştirmeyi ayrı ayrı işleyebilir ve ardından önceden belirlenmiş içeriği vektör deposundaki vektör alanlarına gönderebilirsiniz.
Sorgu tarafında, istemci uygulamanızda sorgu girişini genellikle bir istem iş akışı aracılığıyla bir kullanıcıdan toplarsınız. Ardından girişi vektöre dönüştüren bir kodlama adımı ekleyebilir ve ardından benzerlik araması için vektör sorgusunu Azure AI Search'te dizininize gönderebilirsiniz. Dizin oluşturmada olduğu gibi, soruyu vektöre dönüştürmek için tümleşik vektörleştirmeyi dağıtabilirsiniz. Her iki yaklaşım için de Azure AI Search, sonuçlarda istenen k
en yakın komşulara (kNN) sahip belgeleri döndürür.
Azure AI Search, vektör ve anahtar sözcük aramalarını paralel olarak çalıştıran karma senaryoları destekler ve yalnızca vektör veya anahtar sözcük aramasından daha iyi sonuçlar sağlayan birleşik bir sonuç kümesi döndürür. Karma, vektör ve nonvector içeriği, yan yana çalışan sorgular için aynı dizine alınır.
Kullanılabilirlik ve fiyatlandırma
Vektör araması, tüm bölgelerdeki tüm Azure AI Arama katmanlarının bir parçası olarak ek ücret ödemeden kullanılabilir.
3 Nisan 2024'e kadar oluşturulan daha yeni hizmetler vektör dizinleri için daha yüksek kotaları destekler.
Vektör araması şu şekilde kullanılabilir:
- Azure portalı: Verileri içeri aktarma ve vektörleştirme sihirbazı
- Azure REST API’leri
- .NET, Python ve JavaScript için Azure SDK'ları
- Azure AI Studio gibi diğer Azure teklifleri.
Not
1 Ocak 2019'dan önce oluşturulan bazı eski arama hizmetleri vektör iş yüklerini desteklemeyen altyapıya dağıtılır. Şemaya vektör alanı eklemeye çalışır ve hata alırsanız, bu eski hizmetlerin bir sonucu olur. Bu durumda vektör özelliğini denemek için yeni bir arama hizmeti oluşturmanız gerekir.
Azure tümleştirmesi ve ilgili hizmetler
Azure AI Search, Azure AI platformu genelinde derinlemesine tümleştirilmiştir. Aşağıdaki tabloda vektör iş yüklerinde yararlı olan birkaç liste yer alır.
Ürün | Tümleştirme |
---|---|
Azure Yapay Zeka Stüdyosu | Veri oyun alanınızla sohbette Kendi verilerinizi ekleyin bölümünde temel verileri ve konuşma aramasını temel alan Azure AI Search kullanılır. Bu, verilerinizle sohbet etmek için en kolay ve en hızlı yaklaşımdır. |
Azure OpenAI | Azure OpenAI, ekleme modelleri ve sohbet modelleri sağlar. Tanıtımlar ve örnekler text-embedding-ada-002'yi hedefler. Metin için eklemeler oluşturmak için Azure OpenAI'yi öneririz. |
Azure Yapay Zeka Hizmetleri | Görüntü Alma Vektörleştir Görüntü API'leri (Önizleme) görüntü içeriğinin vektörleştirilmesini destekler. Görüntüler için eklemeler oluşturmak için bu API'yi öneririz. |
Azure veri platformları: Azure Blob Depolama, Azure Cosmos DB | Veri alımını otomatikleştirmek için dizin oluşturucuları kullanabilir ve ardından tümleşik vektörleştirmeyi kullanarak eklemeler oluşturabilirsiniz. Azure AI Search, iki veri kaynağından gelen vektör verilerini otomatik olarak dizinleyebilir: Azure blob dizin oluşturucuları ve NoSQL için Azure Cosmos DB dizin oluşturucuları. Daha fazla bilgi için bkz . Arama dizinine vektör alanları ekleme.. |
LangChain gibi açık kaynak çerçevelerde de yaygın olarak kullanılır.
Vektör arama kavramları
Vektörleri yeni kullanıyorsanız bu bölümde bazı temel kavramlar açıklanmaktadır.
Vektör araması hakkında
Vektör arama, belgelerin ve sorguların düz metin yerine vektör olarak temsil edildiği bir bilgi alma yöntemidir. Vektör aramasında, makine öğrenmesi modelleri kaynak girişlerin metin, görüntü veya diğer içerik olabilecek vektör gösterimlerini oluşturur. İçeriğin matematik gösterimine sahip olmak, arama senaryoları için ortak bir temel sağlar. Her şey bir vektörse, ilişkili özgün içerik sorgudan farklı bir medyada veya dilde olsa bile sorgu vektör alanında bir eşleşme bulabilir.
Vektör arama neden kullanılır?
Aranabilir içerik vektör olarak temsil edildiğinde, sorgu benzer içerikte yakın eşleşmeler bulabilir. Vektör oluşturma için kullanılan ekleme modeli, hangi sözcüklerin ve kavramların benzer olduğunu bilir ve sonuçta elde edilen vektörleri ekleme alanına birbirine yaklaştırır. Örneğin, "bulutlar" ve "sis" hakkındaki vektörleştirilmiş kaynak belgelerin, sözcük temelli bir eşleşme olmasa bile, anlamsal olarak benzer oldukları için "sis" hakkındaki bir sorguda gösterilme olasılığı daha yüksektir.
Eklemeler ve vektörleştirme
Eklemeler , metnin anlamsal anlamını veya görüntüler gibi diğer içeriğin gösterimlerini yakalayan makine öğrenmesi modelleri tarafından oluşturulan, içeriğin veya sorgunun belirli bir vektör gösterimi türüdür. Doğal dil makine öğrenmesi modelleri, sözcükler arasındaki desenleri ve ilişkileri tanımlamak için büyük miktarda veri üzerinde eğitilir. Eğitim sırasında, kodlayıcı adı verilen bir aracı adımında herhangi bir girişi gerçek sayıların vektör olarak temsil etmeyi öğrenirler. Eğitim tamamlandıktan sonra, bu dil modelleri değiştirilebilir, böylece aracı vektör gösterimi modelin çıktısı olur. Sonuçta elde edilen eklemeler, eklemeleri anlama (Azure OpenAI) bölümünde açıklandığı gibi benzer anlamlara sahip sözcüklerin vektör alanında birbirine daha yakın olduğu yüksek boyutlu vektörlerdir.
vektör aramasının ilgili bilgileri almadaki etkinliği, belgelerin ve sorguların anlamını sonuçta elde edilen vektöre dağıtmada ekleme modelinin etkinliğine bağlıdır. En iyi modeller, temsil ettikleri veri türleri hakkında iyi eğitilir. Azure OpenAI text-embedding-ada-002 gibi mevcut modelleri değerlendirebilir, doğrudan sorun alanı üzerinde eğitilmiş kendi modelinizi getirebilir veya genel amaçlı bir modele ince ayar yapabilirsiniz. Azure AI Search seçtiğiniz modele kısıtlama getirmez, bu nedenle verileriniz için en iyi olanı seçin.
Vektör araması için etkili eklemeler oluşturmak için giriş boyutu sınırlamalarını dikkate almak önemlidir. Eklemeler oluşturmadan önce verileri öbekleme yönergelerini izlemenizi öneririz. Bu en iyi yöntem, eklemelerin ilgili bilgileri doğru bir şekilde yakalamasını ve daha verimli vektör araması yapmasını sağlar.
Ekleme alanı nedir?
Alan ekleme, vektör sorguları için corpus'dur. Arama dizininde ekleme alanı, aynı ekleme modeline ait eklemelerle doldurulan vektör alanlarının tümüdür. Makine öğrenmesi modelleri tek tek sözcükleri, tümcecikleri veya belgeleri (doğal dil işleme için), görüntüleri veya diğer veri biçimlerini yüksek boyutlu bir alanda koordinatı temsil eden gerçek sayı vektörlerinden oluşan bir gösterime eşleyerek ekleme alanını oluşturur. Bu ekleme alanında benzer öğeler birbirine yakın ve benzer olmayan öğeler birbirinden çok daha uzakta bulunur.
Örneğin, farklı köpek türleri hakkında konuşan belgeler, ekleme alanında birbirine yakın bir şekilde kümelenebilir. Kedilerle ilgili belgeler birbirine yakın, ancak hala hayvanlar için mahalledeyken köpek kümesinden daha uzakta olacaktır. Bulut bilişim gibi benzersiz kavramlar çok daha uzak olacaktır. Uygulamada, bu ekleme alanları soyut ve iyi tanımlanmış, insan tarafından yorumlanabilir anlamlara sahip değildir, ancak temel fikir aynı kalır.
En yakın komşu arama
Vektör aramasında arama altyapısı, ekleme alanının içindeki vektörleri tarar ve sorgu vektörlerine en yakın vektörleri tanımlar. Bu teknik en yakın komşu araması olarak adlandırılır. En yakın komşular, öğeler arasındaki benzerliği ölçmeye yardımcı olur. Vektör benzerliğinin yüksek bir derecesi, özgün verilerin de benzer olduğunu gösterir. En yakın komşu aramasını kolaylaştırmak için arama altyapısı, arama alanını azaltmak için iyileştirmeler yapar veya veri yapılarını ve veri bölümlemesini kullanır. Her vektör arama algoritması, en düşük gecikme süresi, en yüksek aktarım hızı, geri çağırma ve bellek için iyileştirildikçe en yakın komşu sorunlarını farklı şekillerde çözer. Benzerlikleri hesaplamak için benzerlik ölçümleri, işlem uzaklığına yönelik mekanizmayı sağlar.
Azure AI Search şu anda aşağıdaki algoritmaları destekler:
Hiyerarşik Gezinilebilir Küçük Dünya (HNSW): HNSW, veri dağıtımının bilinmediği veya sık değiştirilebildiği yüksek geri çekme, düşük gecikme süreli uygulamalar için iyileştirilmiş önde gelen bir ANN algoritmasıdır. Yüksek boyutlu veri noktalarını hızlı ve ölçeklenebilir bir benzerlik aramasına olanak tanıyan hiyerarşik bir graf yapısında düzenlerken, arama doğruluğu ile hesaplama maliyeti arasında ayarlanabilir bir denge sağlar. Algoritma, hızlı rastgele erişim için tüm veri noktalarının bellekte olmasını gerektirdiğinden, bu algoritma vektör dizini boyutu kotasını kullanır.
Kapsamlı K-en yakın komşular (KNN): Sorgu vektörü ile tüm veri noktaları arasındaki mesafeleri hesaplar. Hesaplama açısından yoğun olduğundan daha küçük veri kümeleri için en iyi sonucu sağlar. Algoritma, veri noktalarına hızlı rastgele erişim gerektirmediğinden, bu algoritma vektör dizini boyutu kotasını kullanmaz. Ancak, bu algoritma en yakın komşulardan oluşan genel kümeyi sağlar.
Bu algoritmaları kullanmak için algoritmayı, vektör profillerini ve profil atamasını belirtme yönergeleri için bkz . Vektör alanı oluşturma.
Dizin oluşturma sırasında dizini başlatmak için kullanılan algoritma parametreleri sabittir ve dizin oluşturulduktan sonra değiştirilemez. Ancak, sorgu zamanı özelliklerini (efSearch
) etkileyen parametreler değiştirilebilir.
Ayrıca, HNSW algoritması belirten alanlar sorgu isteği parametresini "exhaustive": true
kullanarak kapsamlı KNN aramasını da destekler. Ancak tam tersi doğru değildir. için exhaustiveKnn
bir alan dizini oluşturulmuşsa, verimli aramayı etkinleştiren ek veri yapıları mevcut olmadığından sorguda HNSW kullanamazsınız.
Yaklaşık En Yakın Komşular
Yaklaşık En Yakın Komşu (ANN) araması, vektör alanında eşleşmeleri bulmaya yönelik bir algoritma sınıfıdır. Bu algoritma sınıfı, sorgu işlemeyi hızlandırmak için arama alanını önemli ölçüde azaltmak için farklı veri yapıları veya veri bölümleme yöntemleri kullanır.
ANN algoritmaları bazı doğruluklardan ödün verir, ancak yaklaşık en yakın komşular için ölçeklenebilir ve daha hızlı alma sunar, bu da modern bilgi alma uygulamalarında verimliliği dengelemek için ideal olmaları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 AI Search, ANN algoritması için HNSW kullanır.