Azure Yapay Zeka Arama vektör dizinleri

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örler, metinleri, resimleri ve diğer içerikleri matematiksel olarak temsil eden yüksek boyutlu eklemelerdir. Azure Yapay Zeka Arama vektörleri alan düzeyinde depolar ve vektör ve nonvector içeriğinin aynı search index içinde bir arada var olmasını sağlar.

Arama dizini, vektör alanlarını ve vektör yapılandırmasını tanımladığınızda vektör dizinine dönüşür. Vektör alanlarını doldurmak için precomputed embeddings'i vektör alanlarına iterek gönderebilir veya dizin oluşturma sırasında embedding'ler üreten yerleşik bir Azure Yapay Zeka Arama özelliği olan integrated vectorization'ı kullanabilirsiniz.

Sorgu zamanında, dizininizdeki vektör alanları benzerlik aramasını etkinleştirir ve burada sistem vektörleri vektör sorgusuna en çok benzeyen belgeleri alır. Benzerlik ve anahtar sözcük eşleştirme birleşimi için tek başına benzerlik eşleştirme veya karma arama için vektör araması kullanabilirsiniz.

Bu makale, aşağıdakiler dahil olmak üzere vektör dizini oluşturmaya ve yönetmeye yönelik temel kavramları kapsar:

  • Vektör arama desenleri
  • İçerik (vektör alanları ve yapılandırma)
  • Fiziksel veri yapısı
  • Temel işlemler

Tavsiye

Hemen başlamak ister misiniz? Bkz. Vektör dizini oluşturma.

Vektör arama desenleri

Azure Yapay Zeka Arama vektör alma için iki deseni destekler:

  • Klasik arama. Bu düzende arama çubuğu, sorgu girişi ve işlenmiş sonuçlar kullanılır. Sorgu yürütme sırasında, arama altyapısı veya uygulama kodunuz kullanıcı girişini vektörleştirir. Arama altyapısı daha sonra dizininizdeki vektör alanları üzerinde vektör araması yapar ve bir istemci uygulamasında oluşturduğunuz yanıtı formüle eder.

    Azure Yapay Zeka Arama,sonuçlar düzleştirilmiş bir satır kümesi olarak döndürülür ve yanıta hangi alanları dahil etmek istediğinizi seçebilirsiniz. Arama altyapısı vektörlerle eşleşse de, dizininizin arama sonuçlarını doldurmak için görsel olmayan ve okunabilir içeriğe sahip olması gerekir. Klasik arama hem vektör sorgularını hem de karma sorguları destekler.

  • Oluşturmalı arama. Dil modelleri, kullanıcı sorgularını yanıtlamak için Azure Yapay Zeka Arama verilerini kullanır. Düzenleme katmanı genellikle istemleri koordine eder ve bağlamı koruyarak arama sonuçlarını GPT gibi sohbet modellerine aktarır. Bu desen, arama dizininin temellendirme verileri sağladığı alma artırılmış üretim (RAG) mimarisine dayanmaktadır.

Vektör dizini şeması

Vektör dizini şeması aşağıdakileri gerektirir:

  • İsim
  • Anahtar alanı (dize)
  • Bir veya daha fazla vektör alanı
  • Vektör yapılandırması

Nonvector alanları gerekli değildir, ancak karma sorgular veya dil modeline gitmeyen ayrıntılı içerik döndürmek için bunları eklemenizi öneririz. Daha fazla bilgi için bkz . Vektör dizini oluşturma.

Dizin şemanız vektör alma deseninizi yansıtmalıdır. Bu bölüm çoğunlukla klasik arama için alan bileşimini kapsar, ancak oluşturucu arama için şema kılavuzu da sağlar.

Temel vektör alanı yapılandırması

Vektör alanlarının benzersiz veri türleri ve özellikleri vardır. Alan koleksiyonunda vektör alanı şöyle görünür:

{
    "name": "content_vector",
    "type": "Collection(Edm.Single)",
    "searchable": true,
    "retrievable": true,
    "dimensions": 1536,
    "vectorSearchProfile": "my-vector-profile"
}

