Topik temu duga representatif

Temu duga reka bentuk sistem: Bagaimanakah anda mereka bentuk perkhidmatan carian vektor berbilang penyewa?

Reka bentuk sistemSukar
Pasukan Editorial Offer.ccDiterbitkan Dikemas kini

Soalan

Anda memerlukan perkhidmatan yang menyimpan benaman (embeddings) untuk 100 juta dokumen merentas banyak penyewa. Sesuatu pertanyaan mesti mengembalikan 20 dokumen relevan teratas dalam masa 150 ms pada p95, menguatkuasakan penapis penyewa dan ACL, memastikan kemas kini boleh dicari dalam masa satu minit, serta mendedahkan metrik perolehan semula (recall), kos, dan kesegaran. Reka bentuk perkhidmatan tersebut dan terangkan pengindeksan, pemetakan (sharding), penapisan, kemas kini, dan penilaian.

Gesaan dan skop

Ini ialah masalah reka bentuk sistem perolehan semula, bukan permintaan untuk menamakan pangkalan data vektor. Sasarannya ialah carian semantik ke atas benaman dengan pengasingan penyewa yang ketat, penapis metadata dan kebenaran, kependaman terhad, serta kontrak kesegaran dan kerelevanan yang boleh diukur. Andaikan benaman dihasilkan oleh model hulu, dokumen boleh diganti atau dipadamkan, dan perkhidmatan mesti menyokong kedua-dua pengisian semula kelompok (batch backfills) dan kemas kini berterusan.

Perkara yang diuji oleh penemu duga

  • Sama ada anda mengasingkan penyerapan (ingestion), pembenaman, pembinaan indeks, penyajian pertanyaan, dan penilaian.
  • Sama ada anda menerangkan sebab carian tepat terlalu mahal dan memilih strategi anggaran jiran terdekat (ANN) secara sengaja.
  • Sama ada penapis digunakan tanpa merosakkan perolehan semula atau pengasingan penyewa secara senyap.
  • Sama ada kemas kini, pemadaman, perubahan model, dan pembinaan semula indeks mempunyai semantik keterlihatan yang jelas.
  • Sama ada anda mentakrifkan metrik kerelevanan, perolehan semula, kependaman, kos, dan kesegaran dan bukannya sekadar mendakwa bahawa "keserupaan" adalah betul.

Soalan untuk dijelaskan terlebih dahulu

  • Apakah dimensi vektor, fungsi jarak, jumlah dokumen bagi setiap penyewa, dan kadar pertanyaan yang dijangkakan?
  • Adakah penapis penyewa dan ACL merupakan kekangan ketat mandatori, atau bolehkah hasil dikeluarkan selepas perolehan semula?
  • Adakah kesegaran satu minit diperlukan untuk setiap penulisan, atau hanya untuk subset koleksi hangat (hot)?
  • Adakah kita memerlukan carian hibrid kata kunci tambah vektor, pemeringkatan semula (reranking), atau hanya perolehan semula jiran terdekat?
  • Bolehkah model benaman berubah, dan adakah vektor lama mesti kekal boleh ditanya semasa migrasi?

Rangka kerja jawapan 30 saat

"Saya akan membahagikan sistem kepada log penyerapan, pekerja pembenaman, indeks vektor berversi, dan lapisan pertanyaan tanpa status (stateless). Setiap rekod membawa penyewa, ACL, versi dokumen, versi model, dan keadaan tombstone. Penghalaan pertanyaan mula-mula memilih shard atau ruang nama penyewa, kemudian melaksanakan carian ANN bertapis dan secara pilihan memeringkat semula set calon yang kecil. Indeks delta boleh ubah mengendalikan penulisan terkini manakala segmen tidak boleh ubah dibina semula di latar belakang; operasi baca menggabungkan kedua-duanya dan menyembunyikan versi lapuk. Saya akan mengukur perolehan semula berbanding set emas yang tepat atau dipilih susun, kependaman p95, kadar terlepas penapis, lat kesegaran, dan kos bagi setiap pertanyaan."

Huraian mendalam langkah demi langkah

1. Tentukan kontrak data dan keterlihatan

Simpan document_id, tenant_id, atribut ACL, versi model benaman, versi kandungan, vektor, dan cap masa kemas kini. Pemadaman ialah tombstone dengan versi, bukan andaian serta-merta bahawa setiap replika telah membuang vektor tersebut. Sesuatu pertanyaan diizinkan sebelum perolehan semula; predikat penyewa dan ACL adalah kekangan mandatori, manakala pemeringkatan kerelevanan hanya digunakan pada calon yang diizinkan.

2. Pilih indeks ANN dan pemetakan

