Pilih Strategi Pencarian EmbeddingList

Strategi pencarian EmbeddingList menentukan cara Milvus membangun indeks kandidat perkiraan untuk pencarian EmbeddingList. Strategi default adalah " tokenann". Anda dapat beralih ke " muvera " atau " lemur " jika daftar embedding sangat besar, TokenANN terlalu mahal, atau representasi baris yang dipelajari/terkompresi lebih sesuai. Hasil akhir tetap dihasilkan oleh MaxSim reranking saat opsi " emb_list_rerank " diaktifkan.

Mengapa Strategi Pencarian Ada

Daftar Embedding dirancang untuk baris yang berisi beberapa vektor, seperti embedding token dalam dokumen teks, embedding patch dalam dokumen visual, atau embedding klip dalam video. Alih-alih membandingkan satu vektor kueri dengan satu vektor baris, MaxSim membandingkan daftar embedding kueri dengan daftar embedding dokumen dan mengagregasi kecocokan terbaik.

Hal ini memberikan kemampuan representasi yang lebih baik, tetapi MaxSim yang tepat membutuhkan biaya yang mahal dalam skala besar. Pencarian MaxSim dengan metode brute-force perlu membandingkan vektor kueri dengan setiap vektor di setiap baris kandidat. Hal ini biasanya terlalu lambat untuk pencarian produksi.

### Masalah - Setiap baris mungkin berisi banyak vektor. - MaxSim yang tepat pada semua baris memakan sumber daya. - Ukuran indeks dan latensi pencarian dapat meningkat dengan cepat.### Strategi - Gunakan metode pengambilan tahap pertama yang mendekati. - Ambil lebih banyak kandidat daripada topK yang diminta. - Urutkan ulang kandidat dengan MaxSim yang tepat.

Dalam hal ini, " emb_list_strategy " pada dasarnya merupakan strategi pembuatan indeks dan pengambilan kandidat. Strategi ini dikonfigurasi saat membangun indeks, dan menentukan bagaimana himpunan kandidat ANN tahap pertama dihasilkan. Parameter waktu pencarian seperti " retrieval_ann_ratio " dan " emb_list_rerank " kemudian mengontrol berapa banyak kandidat yang diambil serta apakah penataan ulang MaxSim diterapkan.


Strategi yang Tersedia

StrategiUnit pengambilan kandidatMasalah yang diselesaikanKesesuaian terbaikPertimbangan utama
tokenannVektor individual di dalam setiap barisMenjaga vektor asli dan menghindari kehilangan akibat kompresi.Pencarian yang mengutamakan kualitas, daftar embedding pendek atau sedang, embedding dengan daya diskriminasi tinggi.Indeks yang lebih besar dan biaya pencarian kandidat yang lebih tinggi.
muveraSatu vektor terenkode per barisMengompres daftar embedding menjadi representasi FDE berdimensi tetap tanpa pelatihan.Dokumen yang lebih panjang, embedding dengan tingkat diskriminasi tinggi, kasus di mana TokenANN terlalu berat.Proyeksi acak menimbulkan kerugian akibat aproksimasi; dimensi FDE memengaruhi latensi.
lemurSatu vektor yang dipelajari per barisMempelajari kompresi khusus korpus dari daftar embedding ke vektor baris berdimensi tetap.Embedding dengan tingkat diskriminasi rendah, pencarian dokumen multimodal atau visual, daftar embedding yang besar.Membutuhkan pelatihan dan dapat dipengaruhi oleh distribusi korpus serta bias panjang dokumen.

TokenANN

tokenann mengindeks setiap vektor dalam daftar embedding. Selama pencarian, setiap vektor kueri melakukan pencarian ANN, vektor yang cocok dikumpulkan kembali ke barisnya, dan kandidat baris yang dihasilkan diurutkan ulang dengan MaxSim.

Gunakan TokenANN ketika kualitas menjadi prioritas utama. Ini adalah aproksimasi terdekat dengan perhitungan MaxSim asli karena menjaga semua vektor tetap tersedia dalam indeks tahap pertama.

  • Cocok untuk: potongan teks pendek, baris dengan jumlah vektor kecil atau sedang, pemisahan semantik tingkat token yang kuat, baseline yang sensitif terhadap kualitas.

  • Kurang cocok: dokumen yang sangat panjang, halaman visual dengan ribuan vektor patch, batasan memori atau latensi yang ketat.

  • Perilaku tingkat elemen: TokenANN dapat mengambil kandidat dari vektor individual sebelum menggabungkannya kembali ke baris. Hasil pencarian EmbeddingList akhir tetap berada pada tingkat baris setelah penilaian MaxSim.