Vektör alanları için yalnızca belirli veri türleri desteklenir. En yaygın tür Collection(Edm.Single)'dir, ancak dar türler kullanılarak depolamadan tasarruf edilebilir.

Vektör alanları aranabilir ve alınabilir olmalıdır, ancak filtrelenebilir, modellenebilir veya sıralanabilir olamaz. Ayrıca çözümleyiciler, normalleştiriciler veya eş anlamlı eşleme atamaları yapamazlar.

özelliği, dimensions ekleme modeli tarafından oluşturulan ekleme sayısına ayarlanmalıdır. Örneğin, text-embedding-ada-002, her metin öbeği için 1.536 ekleme oluşturur.

Vektör alanları, dizinde başka bir yerde tanımlanan ve bu örnekte gösterilmeyen bir vektör arama profilinde belirtilen algoritmalar kullanılarak dizine eklenir. Daha fazla bilgi için bkz. Vektör arama yapılandırması ekleme.

Temel vektör iş yükleri için alanlar koleksiyonu

Vektör dizinleri yalnızca vektör alanlarından fazlasını gerektirir. Örneğin, tüm dizinlerde aşağıdaki örnekte yer alan id bir anahtar alanı olmalıdır:

"name": "example-basic-vector-idx",
"fields": [
  { "name": "id", "type": "Edm.String", "searchable": false, "filterable": true, "retrievable": true, "key": true },
  { "name": "content_vector", "type": "Collection(Edm.Single)", "searchable": true, "retrievable": true, "dimensions": 1536, "vectorSearchProfile": null },
  { "name": "content", "type": "Edm.String", "searchable": true, "retrievable": true, "analyzer": null },
  { "name": "metadata", "type": "Edm.String", "searchable": true, "filterable": true, "retrievable": true, "sortable": true, "facetable": true }
]

Diğer alanlar, örneğin content alanı, content_vector alanının insan tarafından okunabilir eşdeğerini sağlar. Dil modellerini yalnızca yanıt formülasyonu için kullanıyorsanız, nonvector içerik alanlarını atlayabilirsiniz, ancak arama sonuçlarını doğrudan istemci uygulamalarına gönderebilen çözümlerin, nonvector içeriği olmalıdır.

Meta veri alanları, özellikle kaynak belgeyle ilgili kaynak bilgileri içeren filtreler için kullanışlıdır. Doğrudan bir vektör alanında filtreleme yapamazsınız, ancak vektör sorgusu yürütmeden önce veya sonra filtrelemek için ön filtre, postfilter veya katı postfilter (önizleme) modlarını ayarlayabilirsiniz.

İçeri aktarma sihirbazı tarafından oluşturulan şema

Değerlendirme ve kavram kanıtı testi için Verileri içeri aktarma sihirbazını öneririz. Sihirbaz bu bölümde örnek şemayı oluşturur.

Sihirbaz içeriğinizi daha küçük arama belgelerine ayırır ve bu da yanıtları formüle etmek için dil modellerini kullanan RAG uygulamalarına yarar sağlar. Öbekleme, dil modellerinin giriş sınırları ve anlamsal dereceleyicinin belirteç sınırları içinde kalmanıza yardımcı olur. Ayrıca, sorguları birden çok üst belgeden alınan öbeklerle eşleştirerek benzerlik aramasında duyarlığı artırır. Daha fazla bilgi için Vektör arama çözümleri için büyük belgeleri parçala başlığına bakın.

Aşağıdaki örnekteki her arama belgesi için bir parça kimliği, üst kimlik, parça, başlık ve vektör alanı vardır. Sihirbaz:

  • chunk_id ve parent_id alanlarını base64 kodlanmış blob meta verileri (yol) ile doldurur.

  • chunk ve title alanlarını, sırasıyla blob içeriğinden ve blob adından ayıklar.

  • vector alanını vektörleştirmek için sağladığınız bir Azure OpenAI ekleme modelini çağırarak chunk alanını oluşturur. Bu işlem sırasında yalnızca vektör alanı tam olarak oluşturulur.