Carian brute-force menelan kos kira-kira O(N × D) operasi jarak untuk N vektor berdimensi D. Pada 100 juta vektor, itu tidak sesuai untuk sasaran 150 ms, jadi gunakan indeks ANN seperti HNSW atau pendekatan fail songsang (inverted-file). HNSW mengutamakan perolehan semula yang tinggi dan bacaan pantas dengan overhed memori; indeks berkelompok atau terkuantum mengurangkan memori dan kos tetapi menambah risiko penalaan dan penurunan perolehan semula. Mulakan dengan ruang nama atau shard yang peka penyewa, kemudian pisahkan penyewa yang sibuk dan replikasi partition yang kerap dibaca. Jangan mendakwa nombor Big-O atau perolehan semula sejagat; lakukan penanda aras pada pustaka dan dimensi yang dipilih.

3. Jadikan penapisan sebahagian daripada ketepatan perolehan semula

Pascapenapisan (post-filter) boleh mengembalikan kurang daripada 20 hasil apabila jiran terdekat dimiliki oleh penyewa lain atau gagal dalam predikat ACL. Prapenapisan boleh mengecilkan ruang calon tetapi mungkin menjadikan penapis jarang (sparse) mahal. Reka bentuk praktikal memastikan metadata yang boleh ditapis diindeks bersama-sama laluan vektor, menganggarkan kepilihan (selectivity), dan memilih kolam calon ANN yang lebih besar atau segmen bertapis khusus apabila diperlukan. Pinecone mendokumenkan predikat metadata dan memberi amaran bahawa penapisan adalah sebahagian daripada kontrak carian; jawapan temu duga harus menyatakan perkara yang berlaku apabila wujud kurang daripada 20 padanan yang dibenarkan.

4. Asingkan penulisan baharu daripada segmen yang dipadatkan

Tambahkan penulisan yang diterima pada log tahan lasak dan indeks delta kecil yang boleh ubah. Tanya kedua-dua segmen asas tidak boleh ubah dan delta, kemudian gabungkan mengikut versi dokumen dan buang ID yang ditandakan tombstone. Pemadatan latar belakang membina segmen baharu, mengesahkan kiraan dan sampel perolehan semula, serta menukar manifes secara atomik. SLA satu minit diukur daripada penulisan yang diakui sehingga keterlihatan pertanyaan, bukan dari permulaan tugas pembenaman. Jika pembenaman atau pengindeksan tertangguh, dedahkan lat tersebut dan pastikan versi sebelumnya kekal kelihatan daripada berpura-pura bahawa penulisan berjaya.

5. Kendalikan migrasi model dan skema

Perubahan model benaman menjadikan vektor lama dan baharu tidak boleh dibandingkan melainkan sistem menyokong indeks dwi atau pelan unjuran. Tulis versi model ke dalam setiap rekod, isi semula indeks baharu, buat pertanyaan bayang (shadow queries) terhadap kedua-duanya, dan bandingkan perolehan semula serta kependaman sebelum beralih. Kekalkan indeks lama sehingga keperluan undur balik (rollback) dan pengekalan tamat. Perubahan skema metadata dan ACL memerlukan disiplin pelancaran berversi yang sama; padanan vektor tidak boleh memintas medan kebenaran yang baru ditambah.

6. Reka bentuk laluan pertanyaan dan dasar beban lampau

Lapisan pertanyaan mengesahkan ketulenan penyewa, menormalkan pertanyaan, memilih versi model, dan menyebarkan (fan out) pertanyaan hanya kepada shard yang berkaitan. Ia menguatkuasakan had masa, kiraan calon terhad, dan pembatalan. Jika shard tamat masa, kembalikan hasil separa hanya apabila API menandakan kesempurnaan; jika tidak, gagalkan secara tertutup (fail closed) untuk carian sensitif keselamatan. Simpan benaman dan pertanyaan awam yang stabil dalam cache, tetapi jangan sekali-kali berkongsi entri cache merentas skop kebenaran. Kawalan kemasukan melindungi memori indeks dan kapasiti pemeringkatan semula di bawah lonjakan beban.

7. Ukur kerelevanan, kesegaran, dan kos

Cipta set pertanyaan berlabel dengan dokumen yang relevan dan dilarang. Bandingkan hasil ANN dengan garis dasar carian tepat pada partition sampel, dan laporkan recall@20, ketepatan atau nDCG, ketepatan penapis, dan ujian kebocoran kebenaran. Jejaki kependaman p50/p95/p99, kiraan calon, masa membina indeks, lat tulis-ke-kelihatan, tunggakan tombstone, memori bagi setiap vektor, dan kos bagi setiap seribu pertanyaan. Metrik luar talian mengesan regresi pemeringkatan; metrik klik dalam talian memerlukan pagar pelindung kerana pincang kedudukan (position bias) boleh menjadikan hasil yang buruk kelihatan popular.

Pertukaran (Trade-offs) dan sempadan

HNSW berbanding indeks berkelompok atau terkuantum