MUVERA

muvera mengkodekan setiap daftar embedding menjadi vektor berdimensi tetap menggunakan proyeksi acak. Hal ini mengubah pencarian tahap pertama menjadi pencarian vektor tingkat baris standar. Kandidat kemudian diurutkan ulang dengan MaxSim.

Gunakan MUVERA ketika TokenANN terlalu berat tetapi Anda tidak ingin melalui tahap pelatihan. Ini merupakan jalan tengah yang praktis antara kualitas dan biaya.

  • Cocok untuk: dokumen teks panjang, ruang embedding dengan tingkat diskriminasi tinggi, beban kerja yang membutuhkan ukuran indeks lebih kecil daripada TokenANN.

  • Kurang cocok: ruang embedding dengan tingkat diskriminasi rendah atau kasus di mana representasi FDE menjadi terlalu berdimensi tinggi untuk anggaran latensi.

  • Parameter penting:muvera_num_projections, muvera_num_repeats, dan muvera_seed.

LEMUR

lemur melatih model untuk mengompres setiap daftar embedding menjadi representasi berdimensi tetap. Pencarian ANN tahap pertama dijalankan pada vektor tingkat baris yang telah dipelajari, dan kandidat diurutkan ulang menggunakan MaxSim.

Gunakan LEMUR jika kompresi yang dipelajari sebanding dengan biaya pelatihan. Metode ini dapat bekerja dengan baik untuk ruang embedding dengan diskriminasi rendah dan pencarian multimodal, tetapi harus divalidasi terhadap korpus target karena dapat sensitif terhadap distribusi panjang dokumen.

  • Cocok untuk: pencarian dokumen visual, embedding patch multimodal, ruang embedding dengan tingkat diskriminasi rendah, daftar embedding besar di mana TokenANN tidak praktis.

  • Kurang cocok: korpus yang sering berubah, embedding dengan tingkat diskriminasi tinggi dan distribusi panjang dokumen yang sangat tidak seimbang, serta beban kerja di mana biaya pelatihan tidak dapat diterima.

  • Parameter penting:lemur_hidden_dim, lemur_num_train_samples, lemur_num_epochs, lemur_batch_size, lemur_learning_rate, lemur_seed, dan lemur_num_layers.


Perilaku dan Konfigurasi Default

Strategi EmbeddingList default di Knowhere adalah tokenann. Jika Anda tidak menentukan emb_list_strategy, Knowhere akan menggunakan TokenANN. Pengaturan default saat pencarian mencakup retrieval_ann_ratio=3.0 dan emb_list_rerank=true.

Item Konfigurasi Berdasarkan Strategi

Tabel berikut mencantumkan item konfigurasi khusus strategi. Di Milvus, item saat pembuatan biasanya disertakan dalam peta ` params ` saat membuat indeks. Jika Anda memerlukan nilai default di sisi server, nilai tersebut harus didefinisikan dalam berkas konfigurasi Milvus di bawah bagian ` knowhere `.