"name": "example-index-from-import-wizard",
"fields": [
  { "name": "chunk_id", "type": "Edm.String", "key": true, "searchable": true, "filterable": true, "retrievable": true, "sortable": true, "facetable": true, "analyzer": "keyword"},
  { "name": "parent_id", "type": "Edm.String", "searchable": true, "filterable": true, "retrievable": true, "sortable": true},
  { "name": "chunk", "type": "Edm.String", "searchable": true, "filterable": false, "retrievable": true, "sortable": false},
  { "name": "title", "type": "Edm.String", "searchable": true, "filterable": true, "retrievable": true, "sortable": false},
  { "name": "vector", "type": "Collection(Edm.Single)", "searchable": true, "retrievable": true, "dimensions": 1536, "vectorSearchProfile": "vector-1707768500058-profile"}
]

RAG ve sohbet stilindeki uygulamalar için vektör depolaması tasarlarsanız iki dizin oluşturabilirsiniz:

  • Dizine eklediğiniz ve vektörleştirdiğiniz statik içerik için bir tane.
  • İstem akışlarında kullanılabilecek konuşmalar için bir tane.

Gösterim amaçlı olarak, bu bölüm chat-with-your-data-solution-accelerator kullanarak chat-index ve conversations dizinlerini oluşturur.

Hızlandırıcı tarafından oluşturulan dizinlerin ekran görüntüsü.

Aşağıdaki alanlar chat-index üretken arama deneyimlerini destekler:

"name": "example-index-from-accelerator",
"fields": [
  { "name": "id", "type": "Edm.String", "searchable": false, "filterable": true, "retrievable": true },
  { "name": "content", "type": "Edm.String", "searchable": true, "filterable": false, "retrievable": true },
  { "name": "content_vector", "type": "Collection(Edm.Single)", "searchable": true, "retrievable": true, "dimensions": 1536, "vectorSearchProfile": "my-vector-profile"},
  { "name": "metadata", "type": "Edm.String", "searchable": true, "filterable": false, "retrievable": true },
  { "name": "title", "type": "Edm.String", "searchable": true, "filterable": true, "retrievable": true, "facetable": true },
  { "name": "source", "type": "Edm.String", "searchable": true, "filterable": true, "retrievable": true  },
  { "name": "chunk", "type": "Edm.Int32", "searchable": false, "filterable": true, "retrievable": true },
  { "name": "offset", "type": "Edm.Int32", "searchable": false, "filterable": true, "retrievable": true }
]

conversations tarafından desteklenen düzenleme ve sohbet geçmişi alanları şunlardır:

"fields": [
    { "name": "id", "type": "Edm.String", "key": true, "searchable": false, "filterable": true, "retrievable": true, "sortable": false, "facetable": false },
    { "name": "conversation_id", "type": "Edm.String", "searchable": false, "filterable": true, "retrievable": true, "sortable": false, "facetable": true },
    { "name": "content", "type": "Edm.String", "searchable": true, "filterable": false, "retrievable": true },
    { "name": "content_vector", "type": "Collection(Edm.Single)", "searchable": true, "retrievable": true, "dimensions": 1536, "vectorSearchProfile": "default-profile" },
    { "name": "metadata", "type": "Edm.String", "searchable": true, "filterable": false, "retrievable": true },
    { "name": "type", "type": "Edm.String", "searchable": false, "filterable": true, "retrievable": true, "sortable": false, "facetable": true },
    { "name": "user_id", "type": "Edm.String", "searchable": false, "filterable": true, "retrievable": true, "sortable": false, "facetable": true },
    { "name": "sources", "type": "Collection(Edm.String)", "searchable": false, "filterable": true, "retrievable": true, "sortable": false, "facetable": true },
    { "name": "created_at", "type": "Edm.DateTimeOffset", "searchable": false, "filterable": true, "retrievable": true },
    { "name": "updated_at", "type": "Edm.DateTimeOffset", "searchable": false, "filterable": true, "retrievable": true }
]

Aşağıdaki ekran görüntüsü, conversations için arama sonuçlarını gösterir:

