Azure Yapay Zeka Arama için ajan tabanlı veri alma dizini oluşturma

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.

Bu makalede, aracılı alma için gerekli dizin alanları ve yapılandırmaları açıklanmaktadır. Bu gereksinimlerin hiçbiri yeni değil. Önceki bir API sürümüyle oluşturulmuş olsa bile ölçütleri karşılayan mevcut bir dizini kullanabilirsiniz.

Dizine alınan her bilgi kaynağı, temel alınan bir dizine bağlıdır. İşlem hattınızı nasıl ayarladığınıza bağlı olarak, dizin aşağıdakilerden biri olabilir:

  • Varolan:Arama dizini bilgi kaynağı aracılığıyla kullanıma sunulan tek başına dizin. Dizinin bu makaledeki ölçütlere uyması gerekir.

  • Oluşturulan:Dizinlenmiş bilgi kaynağı tarafından otomatik olarak oluşturulan dizin. Oluşturulan dizinler varsayılan olarak tüm ölçütleri karşılar.

Etken alma ölçütleri

Aşağıdaki tablo, gereksinim düzeyine göre aracısal alma işlemini etkileyen dizin öğelerini düzenler.

Dizin öğesi Requirement Notlar
searchable ve retrievable dize alanları Gerekli Sorgu yürütme ve sonuç alma için kullanılır.
Anlamsal yapılandırma Gerekli Bilgi kaynağındaki anlamsal yapılandırmayı kullanın defaultSemanticConfiguration veya geçersiz kılın.
Alıntı alanları Recommended Belge adı, sayfa numarası veya öbek kimliği gibi kaynak içeriğe yanıtları ilişkilendiren kullanıcı tanımlı alanlar.
Vektör alanları ve vektörleştirici Recommended Sorgu zamanında metinden vektöre dönüştürmeyi etkinleştirir.
Puanlama Profili Optional Belirli alanlar için ilgi düzeyini artırır. Otomatik olarak uygulanacak şekilde ayarlayın defaultScoringProfile .
Analyzer Optional Metnin, boşluk veya özel karakterleri işleme gibi belirteçlere nasıl sahip olduğunu denetler.
Eş anlamlı haritalar Optional Terminoloji veya jargon ile sorguları genişletir.

Örnek dizin tanımı

Aşağıdaki örnek, ajan tabanlı geri getirme için çalışan bir dizini göstermektedir. Gerekli öğelerin ölçütlerini karşılar ve vektör alanlarını en iyi uygulama olarak içerir.

{
  "name": "earth_at_night",
  "description": "Contains images and descriptions of our planet in darkness as captured from space by Earth-observing satellites and astronauts on the International Space Station over the past 25 years.",
  "fields": [
    {
      "name": "id", "type": "Edm.String",
      "searchable": true, "retrievable": true, "filterable": true, "sortable": true, "facetable": true,
      "key": true,
      "stored": true,
      "synonymMaps": []
    },
    {
      "name": "page_chunk", "type": "Edm.String",
      "searchable": true, "retrievable": true, "filterable": false, "sortable": false, "facetable": false,
      "analyzer": "en.microsoft",
      "stored": true,
      "synonymMaps": []
    },
    {
      "name": "page_chunk_vector_text_3_large", "type": "Collection(Edm.Single)",
      "searchable": true, "retrievable": false, "filterable": false, "sortable": false, "facetable": false,
      "dimensions": 3072,
      "vectorSearchProfile": "hnsw_text_3_large",
      "stored": false,
      "synonymMaps": []
    },
    {
      "name": "page_number", "type": "Edm.Int32",
      "searchable": false, "retrievable": true, "filterable": true, "sortable": true, "facetable": true,
      "stored": true,
      "synonymMaps": []
    },
    {
      "name": "chapter_number", "type": "Edm.Int32",
      "searchable": false, "retrievable": true, "filterable": true, "sortable": true, "facetable": true,
      "stored": true,
      "synonymMaps": []
    }
  ],
  "semantic": {
    "defaultConfiguration": "semantic_config",
    "configurations": [
      {
        "name": "semantic_config",
        "flightingOptIn": false,
        "prioritizedFields": {
          "prioritizedContentFields": [
            {
              "fieldName": "page_chunk"
            }
          ],
          "prioritizedKeywordsFields": []
        }
      }
    ]
  },
  "vectorSearch": {
    "algorithms": [
      {
        "name": "alg",
        "kind": "hnsw",
        "hnswParameters": {
          "metric": "cosine",
          "m": 4,
          "efConstruction": 400,
          "efSearch": 500
        }
      }
    ],
    "profiles": [
      {
        "name": "hnsw_text_3_large",
        "algorithm": "alg",
        "vectorizer": "azure_openai_text_3_large"
      }
    ],
    "vectorizers": [
      {
        "name": "azure_openai_text_3_large",
        "kind": "azureOpenAI",
        "azureOpenAIParameters": {
          "resourceUri": "https://YOUR-AOAI-RESOURCE.openai.azure.com",
          "deploymentId": "text-embedding-3-large",
          "modelName": "text-embedding-3-large"
        }
      }
    ],
    "compressions": []
  }
}