StrategiItem konfigurasiTahapDefaultKapan harus mengubahnya
tokenannemb_list_strategy="tokenann"Pembuatan indekstokenannGunakan secara eksplisit jika Anda menginginkan perilaku pengindeksan vektor elemen default atau saat DiskANN digunakan.
muveraemb_list_strategy="muvera"Pembuatan indekstokenannGunakan saat Anda menginginkan pengambilan data yang dikodekan pada tingkat baris tanpa pelatihan.
muveramuvera_num_projectionsPembuatan indeks4Mengontrol jumlah proyeksi SimHash. Nilai yang lebih tinggi akan membuat lebih banyak bucket dan dapat meningkatkan kualitas pengkodean, tetapi juga meningkatkan dimensi yang dikodekan.
muveramuvera_num_repeatsPembuatan indeks7Mengontrol berapa banyak pengkodean FDE independen yang digabungkan. Nilai yang lebih tinggi mungkin meningkatkan ketahanan tetapi meningkatkan biaya indeks/pencarian.
muveramuvera_seedPembuatan indeks42Ditetapkan untuk proyeksi acak yang dapat direproduksi, terutama dalam pengujian dan perbandingan benchmark.
lemuremb_list_strategy="lemur"Pembuatan indekstokenannGunakan ketika kompresi tingkat baris yang dipelajari diperkirakan akan bekerja lebih baik daripada proyeksi acak tetap.
lemurlemur_hidden_dimPembuatan indeks256Mengontrol ukuran representasi terkompresi. Tingkatkan untuk kapasitas yang lebih besar; kurangi untuk penggunaan memori yang lebih rendah dan pengambilan data yang lebih cepat.
lemurlemur_num_train_samplesPembuatan indeks20000Tingkatkan jika korpusnya beragam dan kompresi yang dipelajari tidak cukup memadai; kurangi hanya untuk pengujian kecil atau pembuatan indeks yang lebih cepat.
lemurlemur_num_epochsPembuatan indeks50Tingkatkan jika pelatihan belum konvergen; kurangi jika waktu pembuatan menjadi kendala utama.
lemurlemur_batch_sizePembuatan indeks512Sesuaikan untuk throughput pelatihan dan penggunaan memori.
lemurlemur_learning_ratePembuatan indeks0.001Sesuaikan saat pelatihan tidak stabil atau konvergensi terlalu lambat.
lemurlemur_seedPembuatan indeks42Atur untuk menjalankan pelatihan yang dapat direproduksi.
lemurlemur_num_layersPembuatan indeks2Tingkatkan hanya jika korpus memerlukan ekstraktor fitur yang lebih ekspresif dan Anda mampu menanggung biaya pelatihan tambahan.
Semua strategiretrieval_ann_ratioPencarian3.0Tingkatkan untuk mendapatkan lebih banyak kandidat tahap pertama dan meningkatkan recall; kurangi untuk mengurangi latensi.
Semua strategiemb_list_rerankPencariantrueBiarkan tetap diaktifkan untuk penataan ulang peringkat MaxSim. Nonaktifkan hanya untuk eksperimen terkontrol di mana kualitas ANN tahap pertama diukur secara langsung.

Konfigurasikan Strategi di Milvus

Di Milvus, strategi diteruskan sebagai parameter indeks saat membuat indeks pada bidang EmbeddingList, seperti sub-bidang vektor StructArray.

index_params = client.prepare_index_params()
index_params.add_index(
    field_name="clips[clip_embedding]",
    index_type="HNSW",
    metric_type="MAX_SIM_COSINE",
    params={
        "M": 16,
        "efConstruction": 96,
        "emb_list_strategy": "muvera",
        "muvera_num_projections": 4,
        "muvera_num_repeats": 7,
        "muvera_seed": 42,
    },
)

Untuk LEMUR, berikan parameter pelatihan LEMUR dalam peta " params " yang sama.

params={
    "M": 16,
    "efConstruction": 96,
    "emb_list_strategy": "lemur",
    "lemur_hidden_dim": 256,
    "lemur_num_train_samples": 20000,
    "lemur_num_epochs": 50,
    "lemur_batch_size": 512,
    "lemur_learning_rate": 0.001,
    "lemur_seed": 42,
    "lemur_num_layers": 2,
}

Konfigurasi Pengaturan Default Sisi Server di Milvus

Milvus juga dapat mengisi parameter indeks dari ` milvus.yaml`. Bagian yang relevan adalah ` knowhere`. Parameter disusun berdasarkan jenis indeks dan tahap, menggunakan pola ` knowhere.<INDEX_TYPE>.<stage>.<parameter>`. Parameter indeks yang disediakan pengguna memiliki prioritas lebih tinggi daripada nilai default ini.

knowhere:
  enable: true
  HNSW:
    build:
      emb_list_strategy: muvera
      muvera_num_projections: 4
      muvera_num_repeats: 7
      muvera_seed: 42
    search:
      retrieval_ann_ratio: 3.0
      emb_list_rerank: true

Gunakan parameter per-indeks untuk pemilihan strategi. Pengaturan default dalam berkas konfigurasi Milvus berlaku secara luas untuk indeks dengan jenis dan tahap yang sama. Gunakan parameter create_index jika koleksi atau bidang yang berbeda memerlukan strategi EmbeddingList yang berbeda.

Konfigurasikan Pengambilan Kandidat pada Saat Pencarian

Strategi ini menentukan cara indeks dibangun. Pada saat pencarian, gunakan retrieval_ann_ratio untuk mengontrol berapa banyak kandidat tahap pertama yang diambil sebelum pemeringkatan ulang MaxSim. Nilai yang lebih tinggi biasanya meningkatkan recall tetapi meningkatkan latensi.

results = client.search(
    collection_name=collection_name,
    data=[query_embedding_list],
    anns_field="clips[clip_embedding]",
    search_params={
        "metric_type": "MAX_SIM_COSINE",
        "params": {
            "ef": 64,
            "retrieval_ann_ratio": 3.0,
            "emb_list_rerank": True,
        },
    },
    limit=10,
)
ParameterTahapDefaultArti
emb_list_strategyPembuatan indekstokenannMemilih cara kandidat EmbeddingList diindeks dan diambil.
retrieval_ann_ratioPencarian3.0Faktor ekspansi kandidat untuk putaran ANN pertama.
emb_list_rerankPencariantrueApakah kandidat yang diambil akan diurutkan ulang menggunakan MaxSim.

