
Ini adalah terjemahan mesin dari dokumen asli berbahasa Inggris. Jika terjadi perbedaan antara terjemahan ini dan versi asli bahasa Inggris, maka versi bahasa Inggris yang akan berlaku. Baca versi asli bahasa Inggris
Pseudonimizer pada perangkat: dibuat dan diuji tolok ukur
2026-05-22 · Caiioo Team
Kami ingin menyelesaikan masalah privasi sistem AI yang melatih dan menyimpan informasi identitas pribadi yang asli. Kebijakan dan perjanjian "Zero Data Retention" mengurangi risiko, tetapi penuh dengan pengecualian. Mereka pada dasarnya mengatakan: "Kami tidak akan menyimpan perintah atau output Anda kecuali untuk: (masukkan daftar besar pengecualian di sini: tujuan keamanan, pengawasan pemerintah, penahanan litigasi, pengembangan produk, log kesalahan, peningkatan layanan...)"
Untuk mengatasi ini, kami membangun filter data pribadi yang berjalan di mesin pengguna sendiri, melihat pesan sebelum meninggalkan perangkat, dan mengembalikan jawaban yang sama dengan yang akan diterima pengguna jika diketik tanpa filter sama sekali.
Jadi kami membangunnya. Versi Caiioo berikutnya akan menyertakan Pseudonymizer. Dapat diakses melalui ikon perisai di obrolan agen serta pengaturan.
Makalah teknis ini menguraikan alasan, arsitektur, proses evaluasi, dan prinsip desain di balik sistem penyaringan privasi kami.
Apa yang ingin kami capai
Perlindungan privasi umum melalui minimisasi data. Ketika seorang pengguna mengobrol dengan model jarak jauh, model tersebut tidak memerlukan nama asli, alamat rumah, email asli, atau nomor telepon pelanggan untuk menjawab pertanyaan pengguna. Model tersebut membutuhkan bentuk dari pertanyaan tersebut, dan pertanyaan itu harus terlihat seperti pertanyaan asli agar LLM tidak mengabaikan kueri tersebut sebagai sebuah pengujian. Oleh karena itu, filter akan menghapus pengidentifikasi asli dari data yang dikirim ke AI dan menyatukan kembali nilai-nilai aslinya saat data kembali. Model melihat nama dan pengidentifikasi sintetis; pengguna melihat percakapan yang sebenarnya.
Bantuan kepatuhan HIPAA. Mode kedua menargetkan 18 pengidentifikasi dalam aturan HIPAA Safe Harbor (§164.514) dan varian Limited Data Set yang lebih longgar. Seorang klinisi, administrator layanan kesehatan, atau siapa pun yang bekerja pada alur kerja yang tercakup dapat berbicara dengan model serbaguna tentang kasus nyata tanpa mengirimkan informasi kesehatan yang dilindungi ke AI. Kami bukan petugas kepatuhan dari entitas yang tercakup — tetapi kami dapat menjadi lapisan yang menjaga agar PHI tidak meninggalkan laptop sejak awal. Evaluasi kami memberikan tolok ukur terukur yang dapat digunakan organisasi untuk menilai kesesuaian filter terhadap standar kepatuhan dan privasi mereka. Semua tindakan privasi dan keamanan adalah keputusan penilaian yang menjadi tanggung jawab pengguna atau entitas pengguna.
Kami memilih keduanya karena rekayasa teknisnya sama, dan kasus penggunaan PHI sebenarnya secara teknis lebih mudah karena penggunaan entitas bernama yang berbeda, yang lebih mudah untuk diredaksi daripada data yang lebih umum dalam kategori Data Pribadi. Penyaringan HIPAA juga terbantu oleh fakta bahwa umumnya data tersebut dalam bahasa Inggris atau Spanyol. Kami mendeteksi pengidentifikasi, menggantinya dengan pseudonim yang stabil dan pengidentifikasi pengganti dalam format yang sama, memulihkannya saat kembali, dan tidak pernah mencatat nilai aslinya. Pemetaan antara informasi sintetis dan informasi asli hanya tetap berada di perangkat pengguna, sehingga pengguna dapat membaca informasi asli dalam respons agen. Daftar kategori dan gerbang kebijakan adalah hal yang berubah di antara mode-mode tersebut.
Mengapa regex ditambah machine learning, dan bukan hanya salah satunya
Terdapat dua teknologi filter utama dalam pseudonimizer kami: bahasa pengenalan pola deterministik yang disebut regex, dan model machine learning yang terlatih.
Regex tidak terkalahkan pada format permukaan. Sebuah alamat email memiliki bentuk ([email protected]). Begitu juga dengan IP, kartu kredit, IBAN, VIN, SSN (XXX-XX-XXXX), sebuah API key. Jika formatnya dapat diandalkan, regex menangkapnya secara deterministik, setiap saat, tanpa beban model dan tanpa biaya inferensi.
Namun, regex tidak berdaya pada konteks. "Bagan Sarah dari Selasa lalu" mengandung nama orang dan tanggal, tetapi tidak ada satu pun yang dapat dibedakan dari formatnya saja. "Pasien di 14 Elm" mengandung alamat yang tumpang tindih dengan ribuan non-alamat. "MRN mereka adalah 7741032" membutuhkan kata-kata di sekitar angka tersebut agar memiliki arti.
Model bahasa kecil yang telah disesuaikan (fine-tuned) menangani konteks — milik kami adalah encoder 110M-parameter yang dilatih secara khusus dan didistilasi dari model bahasa kecil multibahasa — . Model ini membaca kalimat, bukan substring, dan cukup kecil untuk berjalan sangat cepat di perangkat, bahkan ponsel seluler.
Tolok ukur (benchmarks) mengilustrasikan kekuatan pelengkap dari kedua lapisan tersebut. Kami menguji kedua lapisan secara terpisah untuk memastikan masing-masing benar-benar memberikan kontribusi. Pada set pertanyaan PrivacyBench-PD yang berisi 150 pertanyaan di mana pertanyaan dan jawabannya secara eksplisit TIDAK digunakan untuk melatih model:
| Lapisan | PII tertangkap | Tingkat tangkapan |
|---|---|---|
| Hanya Regex | 205 / 670 | 30.6 % |
| Hanya ML | 516 / 670 | 77.0 % |
| Keduanya (produksi) | 625 / 670 | 93.3 % |
Regex saja melewatkan tiga perempat pengidentifikasi karena sebagian besar pengidentifikasi dalam prosa nyata tidak terstruktur. ML saja melewatkan 16 poin persentase yang seharusnya ditangkap oleh lapisan regex — hal-hal yang murni berdasarkan bentuknya (kartu kredit terlihat seperti kartu kredit; model tidak memiliki sinyal tambahan untuk ditambahkan). Bersama-sama, mereka mencakup apa yang tidak dapat dicakup oleh salah satunya saja.
Melihat lebih dalam di mana setiap lapisan sangat menentukan: di seluruh set yang sama, 16 nilai uji hanya ditangkap oleh regex (email, IP, akun keuangan, ID terstruktur) dan 327 hanya ditangkap oleh ML (nama, pengidentifikasi kontekstual, frasa multibahasa).
Kecil, cerdas, cepat — dan berjalan di mana saja
Kami harus membuat filter berjalan di perangkat, yang merupakan tantangan teknik.
Ia harus kecil karena aplikasi kami berjalan di perangkat pada banyak sistem: di dalam ekstensi browser, aplikasi macOS, aplikasi iOS, aplikasi Android, atau Windows dan Linux. Bundelnya sekitar 113 MB per model. Ada dua model — satu untuk data pribadi umum, satu untuk informasi kesehatan yang dilindungi — dan mode Safe Harbor menjalankan keduanya secara paralel. Di antara ini, perangkat Android kelas bawah adalah yang paling tidak bertenaga, namun sistem kami berfungsi dengan baik.
Ia harus cerdas karena negatif palsu membocorkan data asli ke LLM jarak jauh dan positif palsu merusak percakapan. Nama harus disamarkan; kata ganti tidak boleh. Email dokter dalam utas yang diteruskan harus disamarkan; footer [email protected] mungkin tidak perlu.
Ia harus cepat karena ia berada langsung di jalur setiap pesan yang dikirim atau diterima pengguna. Kami mengukur overhead pulang-pergi di bawah 200 ms pada satu utas CPU, sebagian besar adalah tokenisasi. Pada WebGPU dan Apple Neural Engine, ini sangat kecil dibandingkan dengan latensi jaringan dari panggilan LLM itu sendiri.
Ia harus berjalan di banyak runtime karena Caiioo bersifat multi-platform. Sistem yang sama berjalan di ekstensi Chrome, macOS dan iOS, Android, serta di Windows dan Linux. Satu model deteksi, satu pustaka regex, satu penggabung, satu kebijakan — perilaku identik di setiap permukaan tempat Caiioo berjalan.
Skor
Setelah putaran pengujian dan pelatihan, kami menetapkan versi ke-16 dari model kami. Di bawah ini adalah tiga benchmark, yang masing-masing mengukur hal yang berbeda.
Set pengujian kami sendiri, 150 pertanyaan yang belum pernah dilihat model
Sebelum menguji terhadap benchmark publik, kami menjalankan filter Personal Data kami terhadap set pengujian internal yang sengaja kami simpan di luar data pelatihan — sehingga detektor belum pernah melihat pertanyaan-pertanyaan ini sebelumnya. 150 pertanyaan dibagi menjadi empat grup (cuplikan kode, prosa dokumen, frasa yang sengaja tidak umum, dan 10 bahasa non-Inggris), ditambah grup "negatif" yang tidak berisi data pribadi sama sekali (pemeriksaan kewarasan untuk memastikan kami tidak melakukan redaksi berlebihan). Gabungan pipeline regex + ML:
| Sub-bench | Tertangkap | Laju |
|---|---|---|
| code_bench | 69 / 74 | 93.2 % |
| doc_bench | 233 / 247 | 94.3 % |
| generalization_bench | 123 / 133 | 92.5 % |
| multilingual_bench | 200 / 216 | 92.6 % |
| Semua 4 bench positif | 625 / 670 | 93.3 % |
(Grup negatif tidak memiliki data pribadi untuk ditemukan. Filter menyamarkan satu hal yang seharusnya tidak disamarkan — konsisten dengan angka presisi lebih jauh di bawah.)
Penilai sangat ketat: setiap bagian data pribadi yang diharapkan harus hilang sepenuhnya dari output yang disamarkan agar pertanyaan tersebut mendapat skor. Tidak ada kredit parsial, tidak ada "hampir mirip." Itu lebih keras daripada benchmark yang meminta LLM lain untuk menjadi juri (juri LLM cenderung murah hati). Untuk angka yang dapat dibandingkan secara langsung dengan sistem lain, lihat bagian head-to-head lebih jauh di bawah.
PrivacyBenchHIPAA — 40 pertanyaan layanan kesehatan
Setiap pertanyaan mencantumkan informasi kesehatan yang dilindungi (PHI) yang harus diredaksi (nama, nomor rekam medis, dll.) DAN sinyal yang harus dipertahankan (tanggal, geografi, usia jika di bawah 90 — aturan HIPAA Limited Data Set). Penilai memeriksa kedua arah: apakah kami menghapus apa yang seharusnya kami hapus, dan apakah kami membiarkan apa yang seharusnya kami biarkan?
| Mode | PHI diredaksi | Retained disimpan |
|---|---|---|
| Limited Data Set (simpan tanggal / geografi / usia ≤89) | 79 / 79 (100 %) | 34 / 34 |
| Safe Harbor (redaksi semuanya termasuk tanggal) | 99 / 104 (95.2 %) | — |
Submode Limited Data Set sempurna pada benchmark ini. Safe Harbor — yang memiliki lebih banyak hal untuk diredaksi, sehingga lebih banyak peluang untuk terlewat — mencakup 95.2%.
Hasil kategori-per-kategori pada data kami sendiri, 200 sampel per mode
Benchmark publik menggabungkan semuanya. Data pengujian internal kami membagi hasil berdasarkan kategori (nama, email, alamat, dan sebagainya) dan menjalankan masing-masing dalam tiga cara: hanya regex, hanya ML, dan keduanya bersama-sama. Hal itu memberi tahu kami secara tepat teknologi mana yang menangkap jenis pengenal mana — dan di mana masing-masing membutuhkan yang lain. Eksekusi terbaru, 2026-05-20:
Ringkasan di ketiga mode filter
| Mode | Combined recall | Presisi | F2 | Sampel |
|---|---|---|---|---|
| Personal Data filter | 97.3 % | 97.8 % | 97.4 | 200 |
| HIPAA filter — Limited Data Set | 92.3 % | 92.3 % | 92.3 | 200 |
| HIPAA filter — Safe Harbor | 91.9 % | 91.5 % | 91.8 | 200 |
Angka-angka ini tidak termasuk URL, yang sengaja kami biarkan — merusak URL akan merusak tindakan hilir seperti "buka tautan ini" atau "ambil halaman itu." Lebih lanjut tentang itu di bagian alur kerja di bawah.
Gambaran besar sebelum tabel per kategori: di setiap mode, pengenal yang benar-benar mengidentifikasi seseorang tertangkap pada atau mendekati 100% dari waktu. Nama, email, nomor telepon, alamat pos, ID pemerintah, ID biometrik, geolokasi presisi, nomor rekam medis, tanggal lahir, nomor jaminan sosial — tertangkap pada setiap sampel, setiap pengujian. Kategori di mana kami merosot di bawah 100% dapat diprediksi: ID perangkat (variasi format yang sangat besar dalam teks nyata), ID institusional lain-lain (nomor loyalitas, ID karyawan — masalah yang sama), dan foto (filter khusus teks tidak dapat melihat apa yang ada di dalam gambar). Tak satu pun dari itu adalah pengenal "nama pada bagan" atau "email dalam draf" yang benar-benar penting untuk kebocoran. Kategori berisiko tinggi adalah kategori yang andal.
Personal Data filter
Diurutkan berdasarkan combined recall (terbaik lebih dulu), lalu berdasarkan tingkatan risiko (T1 = paling sensitif).
| Kategori | Tier | Regex recall | ML recall (raw) | Combined recall | Gold n |
|---|---|---|---|---|---|
| biometric_id | T1 | 100.0 % (10/10) | 100.0 % (10/10) | 100.0 % | 10 |
| email_address | T1 | 100.0 % (20/20) | 100.0 % (20/20) | 100.0 % | 20 |
| government_id | T1 | 100.0 % (10/10) | 100.0 % (10/10) | 100.0 % | 10 |
| person_name | T1 | 13.3 % (4/30) | 96.7 % (29/30) | 100.0 % | 30 |
| phone_or_fax | T1 | 100.0 % (10/10) | 100.0 % (10/10) | 100.0 % | 10 |
| postal_address | T1 | 0.0 % (0/10) | 100.0 % (10/10) | 100.0 % | 10 |
| precise_geolocation | T1 | 100.0 % (10/10) | 100.0 % (10/10) | 100.0 % | 10 |
| birth_date | T2 | 0.0 % (0/10) | 100.0 % (10/10) | 100.0 % | 10 |
| ip_address | T2 | 100.0 % (10/10) | 100.0 % (10/10) | 100.0 % | 10 |
| online_handle | T2 | 40.0 % (4/10) | 100.0 % (10/10) | 100.0 % | 10 |
| vehicle_id | T2 | 50.0 % (5/10) | 100.0 % (10/10) | 100.0 % | 10 |
| authentication_secret | T4 | 40.0 % (4/10) | 100.0 % (10/10) | 100.0 % | 10 |
| financial_account | T1 | 90.0 % (18/20) | 100.0 % (20/20) | 90.0 % | 20 |
| institutional_id | T3 | 80.0 % (8/10) | 90.0 % (9/10) | 90.0 % | 10 |
| device_id | T3 | 40.0 % (4/10) | 50.0 % (5/10) | 80.0 % | 10 |
Melihat hasilnya, desain dua lapis ini membuahkan hasil. Alamat pos, tanggal lahir, dan nama orang mendapat skor 0–13% di bawah regex saja — tidak ada bentuk untuk dicocokkan, sehingga hanya model ML yang dapat menangkapnya. Email, nomor telepon, IP, ID pemerintah, ID biometrik, dan geolokasi presisi mendapat skor 100% di bawah regex saja — format permukaan yang didapatkan model ML secara gratis. Online handle, ID kendaraan, dan rahasia autentikasi bersifat campuran: regex menangkap bentuk standar, ML menangkap sisanya. Combined recall memenuhi atau melampaui lapisan tunggal mana pun yang lebih kuat, di setiap kategori.
ID perangkat dan ID institusional lain-lain adalah kategori di bawah 100%, dan kami tahu alasannya: kategori tersebut memiliki variasi format terluas dalam teks nyata. Kami lebih suka jujur tentang kategori di mana recall merosot daripada berpura-pura bahwa filter ini sempurna di mana-mana.
HIPAA filter — submode Limited Data Set
Submode Limited Data Set mempertahankan tanggal, geografi, dan usia 89 atau lebih muda sesuai desain — itu adalah sinyal yang diizinkan oleh HIPAA untuk disimpan oleh organisasi demi penelitian klinis dan operasi yang sah.
| Kategori | Tier | Regex recall | ML recall (raw) | Combined recall | Gold n |
|---|---|---|---|---|---|
| biometric_id | T1 | 100.0 % (12/12) | 100.0 % (12/12) | 100.0 % | 12 |
| email_address | T1 | 100.0 % (13/13) | 100.0 % (13/13) | 100.0 % | 13 |
| medical_record_number | T1 | 100.0 % (26/26) | 100.0 % (26/26) | 100.0 % | 26 |
| person_name | T1 | 15.4 % (4/26) | 100.0 % (26/26) | 100.0 % | 26 |
| phone_or_fax | T1 | 100.0 % (13/13) | 100.0 % (13/13) | 100.0 % | 13 |
| social_security_number | T1 | 100.0 % (12/12) | 100.0 % (12/12) | 100.0 % | 12 |
| account_number | T2 | 0.0 % (0/13) | 100.0 % (13/13) | 100.0 % | 13 |
| health_plan_id | T2 | 0.0 % (0/13) | 100.0 % (13/13) | 100.0 % | 13 |
| ip_address | T2 | 100.0 % (12/12) | 100.0 % (12/12) | 100.0 % | 12 |
| license_number | T2 | 0.0 % (0/12) | 100.0 % (12/12) | 100.0 % | 12 |
| vehicle_id | T2 | 25.0 % (3/12) | 100.0 % (12/12) | 100.0 % | 12 |
| device_id | T3 | 41.7 % (5/12) | 100.0 % (12/12) | 100.0 % | 12 |
| photo | T2 | 0.0 % (0/12) | 0.0 % (0/12) | 0.0 % | 12 |
Foto adalah kegagalan yang diketahui — filter khusus teks tidak dapat melihat apa yang ada di dalam gambar. Image-PHI adalah masalah terpisah yang belum kami rilis. Setiap kategori lain dalam mode ini berada pada 100%.
HIPAA filter — submode Safe Harbor
Safe Harbor menghapus semua yang akan dipertahankan oleh submode Limited Data Set — tanggal, usia di atas 89, geografi. Untuk mendapatkan cakupan yang paling ketat, mode ini menjalankan kedua model filter secara paralel: model khusus HIPAA dan model data pribadi umum.
| Kategori | Tier | Regex recall | ML recall (raw) | Combined recall | Gold n |
|---|---|---|---|---|---|
| age_over_89 | T1 | 100.0 % (18/18) | 0.0 % (0/18) | 100.0 % | 18 |
| biometric_id | T1 | 100.0 % (9/9) | 100.0 % (9/9) | 100.0 % | 9 |
| email_address | T1 | 100.0 % (10/10) | 100.0 % (10/10) | 100.0 % | 10 |
| medical_record_number | T1 | 100.0 % (20/20) | 100.0 % (20/20) | 100.0 % | 20 |
| person_name | T1 | 20.0 % (4/20) | 100.0 % (20/20) | 100.0 % | 20 |
| phone_or_fax | T1 | 100.0 % (10/10) | 100.0 % (10/10) | 100.0 % | 10 |
| social_security_number | T1 | 90.0 % (9/10) | 100.0 % (10/10) | 100.0 % | 10 |
| account_number | T2 | 0.0 % (0/10) | 100.0 % (10/10) | 100.0 % | 10 |
| general_date | T2 | 100.0 % (27/27) | 29.6 % (8/27) | 100.0 % | 27 |
| health_plan_id | T2 | 0.0 % (0/10) | 100.0 % (10/10) | 100.0 % | 10 |
| ip_address | T2 | 100.0 % (9/9) | 100.0 % (9/9) | 100.0 % | 9 |
| license_number | T2 | 0.0 % (0/10) | 100.0 % (10/10) | 100.0 % | 10 |
| vehicle_id | T2 | 10.0 % (1/10) | 100.0 % (10/10) | 100.0 % | 10 |
| device_id | T3 | 22.2 % (2/9) | 88.9 % (8/9) | 77.8 % | 9 |
| photo | T2 | 0.0 % (0/9) | 0.0 % (0/9) | 0.0 % | 9 |
Dua baris yang menarik adalah tanggal umum (regex 100%, ML 30%) dan usia di atas 89 (regex 100%, ML 0%). Kami sengaja membiarkan regex menangani keduanya di Safe Harbor: tanggal memiliki bentuk yang ditangkap regex setiap saat, dan kami tidak ingin model probabilistik menebak-nebak ambang numerik seperti ">89". Aturan deterministik lebih andal daripada meminta model ML untuk mempelajari aturan yang sama.
Angka keseluruhan di semua kategori
Menjumlahkan semuanya: bagaimana perbandingan pipeline penuh (regex + ML bersama-sama) dengan salah satu lapisan saja?
| Mode | Lapisan | Recall | Presisi | F2 |
|---|---|---|---|---|
| Personal Data | regex saja | 65.8 % | 93.0 % | 69.9 % |
| Personal Data | ML saja | 95.4 % | 92.4 % | 94.8 % |
| Personal Data | keduanya | 96.9 % | 98.0 % | 97.1 % |
| Limited Data Set | regex saja | 55.9 % | 95.0 % | 60.9 % |
| Limited Data Set | ML saja | 92.9 % | 84.5 % | 91.0 % |
| Limited Data Set | keduanya | 92.9 % | 89.3 % | 92.1 % |
| Safe Harbor | regex saja | 58.9 % | 93.6 % | 63.6 % |
| Safe Harbor | ML saja | 82.4 % | 88.3 % | 83.5 % |
| Safe Harbor | keduanya | 92.4 % | 88.9 % | 91.7 % |
Baris "keduanya" pada filter Personal Data mengalahkan kedua versi lapisan tunggal pada setiap metrik — menggabungkan regex (untuk format permukaan) dengan model ML (untuk konteks) benar-benar memberikan sesuatu yang tidak dapat diberikan oleh salah satu lapisan saja. Angka utama 97.3% di awal postingan ini adalah angka yang mencerminkan apa yang didapatkan pengguna nyata. Angka dalam tabel di atas sedikit lebih rendah hanya karena menyertakan kategori URL, yang sengaja kami pertahankan agar kami tidak merusak tautan dan panggilan alat.
Head-to-head melawan filter privasi khusus lainnya
Perbandingan yang adil untuk filter privasi on-device yang hampir instan seperti milik kami adalah melawan filter privasi on-device yang hampir instan lainnya — bukan melawan LLM raksasa yang dihosting di cloud yang membutuhkan waktu beberapa detik per pesan dan memerlukan perjalanan pulang-pergi jaringan. Kami menjalankan setiap sistem di kelas ini terhadap set pengujian yang sama, menggunakan aturan pencocokan yang sama. Standar yang sama untuk semua orang.
Kelas sepadan:
- openai/privacy-filter — filter privasi khusus sumber terbuka milik OpenAI. Sekitar 50 juta parameter, cukup kecil untuk dijalankan di browser modern mana pun.
- piiranha-v1 — detektor dengan 278 juta parameter dari iiiorg. Lisensinya membatasinya hanya untuk penelitian dan evaluasi (kami dapat mengukurnya, tetapi tidak dapat dikirimkan secara komersial).
- Microsoft Presidio — redaktur sumber terbuka yang paling banyak digunakan, menggabungkan pencocokan pola tradisional dengan model bahasa kecil untuk konteks.
- GLiNER PII family — keluarga pengklasifikasi entitas kecil untuk tujuan umum. Knowledgator mengirimkan varian small (~44M), base (~86M), dan large (~304M); NVIDIA merilis varian 570M pada Oktober 2025.
- Caiioo dalam ketiga mode (Personal Data, HIPAA Limited Data Set, HIPAA Safe Harbor).
Recall di kelima set pengujian, diurutkan dengan Caiioo lebih dulu:
| Sistem | PrivacyBench PD-25 | Caiioo sintetik PD-200 | PrivacyBenchHIPAA-40 | Caiioo sintetik PHI-200 | Multilingual PD-40 (10 lokal) |
|---|---|---|---|---|---|
| Caiioo — Personal Data | 96.2 % (76/79) | 99.0 % (198/200) | — | — | 92.6 % (200/216) |
| Caiioo — HIPAA Limited Data Set | — | — | 100.0 % (79/79) | 100.0 % (200/200) | — |
| Caiioo — HIPAA Safe Harbor | — | — | 100.0 % (79/79) | 100.0 % (200/200) | — |
| openai/privacy-filter (50M) | 96.2 % (76/79) | 83.0 % (166/200) | 93.7 % (74/79) | 77.0 % (154/200) | 94.9 % (205/216) |
| gliner_pii_nvidia (570M) | 94.9 % (75/79) | 85.5 % (171/200) | 84.8 % (67/79) | 85.0 % (170/200) | 76.9 % (166/216) |
| gliner_pii_large (~304M) | 72.2 % (57/79) | 86.5 % (173/200) | 84.8 % (67/79) | 93.0 % (186/200) | 50.0 % (108/216) |
| gliner_pii_base (~86M) | 87.3 % (69/79) | 66.0 % (132/200) | 74.7 % (59/79) | 66.0 % (132/200) | 51.4 % (111/216) |
| gliner_pii_small (~44M) | 88.6 % (70/79) | 84.5 % (169/200) | 91.1 % (72/79) | 83.0 % (166/200) | 68.5 % (148/216) |
| Microsoft Presidio | 82.3 % (65/79) | 76.5 % (153/200) | 84.8 % (67/79) | 76.5 % (153/200) | 69.0 % (149/216) |
| piiranha-v1 (~278M) | 60.8 % (48/79) | 58.5 % (117/200) | 43.0 % (34/79) | 47.0 % (94/200) | 82.4 % (178/216) |
Caiioo memimpin kelas filter khusus pada dua pengujian terbesar (PD-200 dan PHI-200), seri atau memimpin pada benchmark publik, dan berada di urutan kedua pada multilingual. Pada pengujian terkecil (PrivacyBench PD-25, hanya 25 pertanyaan) Caiioo dan openai/privacy-filter seri di angka 96.2%. Pada multilingual, openai/privacy-filter masih memimpin di angka 94.9% dengan Caiioo di angka 92.6% — bahasa di mana kami paling tertinggal adalah Mandarin; di tempat lain kami berada pada atau mendekati posisi teratas. Jika cakupan multilingual sangat penting, openai/privacy-filter adalah alternatif yang masuk akal. Untuk sebagian besar beban kerja lainnya di kelas ini, Caiioo adalah pilihannya.
Hasil HIPAA adalah sorotan utamanya. Kedua mode Caiioo HIPAA mencapai 100% recall pada setiap pengujian HIPAA — setiap nama pasien, setiap nomor rekam medis, setiap tanggal lahir, setiap nomor rekening tertangkap. Sistem terbaik kedua adalah openai/privacy-filter di angka 93.7% pada PrivacyBenchHIPAA — selisih 6.3 poin, pada benchmark di mana setiap kegagalan adalah pengungkapan di dunia nyata.
Angka kedua yang layak dibaca: redaksi berlebihan — menyamarkan hal-hal yang sebenarnya bukan data pribadi. Redaksi berlebihan bukanlah kerugian privasi, melainkan biaya kegunaan. Samarkan terlalu banyak hal dan penalaran LLM akan memburuk, dan jawaban yang dikembalikan akan menurun kualitasnya. Caiioo menyamarkan secara tidak perlu sebanyak 1–24 kali di seluruh set pengujian. Presidio: 10–51. GLiNER milik NVIDIA: 31–64 pada pengujian HIPAA saja. Presisi sama pentingnya dengan recall ketika tujuannya adalah jawaban terbaik dengan paparan sesedikit mungkin.
Bagaimana jika hanya menggunakan LLM frontier sebagai filter?
Mereka bisa — dan pada recall mentah, mereka menang. LLM serbaguna yang besar (Llama 3.1 8B, Gemma 4, Qwen 3.5 9B, dan sejenisnya), yang berjalan di cloud atau secara lokal, dapat mencetak skor 95–100% di setiap pengujian termasuk multilingual. Itu adalah pilihan nyata bagi pengguna yang membutuhkan recall maksimum dan bersedia membayarnya.
Namun, ada kelemahan nyata:
- Lambat. Beberapa detik per pesan, bukan milidetik. Filter berada di depan setiap pesan yang dikirim pengguna.
- Pesan meninggalkan mesin pengguna, atau modelnya yang melakukannya. Untuk memfilter di cloud, pesan harus dikirim ke sana — mengalahkan tujuannya. Untuk memfilter on-device memerlukan pengunduhan model berukuran 1–17 GB.
- Dapat dikelabui. Model generatif dapat dibujuk, di tengah pesan, untuk tidak melakukan redaksi (serangan "prompt injection"). Pengklasifikasi kecil seperti milik kami tidak bisa.
- Input sama, output berbeda. Model generatif tidak selalu memberikan jawaban yang sama dua kali. Hal itu merusak perjalanan pulang-pergi — penyamaran saat keluar dan pembukaan samaran saat kembali bergantung pada nilai nyata yang sama yang selalu dipetakan ke nilai palsu yang sama.
Caiioo dibangun untuk sisi lain dari pertukaran tersebut: filter kecil, dapat diprediksi, dan di bawah satu detik yang berjalan di komposer sebelum pengguna menekan kirim, dan yang selalu menghasilkan nilai palsu yang sama untuk nilai nyata yang sama dalam sebuah percakapan, sehingga perjalanan pulang-pergi tetap koheren. Tabel kelas sepadan di atas adalah perbandingan yang setara untuk jenis kasus penggunaan tersebut.
Buktinya ada pada hasilnya
Benchmark hanyalah titik awal, bukan garis finis. Filter ini terhubung ke dalam fitur baru Caiioo: pseudonymizer — komponen yang sebenarnya berada di antara penyusun pesan dan model.
Inilah yang terjadi saat pengguna menekan tombol kirim.
- Detect. Lapisan regex berjalan lebih dulu — bersifat deterministik dan secepat mikrodetik. Model ML berjalan berikutnya pada teks yang tersisa. Jika kedua lapisan tumpang tindih pada potongan teks yang sama, kami menggunakan aturan sederhana: regex menang pada format permukaan, ML menang pada konteks.
- Tag self vs. other. Caiioo memisahkan pengidentifikasi yang merujuk pada pengguna dari pengidentifikasi yang merujuk pada orang lain. Pengguna dapat memilih untuk menyamarkan salah satu saja, atau keduanya. Nama-nama yang telah ditambahkan pengguna ke kamus pribadi selalu dihitung sebagai "self."
- Substitute. Setiap nilai asli mendapatkan pseudonim yang stabil dan sesuai gaya. "Sarah Goldberg" menjadi "Maya Hartwell" — dan tetap menjadi "Maya Hartwell" selama seluruh percakapan, sehingga penalaran model tentang orang tersebut tidak terfragmentasi di setiap giliran. Tabel pencarian nilai asli-ke-palsu disimpan di perangkat pengguna, dienkripsi dengan kunci dari keychain platform.
- Send. Model menerima pesan yang sepenuhnya palsu. Tidak ada pengidentifikasi asli yang pernah melintasi jaringan, dan log audit kami hanya mencatat jumlahnya saja — tidak pernah mencatat nilai itu sendiri.
- Restore. Respons streaming dipetakan kembali saat tiba. "Maya Hartwell" dalam balasan model menjadi "Sarah Goldberg" sebelum mencapai layar, ditampilkan dengan efek cahaya kecil sehingga pengguna dapat melihat sekilas apa yang dilindungi.
- Restore tool arguments too. Jika model memanggil sebuah tool — mengirim email, mengajukan tiket, menulis ke dokumen — dan argumennya berisi data palsu, kami mengganti kembali dengan nilai asli sebelum tool tersebut dijalankan. Model melakukan penalaran atas data palsu; tindakan tersebut mengambil nilai aslinya.
Filter ini tidak peduli layanan AI mana yang digunakan. Filter ini berjalan sebelum pesan mencapai model, sehingga OpenRouter, Anthropic, Google, OpenAI, dan Ollama lokal semuanya mendapatkan payload tersamar yang sama. Menambahkan penyedia baru tidak akan membuka kembali celah privasi.
Siapa yang dilindungi
Pengguna. Nama, email, alamat, telepon, IP, dan pengenal biometrik pengguna — hal-hal yang, jika digabungkan, mengidentifikasi seseorang ke agregator — tidak pernah meninggalkan perangkat saat filter aktif.
Orang yang dibicarakan pengguna. Sebagian besar alat privasi fokus pada orang yang mengetik, tetapi yang mereka abaikan adalah 'kontrak sosial' — fakta bahwa kita semua memiliki tanggung jawab kepada orang lain maupun kepada diri kita sendiri. Mengirimkan "Tolong analisis perilaku Tn. Saunders atas ketidakmampuannya" ke LLM, di mana hal itu mungkin dicatat dalam log sistem tanpa batas waktu, adalah tindakan yang tidak bertanggung jawab (dan berpotensi memfitnah). Meminta bantuan LLM untuk Google Sheet yang berisi 1.000 kontak bisnis akan menyimpan semuanya ke dalam retensi data (dalam berbagai tingkatan, tergantung pada 'zero data retention' yang berlaku). Filter Caiioo juga mencakup pihak ketiga: klien yang kontraknya sedang disusun, pasien yang catatannya sedang dianalisis, rekan kerja yang emailnya ditempelkan ke dalam konteks. Mereka tidak menyetujui LLM jarak jauh melihat pengenal mereka. Filter menghormati itu secara default; pengguna dapat beralih ke "hanya diri sendiri" atau "hanya orang lain" jika alur kerja membutuhkannya.
Entitas — bisnis, rumah sakit, firma. Nomor rekening, nomor lisensi, nomor rekam medis, detail perutean keuangan, ID internal, kunci API, daftar pelanggan. Sebuah bisnis memiliki kepentingan minimalisasi data yang sama dengan seseorang. Seorang klinisi yang menggunakan Caiioo untuk menyusun catatan pemulangan tidak mengirimkan nomor rekam medis pasien ke OpenAI. Seorang pengacara tidak mengirimkan nomor rekening klien ke Anthropic. Seorang insinyur pendukung tidak mengirimkan kunci API dari log pelanggan ke Google. Filter tidak menanyakan apakah pengenal itu milik orang atau entitas — ia hanya menjaganya tetap di perangkat.
Utilitas maksimum, paparan minimum
Intinya adalah pengguna tidak boleh merasakan adanya filter.
Sebagian besar alat privasi memaksa pilihan: samarkan secara agresif dan lihat jawaban model menjadi lebih buruk, atau biarkan perintah tetap dapat digunakan dan lihat janji privasi terkikis. Kami menolak pertukaran itu. Model tetap mendapatkan perintah yang terbentuk sempurna — ia melihat nama, tempat, tanggal, nomor rekam medis, semuanya dalam posisi tata bahasa yang tepat. Ia hanya melihat yang palsu. Penalarannya identik; hanya string yang dibersihkan.
Substitusi yang stabil adalah apa yang membuatnya berhasil. Karena nilai asli yang sama selalu dipetakan ke palsu yang sama dalam sebuah percakapan — di seluruh pesan pengguna, hasil alat yang kembali merujuk nama itu, balasan model sebelumnya yang menyebutkannya — model memiliki orang, tempat, atau benda yang koheren untuk dinalar. Percakapan multi-putaran tidak menjadi kacau. Panggilan alat tidak rusak. Sub-agen mewarisi peta percakapan induk dan tetap konsisten di seluruh tugas.
Output yang dilihat pengguna adalah percakapan yang sebenarnya. Data yang dilihat penyedia adalah fiksi yang koheren. Pekerjaan terjadi di celah antara kedua pandangan tersebut, dan tujuannya — satu-satunya tujuan — adalah membuat celah itu tidak terlihat.
Filter privasi yang menghalangi akan dimatikan. Filter privasi yang menyatu ke dalam alur kerja adalah satu-satunya jenis yang layak dirilis.
Itulah standar yang kami bangun.