Üretken yapay zeka veya erişimle zenginleştirilmiş üretim (RAG) için iyi tasarlanmış bir indeks aşağıdaki bileşenlere sahiptir:

  • Bir LLM veya aracısının bir dizinin kullanılması mı yoksa atlanması mı gerektiğini belirlemek için kullanabileceği bir açıklama.

  • Yanıt oluşturmak için bir LLM’ye girdi belirteçleri olarak verebileceğiniz, insanların okuyabileceği metin parçaları.

  • "Agentik geri çağırma, en uygun öbekleri tanımlamak için düzey 2 (L2) semantik sıralamayı kullandığı için bir anlamsal sıralayıcı yapılandırması."

  • (İsteğe bağlı) Tamamlayıcı vektör araması için insan tarafından okunabilen metin öbeklerinin vektör eşdeğeri sürümleri.

Parçalara ayrılmış metin önemlidir çünkü LLM'ler, insanlar tarafından okunabilen düz metin içeriğini token’lara ayrılmış dizeler hâlinde işler ve üretir. Bu nedenle, düz metin dizeleri sağlayan ve yanıtta searchable olan retrievable alanları istersiniz. Azure Yapay Zeka Arama'da built-in veya üçüncü taraf çözümleri kullanarak öbeklenmiş metin oluşturabilirsiniz.

Öbeklenmiş içerik için yerleşik bir varsayım, özgün kaynak belgelerin büyük miktarda ayrıntılı içeriğe sahip olduğudur. Kaynak içeriğiniz, örneğin bir ürün veritabanı gibi, yapılandırılmış veriyse dizininizde öbekleme yapılmamalı; bunun yerine ürün adı, kategori veya açıklama gibi orijinal veri kaynağıyla eşleşen alanlar bulunmalıdır. searchable ve retrievable atfı, yapılandırılmış veriler için de geçerlidir. searchable içeriği sorgular kapsamında kullanılabilir hâle getirir ve retrievable bunu arama sonuçlarına ekler (dayanak verileri).

Vektör içeriği, bilgi alma işlemine benzerlik araması eklediğinden yararlı olabilir. Sorgu zamanında, dizinde vektör alanları bulunduğunda, aracısal alma altyapısı metin sorgusuna paralel olarak bir vektör sorgusu yürütür. Vektör sorguları, sözcükleri eşleştirmek yerine benzer içerik aradığından, vektör sorgusu bir metin sorgusunda eksik olabilecek yüksek oranda ilgili bir sonuç bulabilir. Vektör eklemek, dayanak verilerinizin kalitesini artırabilir ve iyileştirebilir, ancak kesin olarak zorunlu değildir. Azure Yapay Zeka Arama, vektörleştirme için yerleşik bir yaklaşıma sahiptir.

Vektör alanları yalnızca Azure Yapay Zeka Arama üzerinde sorgu yürütme için kullanılır. İnsan veya LLM okunabilir olmadığından sonuçlarda vektöre ihtiyacınız yoktur. Alan gereksinimlerini en aza indirmek için `retrievable` ve `stored` ayarlarını false olarak ayarlamanızı öneririz. Daha fazla bilgi için bkz . Vektör depolama ve işlemeyi iyileştirme.

Vektör kullanıyorsanız, vektör arama yapılandırmasında tanımlanmış bir vektörleştiricinin olması kritik önem taşır. Vektör alanınızın sorgu yürütme sırasında kullanılıp kullanılmayacağını belirler. Vektörleştirici, vektörler üzerinde benzerlik araması için sorgu zamanında dize alt sorgularını vektörlere kodlar. Vektörleştirici, dizinde vektörleri oluşturmak için kullanılan ekleme modeliyle aynı olmalıdır.

Varsayılan olarak, tüm searchable alanlar sorgu yürütmeye dahil edilir ve tüm retrievable alanlar sonuç olarak döndürülür. Arama dizini bilgi kaynağı tanımında her eylem için hangi alanların kullanılacağını seçebilirsiniz.

Açıklama ekleme

Dizin description alanı, sorgu için belirli bir dizini kullanmaya karar verirken LLM'lere ve Model Bağlam Protokolü (MCP) sunucularına rehberlik sağlamak için kullanabileceğiniz kullanıcı tanımlı bir dizedir. Bir sistemin birkaç dizine erişmesi ve açıklamaya göre bir karar vermesi gerektiğinde bu insan tarafından okunabilir metin çok değerlidir.