Catatan kompatibilitas: MUVERA dan LEMUR saat ini mendukung data fp32 di Knowhere. DiskANN hanya mendukung EmbeddingList dengan strategi TokenANN. Jika Anda menggunakan tipe vektor non-fp32 atau DiskANN, pastikan strategi tersebut didukung sebelum mengubah pengaturan default.


Cara Memilih Strategi

Tidak ada strategi yang secara universal terbaik. Pilihlah berdasarkan panjang daftar embedding, diskriminasi ruang embedding, anggaran latensi, ukuran indeks, dan apakah Anda dapat melakukan langkah pelatihan.

PertanyaanSinyalTitik awal yang direkomendasikan
Apakah Anda memerlukan baseline berkualitas tinggi?Anda ingin mengukur perkiraan praktis terbaik sebelum mengoptimalkan biaya.tokenann
Apakah jumlah vektor pada setiap baris sedikit atau sedang?Setiap baris memiliki sejumlah kecil vektor token, patch, atau klip.tokenann
Apakah TokenANN terlalu besar atau terlalu lambat?Ukuran indeks atau latensi pengambilan tahap pertama menjadi titik leher botol.muvera
Apakah Anda ingin kompresi tanpa pelatihan?Anda memerlukan model operasional yang lebih sederhana dan pengkodean yang dapat direproduksi.muvera
Apakah ruang embedding memiliki tingkat diskriminasi yang rendah?Kandidat ANN tingkat token berisik, dan proyeksi acak tidak mempertahankan sinyal yang cukup.lemur
Apakah beban kerjanya bersifat visual atau multimodal?Baris berisi banyak vektor patch, dan TokenANN terlalu mahal.lemur atau muvera
Apakah panjang dokumen sangat tidak merata?Beberapa baris berisi vektor yang jauh lebih banyak daripada yang lain.Mulailah dengan muvera; validasi lemur dengan cermat.

Alur Kerja Evaluasi yang Disarankan

  1. Mulailah dengan tokenann sebagai patokan kualitas jika ukuran dataset memungkinkannya.

  2. Jalankan kueri yang sama dengan muvera dan bandingkan recall, nDCG, latensi, dan ukuran indeks.

  3. Cobalah lemur jika daftar embedding besar, ruang embedding berisik, atau beban kerjanya bersifat visual atau multimodal.

  4. Sesuaikan nilai ` retrieval_ann_ratio ` sebelum mengubah terlalu banyak parameter saat proses pembuatan. Tingkatkan nilainya jika recall rendah; kurangi nilainya jika latensi terlalu tinggi.

  5. Selalu lakukan validasi pada kueri yang representatif dan distribusi panjang dokumen. Strategi yang berhasil pada teks pendek mungkin tidak berhasil pada dokumen visual atau korpus long-tail.

### Utamakan Kualitas Mulailah dengan ` tokenann`. Gunakan sebagai patokan untuk kualitas aproksimasi MaxSim.### Seimbang Cobalah muvera saat Anda membutuhkan biaya yang lebih rendah tanpa perlu menambahkan pipeline pelatihan.### Terkompresi Cobalah lemur jika kompresi tingkat baris yang dipelajari kemungkinan akan mengungguli proyeksi acak tetap.

Referensi yang Digunakan untuk Draf Ini

  • Pengujian Milvus untuk emb_list_strategy, retrieval_ann_ratio, dan emb_list_rerank.

  • Penanganan berkas konfigurasi Milvus untuk nilai default indeks sisi server di bawah bagian " knowhere ".

  • Definisi parameter Knowhere untuk nilai default dan nama strategi yang didukung.

  • Pemeriksaan kompatibilitas Knowhere untuk dukungan MUVERA/LEMUR yang hanya mendukung fp32 dan dukungan DiskANN yang hanya mendukung TokenANN.

  • Catatan evaluasi internal yang membandingkan TokenANN, MUVERA, dan LEMUR untuk pengambilan kandidat MaxSim.

Catatan penerbitan: Sebelum mempublikasikan secara eksternal, pastikan parameter mana yang secara resmi didukung dalam rilis Milvus yang dituju dan apakah produk ingin mengekspos semua parameter Knowhere tingkat rendah atau hanya subset yang lebih kecil dan terdokumentasi.