Arama dizininde vektörleştirici yapılandırma

Önemli

Bu özellik, Ek Kullanım Koşulları altında genel önizleme aşamasındadır. 2023-10-01-Preview REST API'si bu özelliği destekler.

Azure AI Search'te vektörleştirici , Azure OpenAI'de dağıtılan bir ekleme modeli gibi vektörleştirme gerçekleştiren ve sorgu yürütme sırasında metni vektörlere dönüştüren yazılımdır.

Arama dizininde tanımlanır, aranabilir vektör alanlarına uygulanır ve sorgu zamanında metin sorgusu girişi için ekleme oluşturmak için kullanılır. Bunun yerine, dizin oluşturma işleminin bir parçası olarak metni vektörleştirmeniz gerekiyorsa Tümleşik Vektörleştirme (Önizleme) bölümüne bakın. Dizin oluşturma sırasında yerleşik vektörleştirme için ham metin içeriğiniz için Azure OpenAI ekleme modelini çağıran bir dizin oluşturucu ve beceri kümesi yapılandırabilirsiniz.

Dizin aramasına vektörleştirici eklemek için, Azure portalında dizin tasarımcısını kullanabilir veya Dizin Oluşturma veya Güncelleştirme 2023-10-01-preview REST API'sini çağırabilir veya bu özelliği sağlamak için güncelleştirilen herhangi bir Azure beta SDK paketini kullanabilirsiniz.

Önkoşullar

Vektör sorgusu yürütmeyi onaylamak için arama hizmetinizde tanılama günlüğünü etkinleştirmenizi öneririz.

Örnek verilerle vektörleştiriciyi deneyin

Verileri içeri aktarma ve vektörleştirme sihirbazı Azure Blob depolamadan dosyaları okur, öbeklenmiş ve vektörleştirilmiş alanlarla bir dizin oluşturur ve bir vektörleştirici ekler. Tasarım gereği, sihirbaz tarafından oluşturulan vektörleştirici, blob içeriğini dizine almak için kullanılan ekleme modeline ayarlanır.

  1. Örnek veri dosyalarını Azure Depolama'da bir kapsayıcıya yükleyin. Bu yönergeleri ücretsiz bir arama hizmetinde test etmek için NASA'nın dünya kitabından bazı küçük metin dosyaları kullandık.

  2. Veri kaynağı için blob kapsayıcısını seçerek Verileri içeri aktarma ve vektörleştirme sihirbazını çalıştırın.

    Verinize bağlanma sayfasının ekran görüntüsü.

  3. Text-embedding-ada-002'nin mevcut dağıtımını seçin. Bu model, dizin oluşturma sırasında eklemeler oluşturur ve sorgular sırasında kullanılan vektörleştiriciyi yapılandırmak için de kullanılır.

    Verileri vektörleştirme ve zenginleştirme sayfasının ekran görüntüsü.

  4. Sihirbaz tamamlandıktan ve tüm dizin oluşturucu işlemleri tamamlandıktan sonra aranabilir vektör alanı olan bir dizininiz olmalıdır. Alanın JSON tanımı şöyle görünür:

     {
         "name": "vector",
         "type": "Collection(Edm.Single)",
         "searchable": true,
         "retrievable": true,
         "dimensions": 1536,
         "vectorSearchProfile": "vector-nasa-ebook-text-profile"
     }
    
  5. Ayrıca aşağıdaki örneğe benzer bir vektör profiliniz ve vektörleştiriciniz olmalıdır:

    "profiles": [
       {
         "name": "vector-nasa-ebook-text-profile",
         "algorithm": "vector-nasa-ebook-text-algorithm",
         "vectorizer": "vector-nasa-ebook-text-vectorizer"
       }
     ],
     "vectorizers": [
       {
         "name": "vector-nasa-ebook-text-vectorizer",
         "kind": "azureOpenAI",
         "azureOpenAIParameters": {
           "resourceUri": "https://my-fake-azure-openai-resource.openai.azure.com",
           "deploymentId": "text-embedding-ada-002",
           "apiKey": "0000000000000000000000000000000000000",
           "authIdentity": null
         },
         "customWebApiParameters": null
       }
     ]
    
  6. Sorgu yürütme sırasında vektörleştiricinizi metinden vektöre dönüştürme için test etmek için ileri atlayın.

Vektörleştirici ve vektör profili tanımlama