HNSW ialah pilihan pertama yang kukuh untuk beban kerja bacaan berat apabila memori tersedia. IVF atau pengkuantuman produk boleh mengurangkan memori dan meningkatkan kecekapan imbasan pada skala besar, tetapi memerlukan latihan, penalaan dan pengesahan perolehan semula. Buat pilihan berdasarkan kadar kemas kini, dimensi, kecondongan penyewa, dan belanjawan perkakasan; jangan memilih berdasarkan nama produk semata-mata.

Stor vektor natif berbanding pangkalan data sedia ada

Pangkalan data tujuan umum dengan indeks vektor adalah menarik apabila koleksi adalah sederhana dan cantuman (joins), transaksi, serta data ACL mesti kekal bersama. Perkhidmatan khusus adalah wajar apabila carian vektor mendominasi kapasiti, memerlukan indeks ANN khusus, atau memerlukan penskalaan bebas. Simpan rekaman dokumen dan kebenaran yang menjadi sumber kebenaran (source-of-truth) di luar indeks apabila stor vektor tidak dapat memberikan jaminan transaksi yang diperlukan.

Satu indeks bagi setiap penyewa berbanding partition kongsi

Indeks bagi setiap penyewa memudahkan pengasingan dan kawalan jiran bising tetapi menggandakan overhed. Indeks kongsi menggunakan perkakasan dengan lebih baik, namun memerlukan penapisan metadata yang ketat dan penjadualan yang adil. Gunakan ruang nama atau kunci partition untuk penyewa biasa dan naikkan penyewa yang sangat besar atau dikawal selia kepada kapasiti terasing.

Contoh jawapan berkualiti tinggi

"Saya akan bermula dengan log penulisan yang tahan lasak dan membuat versi bagi setiap dokumen, ACL, dan model benaman. Lapisan pertanyaan memberi kebenaran kepada penyewa, menyebarkan pertanyaan ke shard yang berkaitan, menjalankan carian ANN bertapis, dan menggabungkan indeks delta baharu dengan segmen tidak boleh ubah. HNSW ialah garis dasar untuk bacaan tinggi, tetapi saya akan menanda arasnya terhadap indeks berkelompok atau terkuantum menggunakan recall@20 dan kependaman p95. Pembinaan semula menerbitkan manifes secara atomik, perubahan model menggunakan pertanyaan bayang, dan pemadaman adalah tombstone berversi. Perkhidmatan ini melaporkan ketepatan penapis, lat tulis-ke-kelihatan, ujian kebocoran kebenaran, memori bagi setiap vektor, dan kos pertanyaan; kerelevanan ialah kontrak yang diukur."

Kesilapan biasa

  • Menganggap pemilihan pustaka ANN sebagai seni bina lengkap sambil mengabaikan penyerapan, pemadaman, dan pembinaan semula.
  • Menggunakan penapis ACL selepas perolehan semula dan mengembalikan dokumen yang lebih sedikit atau tidak dibenarkan secara senyap.
  • Mendakwa perolehan semula atau kependaman tetap tanpa menyatakan dimensi, tetapan indeks, perkakasan, dan beban kerja.
  • Menggantikan model benaman secara terus (in-place) sehingga vektor lama dan baharu menjadi tidak boleh dibandingkan.
  • Hanya mengukur klik dan tidak pernah mengekalkan garis dasar kerelevanan yang tepat atau berlabel.

Soalan dan jawapan susulan

Bagaimana jika penapis ACL hanya meninggalkan tiga padanan?

Kembalikan tiga padanan dengan isyarat total_or_completeness yang jelas, atau kembalikan respons kosong/tidak mencukupi mengikut kontrak API. Jangan sekali-kali mengisi baki slot dengan hasil yang tidak dibenarkan atau tidak ditapis. Tingkatkan kolam calon hanya dalam laluan carian yang dibenarkan.

Bagaimanakah anda membina semula indeks tanpa kehilangan data penulisan?

Mainkan semula log tahan lasak ke dalam segmen baharu, rekodkan tanda aras tinggi (high-water mark), kejar penulisan selepas tanda tersebut, sahkan kiraan dan sampel perolehan semula, kemudian terbitkan manifes secara atomik. Pastikan laluan delta aktif sehingga pertukaran selesai; undur balik dengan memulihkan manifes sebelumnya.

Bilakah anda boleh memadamkan vektor model lama?

Hanya selepas penilaian bayang lulus, model baharu sedia berkhidmat, tetingkap undur balik dan pengekalan ditutup, serta setiap laluan pertanyaan menolak versi model lama. Memadamkan berdasarkan masa sahaja adalah tidak selamat apabila kerja yang tertangguh atau pengguna main semula masih merujuknya.

Sumber awam

Soalan berkaitan

Alat temu duga berkaitan

Gunakan Jawab untuk jawapan reka bentuk sistem

Jelaskan keperluan terlebih dahulu, kemudian teruskan dengan skala, seni bina, pilihan komponen dan pertukaran (trade-off).

Lihat alat