Keuntungan:
- Fahami bahawa pembenaman menukar teks menjadi vektor dalam ruang semantik dan makna yang serupa ialah vektor rapat
- Menjelaskan cara carian ANN berfungsi dengan metrik persamaan kosinus dan titik
- Memilih pangkalan data vektor biasa berdasarkan kos, skala dan keperluan untuk penapisan metadata
Di tengah-tengah RAG ialah satu soalan: "Sekeping teks yang manakah paling serupa dengan soalan pengguna?" Komputer memproses teks dengan nombor, bukan secara literal. Itulah sebabnya kita perlu terlebih dahulu menukar teks kepada nombor yang membawa maksudnya. Itulah yang dibenamkan: proses menukar teks kepada urutan nombor (vektor) yang mewakili maksud teks tersebut. Apabila anda menyelesaikan unit ini, anda akan mengetahui cara pembenaman berfungsi, cara persamaan diukur dan cara memilih pangkalan data vektor yang betul.
Embedding: Menterjemah Makna kepada Koordinat
Model pembenaman (kecerdasan buatan yang dilatih khas) menukarkan teks yang anda berikan kepada vektor, sebagai contoh, 1024 nombor. Fikirkan vektor ini sebagai koordinat dalam ruang berbilang dimensi. Keajaibannya ialah: teks yang serupa dalam makna jatuh ke dalam koordinat rapat dalam ruang ini.
Contoh mudah: "cuti tahunan", "kelayakan bercuti" dan "cuti bergaji tahunan" menggunakan perkataan yang berbeza tetapi bermaksud perkara yang sama — vektornya berdekatan antara satu sama lain. "Akaun gaji" adalah perkara yang berbeza — vektornya jauh. Jadi pengguna bertanya "berapa hari cuti saya?" Apabila anda bertanya, kami juga boleh mencari dokumen yang tidak mengandungi perkataan "cuti" tetapi mengatakan "cuti tahunan ialah 14 hari". Inilah perkara yang tidak boleh dilakukan oleh carian kata kunci klasik (carian yang sepadan dengan perkataan betul-betul).
Petua: Fikirkan untuk membenamkan sebagai "cap jari makna." Cap jari dua ayat dengan makna yang sama kelihatan serupa; Walaupun perkataannya berbeza.
Peraturan penting: model yang anda gunakan semasa membenamkan soalan mestilah model yang sama yang anda gunakan semasa membenamkan dokumen. Model yang berbeza menghasilkan ruang yang berbeza; koordinat menjadi tiada tandingan.
Bagaimana untuk Mengukur Persamaan?
Terdapat beberapa kaedah untuk mengukur kesamaan dua vektor. Yang paling biasa ialah persamaan kosinus: ia mengukur sudut antara dua vektor. Jika sudutnya kecil (vektor menunjuk ke arah yang sama), persamaannya adalah tinggi. Nilainya adalah antara −1 dan 1; Hampir 1 = hampir sama.
kriteria
Apakah ukurannya?
Bilakah ia diutamakan?
kosinus
Sudut (arah) antara vektor
Yang paling biasa; lalai dalam persamaan semantik teks
Produk dot
Arah + magnitud bersama-sama
Jika vektor dinormalkan, ia memberikan hasil yang sama seperti kosinus; adalah pantas
Euclidean (jarak euclidean)
Jarak lurus antara koordinat
Dalam beberapa senario pengelompokan; kurang digunakan dalam teks
Dalam amalan, kebanyakan model pembenaman menghasilkan vektor ternormal (saiz ditetapkan kepada 1); Dalam kes ini, produk kosinus dan titik memberikan susunan yang sama. Jangan lumpuh keputusan: mulakan dengan kosinus.
Di antara berjuta-juta vektor, membandingkannya satu demi satu adalah perlahan. Itulah sebabnya pangkalan data vektor menggunakan algoritma ANN (Anggaran Nearest Neighbor). ANN mencari "hampir tepat paling hampir" dan bukannya "tepat paling hampir" dengan cepat. Sebagai contoh, kaedah yang dipanggil HNSW boleh mengembalikan hasil dalam beberapa milisaat walaupun untuk 10 juta vektor. Anda memperoleh kelajuan yang hebat untuk pengorbanan kecil ketepatan.
Apakah yang dilakukan oleh Pangkalan Data Vektor?
Pangkalan data vektor melakukan tiga perkara serentak: (1) menyimpan vektor, (2) mencari vektor yang paling serupa dengan vektor pertanyaan dengan cepat, (3) menapis mengikut metadata di sebelah setiap vektor. Metadata ialah teg yang anda lampirkan pada bahagian itu: fail sumber, tarikh, jabatan, tahap privasi, dll. Penapisan metadata adalah penting dalam RAG perusahaan; kerana anda perlu boleh menetapkan sekatan seperti "cari hanya dalam dokumen 2025 jabatan Kewangan".
# Daftar ke pangkalan data vektor (konseptual)vektor_db.add( id="izin-politikasi-parca-3", vektor=embed("Cuti bergaji tahunan ialah 14 hari..."), text="Cuti bergaji tahunan ialah 14 hari...", metadata={"sumber": "ik_el_kitabi.pdf", "jabatan": "IK", "tarikh"-"0"
# Hasil carian (konseptual) ditapis metadata = vektor_db.search( vektor=embed("berapa hari cuti yang saya ada?"), top_k=4, filter={"department": "HR", "privacy": ["internal", "on"]})
Memilih Pangkalan Data yang Tepat
kenderaan
Aspek yang diketengahkan
Keadaan yang sesuai
Terbina dalam / berasaskan fail (pustaka terbenam)
Tiada pemasangan, mesin tunggal
Prototaip, kit kecil (< beberapa ratus ribu bahagian)
Perkhidmatan awan terurus
Penskalaan dan penyelenggaraan bukan tanggungjawab anda
Pengeluaran, data berkembang pesat, pasukan kecil
Sumber terbuka pada pelayan anda sendiri
Kawalan penuh, data anda kekal milik anda
Kewajipan privasi, infrastruktur sedia ada
Tambahan kepada pangkalan data sedia ada
Anda tidak menguruskan sistem yang berasingan
Menambah sokongan vektor pada DB yang telah anda gunakan
Tanya apabila memilih: Berapa banyak keping akan ada? Sejauh manakah penapisan metadata kritikal? Bolehkah data pergi ke luar syarikat (kerahsiaan)? Bolehkah pasukan mengendalikan infrastruktur? Selalunya bijak untuk bermula dari kecil dan berkembang mengikut keperluan.
Pendekatan Lemah / Pendekatan Kuat
Lemah (menyimpan benam biasa, tiada metadata):
Simpan sahaja teks dan vektor. Carian: kembalikan 4 vektor yang paling serupa.# Masalah: tidak boleh menapis seperti "hanya dokumen HR semasa";# bahagian lama/tidak dibenarkan juga boleh disertakan dalam respons.
Berkuasa (metadata kaya + carian ditapis):
Tambahkan tag sumber, tarikh, jabatan dan privasi pada setiap bahagian. Tapis mengikut kuasa dan kekinian pengguna semasa carian: filter = {"privacy": user_authority, "date_date": "2024-01"}# Oleh itu, hasilnya selamat dan terkini.
Tiga Kes Mini
Kes 1 — Campuran model yang salah. Satu pasukan membenamkan dokumen dengan model A dan soalan dengan model B. Carian mengembalikan hasil yang tidak bermakna dan kadar jawapan yang betul kekal pada 31%. Apabila saya beralih kepada model tunggal (kedua-dua model pembenaman yang sama), kadarnya melonjak kepada 88%. Pengajaran: soalan dan dokumen hendaklah berada dalam ruang yang sama.
Kes 2 — Risiko privasi tanpa metadata. Dalam syarikat penjagaan kesihatan, semua dokumen jabatan dibuang ke dalam kumpulan tunggal tanpa metadata. Apabila rakan jualan bertanya soalan, sistem itu mengkontekstualisasikan sekeping data pesakit. Apabila metadata + penapis ditambahkan (mengikut tahap kebenaran), risiko ini telah dihapuskan; Dalam pengambilan semula, 12 keping yang tidak dibenarkan tidak dibawa sama sekali.
Kes 3 — Skala kesesakan. Sebuah syarikat e-dagang mencari 8 juta penerangan produk dengan kaedah "imbas semua" yang mudah; Setiap pertanyaan mengambil masa 6 saat. Apabila kami bertukar kepada ANN berasaskan HNSW, masa berkurangan kepada 45 milisaat, dengan hanya 1% kehilangan ketepatan. Pelajaran: ANN adalah wajib dalam set besar.
Kesilapan biasa
- Membenamkan soalan dan dokumen dengan model yang berbeza: Hasilnya tidak bermakna; sentiasa satu model.
- Melangkau metadata: Anda tidak boleh menapis; Anda kehilangan kawalan privasi dan kemas kini.
- Tersilap Pembenaman untuk penyulitan: Pembenaman membawa maklumat boleh balik; Adalah salah untuk menganggap bahawa data sensitif "tersembunyi".
- Membina infrastruktur yang tidak perlu besar pada set kecil: Kelompok gergasi yang diuruskan untuk 5,000 bahagian adalah kerumitan yang tidak perlu.
- Jangan terlalu risau tentang kriteria persamaan: Mulakan dengan kosinus dalam teks; Penalaan halus datang kemudian.
Awas: Pembenaman membenamkan maksud teks dalam nombor, tetapi tidak "memusnahkan" kandungan. Jika pangkalan data vektor dibocorkan, teks asal yang disimpan (dalam kebanyakan pemasangan teks juga disimpan) juga terjejas. Simpan repositori vektor serahsia seperti dokumen di dalamnya.
Secara ringkasnya
- Benamkan mengubah teks menjadi vektor nombor yang membawa maksudnya; Makna yang sama ialah vektor rapat.
- Persamaan sering diukur dengan kosinus; Untuk vektor ternormal, produk titik memberikan hasil yang sama.
- Dalam data besar, ANN (mis., HNSW) menggantikan carian tepat: kelajuan hebat dengan sedikit pengorbanan ketepatan.
- Pangkalan data vektor melakukan storan vektor + carian persamaan + penapisan metadata; metadata adalah penting untuk RAG perusahaan.
- Soalan dan dokumen mesti diterjemahkan dengan model pembenaman yang sama; jika tidak koordinat tidak boleh dibandingkan.
Tugasan permohonan
Ekstrak 10 petikan pendek (3-6 ayat setiap satu) daripada dokumen yang anda pilih dalam unit sebelumnya. (1) Reka bentuk sekurang-kurangnya tiga teg metadata untuk setiap bahagian (sumber, tarikh dan satu pertiga yang sesuai dengan konteks perniagaan anda: jabatan, produk, privasi, dll.). (2) Tulis penapis metadata yang harus digunakan untuk 3 soalan pengguna yang berbeza. (3) Cari 3 pasangan bahagian soalan yang menyatakan makna yang sama dalam perkataan yang berbeza (cth. "kelayakan percutian" ↔ "cuti tahunan") dan terangkan dalam satu ayat mengapa mereka tidak akan memadankan carian kata kunci tetapi akan memadankan pembenaman.
senarai semak
- [ ] Saya dapat tahu bahawa pembenaman mengubah teks menjadi vektor dalam ruang semantik dan makna yang serupa adalah hampir.
- Saya tahu bahawa [ ] Persamaan kosinus mengukur sudut dan merupakan keutamaan lalai dalam teks.
- [ ] Saya boleh menerangkan sebab ANN diperlukan dalam data besar.
- [ ] Saya tahu sebab metadata penting untuk kawalan kerahsiaan dan kesegaran.
- [ ] Saya mengikut peraturan menterjemah soalan dan dokumen dengan model benam yang sama.