Bu bölümde, vektörleştiriciyi el ile tanımlamak için dizin şemasında yapılan değişiklikler açıklanmaktadır.

  1. Arama dizinine eklemek vectorizers için Dizin Oluştur veya Güncelleştir 'i (önizleme) kullanın.

  2. Dizin tanımınıza aşağıdaki JSON'ı ekleyin. Vektörleştiriciler bölümü, dağıtılan bir ekleme modeline bağlantı bilgileri sağlar. Bu adım, bir Azure OpenAI ekleme modelini ve özel bir web API'sini yan yana karşılaştırabilmeniz için iki vektörleştirici örneği gösterir.

      "vectorizers": [
        {
          "name": "my_azure_open_ai_vectorizer",
          "kind": "azureOpenAI",
          "azureOpenAIParameters": {
            "resourceUri": "https://url.openai.azure.com",
            "deploymentId": "text-embedding-ada-002",
            "apiKey": "mytopsecretkey"
          }
        },
        {
          "name": "my_custom_vectorizer",
          "kind": "customWebApi",
          "customVectorizerParameters": {
            "uri": "https://my-endpoint",
            "authResourceId": " ",
            "authIdentity": " "
          }
        }
      ]
    
  3. Aynı dizinde, vektörleştiricilerinizden birini belirten bir vektör profilleri bölümü ekleyin. Vektör profilleri ayrıca gezinti yapıları oluşturmak için kullanılan bir vektör arama algoritması gerektirir.

    "profiles": [ 
        { 
            "name": "my_vector_profile", 
            "algorithm": "my_hnsw_algorithm", 
            "vectorizer":"my_azure_open_ai_vectorizer" 
        }
    ]
    
  4. Vektör alanına vektör profili atayın. Aşağıdaki örnekte gerekli anahtar alanı, başlık dizesi alanı ve vektör profili ataması olan iki vektör alanı içeren bir alan koleksiyonu gösterilmektedir.

    "fields": [ 
            { 
                "name": "ID", 
                "type": "Edm.String", 
                "key": true, 
                "sortable": true, 
                "analyzer": "keyword" 
            }, 
            { 
                "name": "title", 
                "type": "Edm.String"
            }, 
            { 
                "name": "vector", 
                "type": "Collection(Edm.Single)", 
                "dimensions": 1536, 
                "vectorSearchProfile": "my_vector_profile", 
                "searchable": true, 
                "retrievable": true
            }, 
            { 
                "name": "my-second-vector", 
                "type": "Collection(Edm.Single)", 
                "dimensions": 1024, 
                "vectorSearchProfile": "my_vector_profile", 
                "searchable": true, 
                "retrievable": true
            }
    ]
    

Vektörleştiriciyi test edin

Vektörleştirici aracılığıyla sorgu göndermek için bir arama istemcisi kullanın. Bu örnekte, REST istemcisi ve örnek dizin içeren Visual Studio Code varsayılır.

  1. Visual Studio Code'da bir arama uç noktası ve arama sorgusu API'si anahtarı sağlayın:

     @baseUrl: 
     @queryApiKey: 00000000000000000000000
    
  2. Vektör sorgusu isteğine yapıştırın. Önizleme REST API sürümünü kullandığınızdan emin olun.

     ### Run a query
     POST {{baseUrl}}/indexes/vector-nasa-ebook-txt/docs/search?api-version=2023-10-01-preview  HTTP/1.1
         Content-Type: application/json
         api-key: {{queryApiKey}}
    
         {
             "count": true,
             "select": "title,chunk",
             "vectorQueries": [
                 {
                     "kind": "text",
                     "text": "what cloud formations exists in the troposphere",
                     "fields": "vector",
                     "k": 3,
                     "exhaustive": true
                 }
             ]
         }
    

    Sorguyla ilgili önemli noktalar şunlardır:

    • "kind": "text" arama altyapısına girişin bir metin dizesi olduğunu ve arama alanıyla ilişkili vektörleştiriciyi kullanmasını bildirir.

    • "text": "what cloud formations exists in the troposphere" vektörleştirecek metin dizesidir.

    • "fields": "vector" , sorgunun yapılacağı alanın adıdır. Sihirbaz tarafından oluşturulan örnek dizini kullanırsanız, oluşturulan vektör alanı olarak adlandırılır vector.

  3. İsteği gönderin. İlk sonucun en uygun olduğu üç k sonuç almalısınız.

Sorgu zamanında ayarlanacağı vektörleştirici özellikleri olmadığına dikkat edin. Sorgu, dizindeki vektör profili alanı ataması temelinde vektörleştirici özelliklerini okur.

Günlükleri denetleme

Arama hizmetiniz için tanılama günlüğünü etkinleştirdiyseniz, vektör alanınızda sorgu yürütmeyi onaylamak için bir Kusto sorgusu çalıştırın:

OperationEvent
| where TIMESTAMP > ago(30m)
| where Name == "Query.Search" and AdditionalInfo["QueryMetadata"]["Vectors"] has "TextLength"

En iyi yöntemler

Azure OpenAI vektörleştiricisi ayarlanıyorsa, Azure OpenAI ekleme becerisi için önerdiğimiz en iyi yöntemlerin aynısını göz önünde bulundurun.

Ayrıca bkz.