RAG uygulamaları için tasarlanmış bir dizinin sonuçlarını içeren Arama Gezgini'nin ekran görüntüsü.

Bizim örneğimizde arama puanı 1,00'dır çünkü arama nitelenmemiştir. Çeşitli alanlar düzenleme ve istem akışlarını destekler:

  • conversation_id her sohbet oturumlarını tanımlar.
  • type , içeriğin kullanıcıdan mı yoksa yardımcıdan mı olduğunu gösterir.
  • created_at ve updated_at geçmişteki sohbetleri eskitebilirsiniz.

Fiziksel yapı ve boyut

Azure Yapay Zeka Arama'te, bir dizinin fiziksel yapısı büyük ölçüde dahili bir uygulamadır. Şemasına erişebilir, içeriğini yükleyip sorgulayabilir, boyutunu izleyebilir ve kapasitesini yönetebilirsiniz. Ancak Microsoft, arama hizmetinizle birlikte depolanan altyapıyı ve fiziksel veri yapılarını yönetir.

Bir dizinin boyutu ve maddesi aşağıdakiler tarafından belirlenir:

  • Belgelerinizin miktarı ve bileşimi.

  • Tek tek alanlardaki öznitelikler. Örneğin, filtrelenebilir alanlar için daha fazla depolama alanı gerekir.

  • İç gezinti yapılarının nasıl oluşturulduğunu belirten vektör yapılandırması da dahil olmak üzere dizin yapılandırması. Benzerlik araması için HNSW veya kapsamlı KNN'yi seçebilirsiniz.

Azure Yapay Zeka Arama, vektör depolamaya sınırlar getirerek tüm iş yükleri için dengeli ve kararlı bir sistem sağlamaya yardımcı olur. Azure portalında ve hizmet ile dizin istatistikleri aracılığıyla programatik olarak vektör kullanımı ayrı ayrı izlenir ve bildirilir, böylece sınırların altında kalmanıza yardımcı olunur.

Aşağıdaki ekran görüntüsünde, bir bölüm ve bir çoğaltma ile yapılandırılmış bir S1 hizmeti gösterilmektedir. Bu hizmet, her biri 1.536 eklemeden oluşan ortalama bir vektör alanına sahip 24 küçük dizine sahiptir. İkinci kutucuk, vektör dizinleri için kotayı ve kullanımı gösterir. Vektör dizini her vektör alanı için oluşturulan bir iç veri yapısı olduğundan, vektör dizinleri için depolama her zaman dizin tarafından kullanılan genel depolamanın bir bölümüdür. Nonvector alanları ve diğer veri yapıları gerisini tüketir.

Depolama, vektör dizini ve dizin sayısını gösteren kullanım kutucuklarının ekran görüntüsü.

Vektör dizini sınırları ve tahminleri başka bir makalede ele alınmıştır, ancak vurgulanması gereken iki nokta, maksimum depolama alanının arama hizmetinizin oluşturma tarihine ve fiyatlandırma katmanına bağlı olduğudur. Daha yeni aynı katmanlı hizmetler vektör dizinleri için önemli ölçüde daha fazla kapasiteye sahiptir. Bu nedenlerden dolayı şunları yapmalısınız:

Temel işlemler ve etkileşim

Bu bölümde, tek bir dizine bağlanma ve güvenli hale getirme de dahil olmak üzere vektör çalışma zamanı işlemleri tanıtlanmaktadır.

Not

Dizini taşımak veya kopyalamak için portal veya API desteği yoktur. Genellikle, uygulama dağıtımınızı farklı bir arama hizmetine yönlendirirsiniz (aynı dizin adını kullanarak) veya geçerli arama hizmetinizde bir kopyasını oluşturmak için adı değiştirin ve ardından oluşturun.

Dizin yalıtımı

Azure Yapay Zeka Arama'da bir kerede bir dizinle çalışırsınız. Dizinle ilgili tüm işlemler tek bir dizini hedefler. dizin oluşturma veya sorgulama için ilgili dizinler veya bağımsız dizinlerin birlenmesi kavramı yoktur.

Sürekli kullanılabilir

