Memotong dimensi menggunakan kompresi MRL

Note

Pencarian Azure AI tersedia melalui portal Azure, REST API, dan Azure SDK. Ini juga mendukung Foundry IQ, lapisan pengetahuan terkelola yang mengubah konten perusahaan menjadi pangkalan pengetahuan yang dapat digunakan kembali dan sadar izin untuk agen di portal Microsoft Foundry.

Latih kemampuan untuk menggunakan lebih sedikit dimensi pada model text-embedding-3. Di Azure OpenAI, model text-embedding-3 dilatih kembali pada teknik Matryoshka Representation Learning (MRL) yang menghasilkan beberapa representasi vektor pada tingkat kompresi yang berbeda. Pendekatan ini menghasilkan pencarian yang lebih cepat dan mengurangi biaya penyimpanan dengan kehilangan informasi semantik minimal.

Di Pencarian Azure AI, MRL menyuplai dukungan kuantisasi skalar dan biner. Saat Anda menggunakan salah satu metode kuantisasi, Anda dapat menentukan truncationDimension properti pada bidang vektor Anda untuk mengurangi dimensi penyematan teks.

Kompresi multilevel MRL menghemat penyimpanan vektor dan meningkatkan waktu respons kueri untuk kueri vektor berdasarkan penyematan teks. Di Pencarian Azure AI, dukungan MRL hanya ditawarkan bersama dengan metode kuantisasi lain. Menggunakan kuantisasi biner dengan MRL memberikan pengurangan ukuran indeks vektor maksimum. Untuk mencapai pengurangan penyimpanan maksimum, gunakan kuantisasi biner dengan MRL dan atur stored ke false.

Peringatan

Jika Anda mengatur stored ke false, data vektor hilang selama pembaruan dokumen parsial kecuali Anda menyediakan seluruh vektor di setiap pembaruan. Atur stored ke true untuk menghindari masalah ini. Untuk informasi selengkapnya, lihat Menghilangkan instans vektor opsional dari penyimpanan.

Prasyarat

Klien yang Didukung

Anda dapat menggunakan REST API atau paket Azure SDK untuk mengimplementasikan kompresi MRL. Saat ini, tidak ada portal Microsoft Azure atau dukungan Microsoft Foundry.

Menggunakan penyematan teks yang diperluas oleh MRL

MRL dibangun ke dalam model penyematan teks yang sudah Anda gunakan. Untuk menggunakan kemampuan MRL di Pencarian Azure AI:

  1. Gunakan Buat atau Perbarui Indeks atau API yang setara untuk menentukan skema indeks.

  2. Tambahkan bidang vektor ke definisi indeks.

  3. vectorSearch.compressions Tentukan objek dalam definisi indeks Anda.

  4. Sertakan metode kuantisasi, baik skalar atau biner (disarankan).

  5. Sertakan truncationDimension parameter dan atur ke 512. Jika Anda menggunakan text-embedding-3-large model, Anda dapat mengaturnya hingga 256.

  6. Sertakan profil vektor yang menentukan algoritma HNSW dan objek kompresi vektor.

  7. Tetapkan profil vektor ke bidang vektor jenis Edm.Half atau Edm.Single di kumpulan bidang.

Tidak ada modifikasi sisi kueri untuk menggunakan model penyematan teks berkemampuan MRL. Dukungan MRL tidak memengaruhi vektorisasi terintegrasi, konversi teks ke kueri pada waktu kueri, peringkat semantik, dan fitur peningkatan relevansi lainnya, seperti reranking dengan vektor asli dan oversampling.

Meskipun pengindeksan lebih lambat karena langkah tambahan, kueri lebih cepat.

Contoh: Konfigurasi pencarian vektor yang mendukung MRL

Contoh berikut mengilustrasikan konfigurasi pencarian vektor yang memenuhi persyaratan dan rekomendasi MRL.

truncationDimension adalah properti kompresi. Ini menentukan berapa banyak untuk menyusutkan grafik vektor dalam memori bersama dengan metode kompresi seperti skalar atau kompresi biner. Kami merekomendasikan 1.024 atau lebih tinggi untuk truncationDimension dengan kuantisasi biner. Dimensi kurang dari 1.000 menurunkan kualitas hasil pencarian saat menggunakan MRL dan kompresi biner.

{ 
  "vectorSearch": { 
    "profiles": [ 
      { 
        "name": "use-bq-with-mrl", 
        "compression": "use-bq-with-truncation", 
        "algorithm": "use-hnsw" 
      } 
    ],
    "algorithms": [
       {
          "name": "use-hnsw",
          "kind": "hnsw",
          "hnswParameters": {
             "m": 4,
             "efConstruction": 400,
             "efSearch": 500,
             "metric": "cosine"
          }
       }
    ],
    "compressions": [ 
      { 
        "name": "use-bq-with-truncation", 
        "kind": "binaryQuantization", 
        "rescoringOptions": {
            "enableRescoring": true,
            "defaultOversampling": 10,
            "rescoreStorageMethod": "preserveOriginals"
        },
        "truncationDimension": 1024
      }
    ]
  }
}

JSON berikut menunjukkan definisi bidang vektor yang menggunakan profil ini:

  • Jenis data adalah Collection(Edm.Half) atau Collection(Edm.Single).

  • Bidang memiliki vectorSearchProfile properti yang menentukan pengaturan algoritma dan pemadatan.

  • Bidang memiliki dimensions properti yang menentukan jumlah dimensi untuk hasil penilaian dan peringkat. Nilainya harus berupa batas dimensi model yang Anda gunakan (1.536 untuk penyematan teks-3-kecil).

{
    "name": "text_vector",
    "type": "Collection(Edm.Single)",
    "searchable": true,
    "filterable": false,
    "retrievable": false,
    "stored": false,
    "sortable": false,
    "facetable": false,
    "key": false,
    "indexAnalyzer": null,
    "searchAnalyzer": null,
    "analyzer": null,
    "normalizer": null,
    "dimensions": 1536,
    "vectorSearchProfile": "use-bq-with-mrl",
    "vectorEncoding": null,
    "synonymMaps": []
}