Bagikan melalui


Mengonfigurasi vektorizer dalam indeks pencarian

Dalam Azure AI Search, vektorizer adalah komponen yang melakukan vektorisasi menggunakan model penyematan yang disebarkan di Azure OpenAI atau Azure Vision di Foundry Tools. Ini mengonversi teks (atau gambar) menjadi vektor selama eksekusi kueri.

Ini ditentukan dalam indeks pencarian, ini berlaku untuk bidang vektor yang dapat dicari, dan digunakan pada waktu kueri untuk menghasilkan penyematan untuk input kueri teks atau gambar. Jika sebaliknya Anda perlu mem-vektorisasi konten sebagai bagian dari proses pengindeksan, lihat vektorisasi terintegrasi. Untuk vektorisasi bawaan selama pengindeksan, Anda dapat mengonfigurasi pengindeks dan set keterampilan yang memanggil model penyematan untuk teks mentah atau konten gambar Anda.

Untuk menambahkan vektorizer ke indeks pencarian, Anda dapat menggunakan perancang indeks di portal Azure, atau memanggil REST API Buat atau Perbarui Indeks, atau gunakan paket Azure SDK apa pun yang diperbarui untuk menyediakan fitur ini.

Vektorizer sekarang tersedia secara umum selama Anda menggunakan pasangan vektorizer keterampilan yang tersedia secara umum. Vektorizer AzureOpenAIEmbedding dan keterampilan AzureOpenAIEmbedding umumnya tersedia. Vektorizer API Web kustom juga tersedia secara umum.

Vektorizer Azure Vision, vektorizer katalog model Microsoft Foundry, dan keterampilan yang setara masih dalam pratinjau. Set keterampilan Anda harus menentukan REST API pratinjau 2024-05-01 untuk menggunakan keterampilan pratinjau dan vektorizer.

Prasyarat

  • Indeks dengan bidang vektor yang dapat dicari di Azure AI Search.

  • Model penyematan yang disebarkan (lihat bagian berikutnya).

  • Izin untuk menggunakan model penyematan. Di Azure OpenAI, pemanggil harus memiliki izin Pengguna OpenAI Cognitive Services. Atau, Anda dapat menyediakan kunci API.

  • Visual Studio Code dengan klien REST untuk mengirim kueri dan menerima respons.

Kami menyarankan agar Anda mengaktifkan pembuatan log diagnostik pada layanan pencarian Anda untuk mengonfirmasi eksekusi kueri vektor.

Model penyematan yang didukung

Tabel berikut mencantumkan model penyematan yang dapat digunakan dengan vektorizer. Karena Anda harus menggunakan model penyematan yang sama untuk pengindeksan dan kueri, vektorizer dipasangkan dengan keterampilan yang menghasilkan penyematan selama pengindeksan. Tabel mencantumkan keterampilan yang terkait dengan vektorizer tertentu.

Jenis vektorizer Nama model Penyedia model Keterampilan terkait
azureOpenAI text-embedding-ada-002
text-embedding-3
Azure OpenAI Keterampilan AzureOpenAIEmbedding
aml Cohere-embed-v3
Cohere-embed-v4 1
Katalog model pabrik Keterampilan AML
aiServicesVision Penyematan multimodal API 4.0 Azure Vision (melalui sumber daya Foundry) Keterampilan penyematan multimodal Azure Vision
customWebApi Model penyematan apa pun Dihosting secara eksternal Keterampilan API Web Kustom

1 Saat ini, Anda hanya dapat menentukan embed-v-4-0 secara terprogram melalui keterampilan AML atau vektorizer katalog model Microsoft Foundry, bukan melalui portal Microsoft Azure. Namun, Anda dapat menggunakan portal untuk mengelola keterampilan atau pemvektor sesudahnya.

Coba vektorizer dengan data sampel

Panduan Impor data (baru) membaca file dari penyimpanan Azure Blob, membuat indeks dengan bidang yang dipartisi dan di-vektorisasi, dan menambahkan vektorizer. Secara desain, vektorizer yang dibuat oleh wizard diatur ke model penyematan yang sama yang digunakan untuk mengindeks konten blob.

  1. Unggah file data sampel ke kontainer di Azure Storage. Kami menggunakan beberapa file teks kecil dari buku bumi NASA untuk menguji instruksi ini pada layanan pencarian gratis.

  2. Jalankan wizard Impor data (baru), pilih kontainer blob untuk sumber data.

    Cuplikan layar halaman sambungkan ke data Anda.

  3. Pilih penyebaran teks-penyematan yang ada-ada-002. Model ini menghasilkan penyematan selama pengindeksan dan juga digunakan untuk mengonfigurasi vektorizer yang digunakan selama kueri.

    Cuplikan layar halaman vektorisasi dan perkaya data.

  4. Setelah wizard selesai dan semua pemrosesan pengindeks selesai, Anda harus memiliki indeks dengan bidang vektor yang dapat dicari. Definisi JSON bidang terlihat seperti ini:

     {
         "name": "vector",
         "type": "Collection(Edm.Single)",
         "searchable": true,
         "retrievable": true,
         "dimensions": 1536,
         "vectorSearchProfile": "vector-nasa-ebook-text-profile"
     }
    
  5. Anda juga harus memiliki profil vektor dan vektorizer, mirip dengan contoh berikut:

    "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",
           "modelName": "text-embedding-ada-002",
           "apiKey": "0000000000000000000000000000000000000",
           "authIdentity": null
         },
         "customWebApiParameters": null
       }
     ]
    
  6. Lewati ke depan untuk menguji vektorizer Anda untuk konversi teks ke vektor selama eksekusi kueri.