Dizin açıklaması bir şema güncelleştirmesidir ve dizinin tamamını yeniden oluşturmak zorunda kalmadan bunu ekleyebilirsiniz.

  • Dize uzunluğu en fazla 4.000 karakterdir.

  • İçerik, Unicode olarak insan tarafından okunabilir olmalıdır. Hangi dili (örneğin, İngilizce veya başka bir dil) kullanacağınızı kullanım örneğinin belirlemesi gerekir.

Anlamsal yapılandırma ekleme

Dizinde en az bir semantik yapılandırma olmalıdır. Anlamsal yapılandırmada aşağıdakiler olmalıdır:

  • Adlandırılmış yapılandırma.
  • prioritizedContentFields'ye hem searchable hem de retrievable özelliklerine sahip en az bir dize alanı ayarlanmış.

Anlamsal yapılandırmayı adla belirtmenin iki yolu vardır. Dizin defaultSemanticConfiguration adlandırılmış bir yapılandırmaya ayarlandıysa, alma işlemi bunu kullanır. Alternatif olarak, arama dizini bilgi kaynağı içinde semantik yapılandırmayı belirtebilirsiniz.

prioritizedContentFields yapılandırmanın içinde gereklidir. Başlık ve anahtar sözcükler isteğe bağlıdır. Parçalanmış içerik söz konusu olduğunda, bunlardan birine sahip olmayabilirsiniz. Bununla birlikte, varlık tanıma veya anahtar ifade ayıklama eklerseniz, her öbekle ilişkilendirilmiş bazı anahtar sözcükleriniz olabilir ve bu anahtar sözcükler arama senaryolarında, belki de bir puanlama profilinde yararlı olabilir.

Aşağıdaki örnekte aracılı alma için çalışan bir anlamsal yapılandırma gösterilmektedir.

"semantic":{
   "defaultConfiguration":"semantic_config",
   "configurations":[
      {
         "name":"semantic_config",
         "flightingOptIn":false,
         "prioritizedFields":{
            "titleField":{
               "fieldName":""
            },
            "prioritizedContentFields":[
               {
                  "fieldName":"page_chunk"
               }
            ],
            "prioritizedKeywordsFields":[
               {
                  "fieldName":"Category"
               },
               {
                  "fieldName":"Tags"
               },
               {
                  "fieldName":"Location"
               }
            ]
         }
      }
   ]
}

Not

Yanıt, title, terms ve content sağlar, bu yapılandırmadaki önceliklendirilmiş alanlarla eşleşir.

Vektörleştirici ekleme

Dizininiz vektör alanları içeriyorsa, sorgu planı, bu alanlar searchable olduğunda ve vectorizer atamasına sahip olduğunda bu alanları içerir.

Vektörleştirici, sorgu zamanında metinden vektöre dönüştürmeler sağlayan bir ekleme modeli belirtir. Dizininizdeki vektör içeriğini kodlamak için kullanılan ekleme modeline işaret etmelidir. Azure Yapay Zeka Arama tarafından desteklenen herhangi bir ekleme modelini kullanabilirsiniz. Vektör alanlarında vektörleştiricileri bir vektör profili yoluyla belirtirsiniz.

Dizin örneğindeki vektör alanı tanımı , model tarafından oluşturulan eklemelerin sayısı olan anahtar alan özniteliklerini gösterir: dimensionsve vectorSearchProfile.

  {
    "name": "page_chunk_text_3_large", "type": "Collection(Edm.Single)",
    "searchable": true, "retrievable": false, "filterable": false, "sortable": false, "facetable": false,
    "dimensions": 3072,
    "vectorSearchProfile": "hnsw_text_3_large",
    "stored": false,
    "synonymMaps": []
  }

Vektör profilleri vektörleştiricilerin, algoritmaların ve sıkıştırma tekniklerinin yapılandırmalarıdır. Her vektör alanı yalnızca bir profil kullanabilir, ancak her vektör alanı için benzersiz profiller istemeniz durumunda dizininizde çok sayıda profil olabilir.

Vektörleri sorgulamak ve vektörleştirici çağırmak, genel isteğe gecikme ekler, ancak benzerlik araması yapmak istiyorsanız, dengelemeye değer.

Aşağıdaki örnek, vectorSearch yapılandırmasında yer aldığı şekliyle ajan tabanlı alım için çalışan bir vektörleştiriciyi gösterir. Vektörleştirici tanımında aracılı alma ile çalışmak için değiştirilmesi gereken hiçbir şey yoktur.

