Deployment & Inference

Isolasi Multi-Penyewa: Persyaratan yang Datang Setelah Demo

Setiap RAG multi-penyewa akhirnya menemukan hal yang sama: penyaringan hasil setelah pengambilan bukanlah isolasi. Penyaring harus membatasi pencarian, bukan memotong outputnya.

Polanya

Demonya berjalan pada dokumen satu pelanggan. Ini berfungsi. Kemudian pelanggan kedua diaktifkan, dan seseorang mengajukan pertanyaan yang seharusnya diajukan pertama kali: apakah pengguna penyewa A pernah melihat potongan yang dimiliki penyewa B?

Jawaban paling umum pada titik itu adalah filter yang diterapkan pada hasil yang diperoleh sebelum mereka mencapai prompt. Ini tampak benar dalam pengujian dan secara struktural salah.

Mengapa post-filtering bukan isolasi

Pencarian tetangga terdekat approximatif mengembalikan vektor k terdekat. Jika Anda kemudian menghapus yang tidak boleh dilihat pengguna, Anda akan tersisa dengan kurang dari k hasil — dan yang Anda hapus, oleh konstruksi, di antara yang paling serupa secara semantik. Di bawah kueri dengan izin rendah, pengambil silently degradasi ke kasus terburuknya, dan kualitas menjadi fungsi dari seberapa banyak pengguna diizinkan untuk melihat. Itu adalah properti yang mengerikan untuk dikirim.

Lebih buruk lagi, konten yang dihapus masih menyeberangi batas kepercayaan: itu diambil, dinilai, dan disimpan dalam memori di dalam proses yang kemudian akan merender prompt. Seorang pengulas keamanan berhak untuk mengajukan keberatan terhadap itu bahkan jika pengguna tidak pernah melihatnya.

Apa yang harus dilakukan sebaliknya

Batasi pencarian. Dorong predikat izin ke lapisan penyaringan toko vektor sehingga potongan yang tidak diizinkan tidak pernah menjadi kandidat, dan jaga k jujur: Anda mendapatkan k hasil yang pengguna benar-benar diizinkan untuk melihat. Ini adalah alasan yang tepat mengapa penyaringan payload adalah kemampuan inti bukan bungkus di toko-toko yang dibangun untuk kasus penggunaan ini.

Kemudian tentukan dari mana predikat berasal. Mengatasi ACL dokumen penuh pengguna pada setiap kueri mahal, sehingga sebagian besar sistem melakukan pra-komputasi grup atau set label per pengguna dan menyaring berdasarkan itu. Komprominya adalah keusangan: pencabutan mengambil efek pada refresh berikutnya. Buat jendela itu eksplisit dan cukup singkat sehingga Anda dapat membela itu.

Tiga hal yang pengulas tanyakan

Pertama, isolasi yang memegang ketika indeks rusak atau sebagian dibangun kembali — gagal tertutup, bukan terbuka. Kedua, jejak audit apa yang diperoleh untuk setiap jawaban, bukan hanya apa yang dihasilkan. Ketiga, enkripsi per-penyewa atau argumen yang didokumentasikan mengapa pemisahan logis cukup. Miliki ketiga jawaban itu siap dan tinjauan berubah dari minggu menjadi pertemuan.

Yang bisa Anda lakukan sekarang

  • Penyaringan hasil yang telah diperoleh bukanlah isolasi — batasi pencarian, jangan memotong outputnya
  • Penyaringan setelah pengambilan membuat kualitas jawaban bergantung pada seberapa sedikit pengguna diizinkan untuk melihat
  • Hitung label izin per pengguna sebelumnya dan buat jendela kedaluwarsa secara eksplisit dan dapat dipertahankan
  • Siapkan untuk tiga pertanyaan: perilaku tertutup saat gagal, jejak audit pengambilan, dan enkripsi per-penyewa