Mengonfigurasi vektorizer dalam indeks pencarian

Penting

Fitur ini berada di pratinjau publik dalam Ketentuan Penggunaan Tambahan. REST API Pratinjau 10-10-2023 mendukung fitur ini.

Di Azure AI Cari vektorizer adalah perangkat lunak yang melakukan vektorisasi, seperti model penyematan yang disebarkan di Azure OpenAI, yang mengonversi teks 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. Jika sebaliknya Anda perlu mem-vektorisasi teks sebagai bagian dari proses pengindeksan, lihat Vektorisasi Terintegrasi (Pratinjau). Untuk vektorisasi bawaan selama pengindeksan, Anda dapat mengonfigurasi pengindeks dan set keterampilan yang memanggil model penyematan Azure OpenAI untuk konten teks mentah Anda.

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

Prasyarat

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

  • Model penyematan yang disebarkan, seperti text-embedding-ada-002 di Azure OpenAI. Ini digunakan untuk mem-vektorisasi kueri. Ini harus identik dengan model yang digunakan untuk menghasilkan penyematan dalam indeks Anda.

  • Izin untuk menggunakan model penyematan. Jika Anda menggunakan 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.

Coba vektorizer dengan data sampel

Wizard Impor dan vektorisasi data membaca file dari penyimpanan Azure Blob, membuat indeks dengan bidang yang dipotong 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 dan vektorisasi data, 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",
           "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 (pratinjau) 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",
            "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. Pastikan untuk menggunakan versi REST API pratinjau.

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

    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