"vectorSearch": {
  "algorithms": [
    {
      "name": "alg",
      "kind": "hnsw",
      "hnswParameters": {
        "metric": "cosine",
        "m": 4,
        "efConstruction": 400,
        "efSearch": 500
      }
    }
  ],
  "profiles": [
    {
      "name": "hnsw_text_3_large",
      "algorithm": "alg",
      "vectorizer": "azure_openai_text_3_large"
    }
  ],
  "vectorizers": [
    {
      "name": "azure_openai_text_3_large",
      "kind": "azureOpenAI",
      "azureOpenAIParameters": {
        "resourceUri": "https://YOUR-AOAI-RESOURCE.openai.azure.com",
        "deploymentId": "text-embedding-3-large",
        "modelName": "text-embedding-3-large"
      }
    }
  ],
  "compressions": []
}

Puanlama profili ekleme

Puanlama profilleri , ilgiyi artırma ölçütleridir. Bunlar vektör olmayan alanlara (metin ve sayılar) uygulanır ve sorgu yürütme sırasında değerlendirilir, ancak kesin davranış dizini oluşturmak için kullanılan API sürümüne bağlıdır.

Dizininiz yapılandırılmış verilere dayalıysa puanlama profilinin çözümünüz için değer ekleme olasılığı daha yüksektir. Yapılandırılmış veriler birden çok ayrık alanda dizine alınır; bu da puanlama profilinizin belirli bir alanın içeriğini veya özelliklerini hedefleyen ölçütlere sahip olabileceği anlamına gelir.

Dizini 2025-05-01-preview veya üzerini kullanarak oluşturursanız, puanlama profili en son yürütülür. Dizin önceki bir API sürümü kullanılarak oluşturulduysa puanlama profilleri anlamsal yeniden boyutlandırmadan önce değerlendirilir. Sıralanmış sonuçların gerçek sırası dizindeki rankingOrder özelliği tarafından belirlenir ve bu özellik (puanlama profili uygulandı) veya boostedRerankerScore (puanlama profili yok) olarak ayarlanır rerankerScore .

Dizininiz için anlamlı olan herhangi bir puanlama profilini kullanabilirsiniz. Aşağıdaki örnekte, eşleşme belirli bir alanda bulunursa eşleşmenin arama puanını artıran bir puanlama profili gösterilmektedir. Alanlar, çarpanları artırarak ağırlıklandırılır. Örneğin, "Kategori" alanında bir eşleşme bulunursa, artırılan puan 5 ile çarpılır.

"scoringProfiles": [
    {
      "name": "boostSearchTerms",
      "text": {
        "weights": {
          "Location": 2,
          "Category": 5
        }
      }
    }
]

Çözümleyici ekleme

Çözümleyiciler metin alanlarına uygulanır ve özel karakterleri veya boşluğu koruma gibi dizinde belirteç oluşturmayı denetleen dil çözümleyicileri veya özel çözümleyiciler olabilir.

Çözümleyiciler bir arama dizini içinde tanımlanır ve alanlara atanır. Alan koleksiyonu örneği, metin öbekleri üzerinde bir çözümleyici başvurusu içerir. Bu örnekte, varsayılan çözümleyici (standart Lucene) İngilizce için Microsoft dil çözümleyicisiyle değiştirilir.

{
  "name": "page_chunk", "type": "Edm.String",
  "searchable": true, "retrievable": true, "filterable": false, "sortable": false, "facetable": false,
  "analyzer": "en.microsoft",
  "stored": true,
  "synonymMaps": []
}

Eş anlamlı haritası ekle

Eş anlamlı eşlemeleri , adlandırılmış terimler için eş anlamlılar ekleyerek sorguları genişletir. Örneğin, yaygın terimler için bilimsel veya tıbbi terimleriniz olabilir.

Eş anlamlı haritaları, arama dizininde en üst düzey kaynak olarak tanımlanır ve alanlara atanır. Alan koleksiyonu örneğinde eş anlamlı eşlem yoktur, ancak aşağıdaki örnekte ülke/bölge adlarının değişken yazımlarıyla eş anlamlı eşleminin varsayımsal bir "konumlar" alanına nasıl atanabileceği gösterilmektedir.

{
    "name":"locations",
    "type":"Edm.String",
    "searchable":true,
    "synonymMaps":[ "country-region-synonyms" ]
}

Dizininizi bir bilgi kaynağına ekleme

Zaten var olan ve bir bilgi kaynağı tarafından oluşturulmamış tek başına bir dizininiz varsa aşağıdaki nesneleri oluşturun:

  • Dizine alınan içeriğinizi kapsüllemek için bir arama dizini bilgi kaynağı .
  • Bir veya daha fazla bilgi kaynağını ve aracılık alma yönergelerini temsil eden bir bilgi bankası .