Menentukan profil vektorizer dan vektor

Bagian ini menjelaskan modifikasi pada skema indeks untuk menentukan vektorizer secara manual.

  1. Gunakan Buat atau Perbarui Indeks untuk menambahkan vectorizers ke indeks pencarian.

  2. Tambahkan JSON berikut ke definisi indeks Anda. Bagian vektorizer menyediakan informasi koneksi ke model penyematan yang disebarkan. Langkah ini menunjukkan dua contoh vektorizer sehingga Anda dapat membandingkan model penyematan Azure OpenAI dan API web kustom secara berdampingan.

      "vectorizers": [
        {
          "name": "my_azure_open_ai_vectorizer",
          "kind": "azureOpenAI",
          "azureOpenAIParameters": {
            "resourceUri": "https://url.openai.azure.com",
            "deploymentId": "text-embedding-ada-002",
            "modelName": "text-embedding-ada-002",
            "apiKey": "mytopsecretkey"
          }
        },
        {
          "name": "my_custom_vectorizer",
          "kind": "customWebApi",
          "customVectorizerParameters": {
            "uri": "https://my-endpoint",
            "authResourceId": " ",
            "authIdentity": " "
          }
        }
      ]
    
  3. Dalam indeks yang sama, tambahkan bagian profil vektor yang menentukan salah satu vektorisasi Anda. Profil vektor juga memerlukan algoritma pencarian vektor yang digunakan untuk membuat struktur navigasi.

    "profiles": [ 
        { 
            "name": "my_vector_profile", 
            "algorithm": "my_hnsw_algorithm", 
            "vectorizer":"my_azure_open_ai_vectorizer" 
        }
    ]
    
  4. Tetapkan profil vektor ke bidang vektor. Contoh berikut menunjukkan kumpulan bidang dengan bidang kunci yang diperlukan, bidang string judul, dan dua bidang vektor dengan penetapan profil vektor.

    "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
            }
    ]
    

Menguji vektorizer

Gunakan klien pencarian untuk mengirim kueri melalui vektorizer. Contoh ini mengasumsikan Visual Studio Code dengan klien REST dan indeks sampel.

  1. Di Visual Studio Code, berikan titik akhir pencarian dan kunci API kueri pencarian:

     @baseUrl: 
     @queryApiKey: 00000000000000000000000
    
  2. Tempelkan permintaan kueri vektor.

     ### Run a query
     POST {{baseUrl}}/indexes/vector-nasa-ebook-txt/docs/search?api-version=2025-09-01 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
                 }
             ]
         }
    

    Poin-poin penting tentang kueri meliputi:

    • "kind": "text" memberi tahu mesin pencari bahwa input adalah string teks, dan untuk menggunakan vektorizer yang terkait dengan bidang pencarian.

    • "text": "what cloud formations exists in the troposphere" adalah string teks yang akan di-vektorisasi.

    • "fields": "vector" adalah nama bidang yang akan dikueri. Jika Anda menggunakan indeks sampel yang dihasilkan oleh wizard, bidang vektor yang dihasilkan diberi nama vector.

  3. Kirim permintaan. Anda harus mendapatkan tiga k hasil, di mana hasil pertama adalah yang paling relevan.

Perhatikan bahwa tidak ada properti vektorizer untuk diatur pada waktu kueri. Kueri membaca properti vektorizer, sesuai penetapan bidang profil vektor dalam indeks.

Periksa log

Jika Anda mengaktifkan pembuatan log diagnostik untuk layanan pencarian Anda, jalankan kueri Kusto untuk mengonfirmasi eksekusi kueri di bidang vektor Anda:

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

Praktik terbaik

Jika Anda menyiapkan vektorizer Azure OpenAI, pertimbangkan praktik terbaik yang sama yang kami rekomendasikan untuk keterampilan penyematan Azure OpenAI.

Lihat juga