İlk belge dizine eklendiğinde sorgular için bir dizin hemen kullanılabilir, ancak tüm belgeler dizine alınana kadar tam olarak çalışmaz. Dahili olarak, bir dizin bölümler arasında dağıtılır ve kopyalar üzerinde yürütülür. Fiziksel dizin dahili olarak yönetilir. Mantıksal dizini yönetirsiniz.

Dizin sürekli kullanılabilir ve duraklatılamaz veya çevrimdışına alınamaz. Sürekli işlem için tasarlandığından içeriğinde yapılan güncelleştirmeler ve dizine yapılan eklemeler gerçek zamanlı olarak gerçekleşir. bir istek belge güncelleştirmesiyle çakışıyorsa, sorgular geçici olarak eksik sonuçlar döndürebilir.

Yenileme veya silme gibi belge işlemleri ve yeni alanlar ekleme gibi bir dizinin mevcut yapısını veya bütünlüğünü etkilemeyen değişiklikler için sorgu sürekliliği vardır. Mevcut alanları değiştirme gibi yapısal güncelleştirmeler genellikle geliştirme ortamındaki bir bırakma ve yeniden derleme iş akışı kullanılarak veya üretim hizmetinde dizinin yeni bir sürümü oluşturularak yönetilir.

Dizin yeniden oluşturulmasını önlemek için, küçük değişiklikler yapan bazı müşteriler önceki bir sürümle birlikte var olan yeni bir alan oluşturarak bir alanı "sürümlemektedir". Zaman içinde, özellikle çoğaltılması pahalı olan bir üretim dizininde, eski alanlar ve eski özel çözümleyici tanımları nedeniyle başkasıyla ilişkisi kalmamış içeriğe yol açar. Dizin yaşam döngüsü yönetiminin bir parçası olarak dizinde planlı güncelleştirmeler sırasında bu sorunları çözebilirsiniz.

Uç nokta bağlantısı

Tüm vektör dizin oluşturma ve sorgu istekleri bir dizini hedefler. Uç noktalar genellikle aşağıdakilerden biridir:

Uç nokta Bağlantı ve erişim denetimi
<your-service>.search.windows.net/indexes Dizinler koleksiyonunu hedefler. Dizin oluştururken, listelerken veya silerken kullanılır. Bu işlemler için yönetici hakları gereklidir ve yönetici API anahtarları veya Arama Katkıda Bulunanı rolü aracılığıyla kullanılabilir.
<your-service>.search.windows.net/indexes/<your-index>/docs Tek bir dizin belge koleksiyonunu hedefler. Bir dizini veya veri yenilemeyi sorgularken kullanılır. Sorgular için okuma hakları yeterlidir ve sorgu API'si anahtarları veya veri okuyucu rolü aracılığıyla kullanılabilir. Veri yenileme için yönetici hakları gereklidir.
  1. İzinleriniz veya API erişim anahtarınız olduğundan emin olun. Mevcut bir dizini sorgulamadığınız sürece, bir arama hizmetindeki içeriği yönetmek ve görüntülemek için yönetici haklarına veya Katkıda Bulunan rol atamasına ihtiyacınız vardır.

  2. Azure portalıyla başlayın. Arama hizmetini oluşturan kişi, Erişim denetimi (IAM) sayfasında başkalarına erişim vermek de dahil olmak üzere hizmeti görüntüleyebilir ve yönetebilir.

  3. Programlı erişim için diğer istemcilere geçin. İlk adımlar için Quickstart: REST ve azure-search-vector-samples deposu kullanılarak vektör araması önerilir.

Vektör depolarını yönetme

Azure, tanılama günlüğü ve uyarı içeren bir monitoring platformu sağlar. Şunları yapmanızı öneririz:

Vektör verilerine güvenli erişim

Azure Yapay Zeka Arama veri şifrelemesi, İnternet dışı senaryolar için özel bağlantılar ve Microsoft Entra ID aracılığıyla güvenli erişim için rol atamaları uygular. Kurumsal güvenlik özellikleri hakkında daha fazla bilgi için bkz. Veri, gizlilik ve yerleşik korumalar.