Keuntungan:
- Pahami bahwa penyematan mengubah teks menjadi vektor dalam ruang semantik dan makna serupa adalah vektor dekat
- Menjelaskan cara kerja pencarian ANN dengan metrik kesamaan kosinus dan titik
- Memilih database vektor umum berdasarkan biaya, skala, dan kebutuhan pemfilteran metadata
Inti dari RAG adalah satu pertanyaan: "Teks manakah yang paling mirip dengan pertanyaan pengguna?" Komputer memproses teks dengan angka, bukan secara harfiah. Itu sebabnya kita perlu mengubah teks terlebih dahulu menjadi angka-angka yang mempunyai makna. Itulah yang dimaksud dengan embedding: proses mengubah suatu teks menjadi rangkaian angka (vektor) yang mewakili makna teks tersebut. Setelah Anda menyelesaikan unit ini, Anda akan mengetahui cara kerja penyematan, cara mengukur kesamaan, dan cara memilih database vektor yang tepat.
Embedding: Menerjemahkan Makna ke dalam Koordinat
Model penyematan (kecerdasan buatan yang dilatih secara khusus) mengubah teks yang Anda berikan menjadi vektor, misalnya 1024 angka. Bayangkan vektor ini sebagai koordinat dalam ruang multidimensi. Keajaibannya adalah ini: teks-teks yang memiliki makna serupa berada dalam koordinat yang dekat di ruang ini.
Contoh sederhana: “cuti tahunan”, “hak liburan”, dan “cuti tahunan yang dibayar” menggunakan kata-kata yang berbeda tetapi memiliki arti yang sama — vektor-vektornya berdekatan satu sama lain. “Akun penggajian” adalah masalah yang berbeda — vektornya jauh. Jadi pengguna bertanya "berapa hari libur yang saya punya?" Ketika Anda bertanya, kami bahkan dapat menemukan dokumen yang tidak mengandung kata "liburan" tetapi mengatakan "cuti tahunan adalah 14 hari". Inilah yang tidak dapat dilakukan oleh pencarian kata kunci klasik (pencarian yang sama persis dengan kata tersebut).
Tip: Anggaplah penyematan sebagai “sidik jari yang penuh makna”. Sidik jari dari dua kalimat dengan arti yang sama tampak serupa; Meski kata-katanya berbeda.
Aturan penting: model yang Anda gunakan saat menyematkan pertanyaan harus sama dengan model yang Anda gunakan saat menyematkan dokumen. Model yang berbeda menghasilkan ruang yang berbeda; koordinat menjadi tidak ada bandingannya.
Bagaimana Mengukur Kesamaan?
Ada beberapa metode untuk mengukur kemiripan dua vektor. Yang paling umum adalah kesamaan kosinus: yang mengukur sudut antara dua vektor. Jika sudutnya kecil (vektornya menunjuk ke arah yang sama), maka kemiripannya tinggi. Nilainya antara −1 dan 1; Mendekati 1 = sangat mirip.
kriteria
Apa yang diukurnya?
Kapan itu disukai?
Kosinus
Sudut (arah) antar vektor
Yang paling umum; default dalam kesamaan semantik teks
Produk titik
Arah + besarnya bersama-sama
Jika vektor-vektornya dinormalisasi, hasilnya sama dengan kosinus; cepat
Euclidean (jarak euclidean)
Jarak lurus antar koordinat
Dalam beberapa skenario pengelompokan; kurang digunakan dalam teks
Dalam praktiknya, sebagian besar model penyematan menghasilkan vektor yang dinormalisasi (ukuran disetel ke 1); Dalam hal ini, perkalian kosinus dan titik memberikan orde yang sama. Jangan menjadi lumpuh dalam mengambil keputusan: mulailah dengan kosinus.
Di antara jutaan vektor, membandingkannya satu per satu adalah hal yang lambat. Itu sebabnya database vektor menggunakan algoritma ANN (Approximate Nearest Neighbor). ANN menemukan "hampir tepat paling dekat" daripada "paling dekat" dengan sangat cepat. Misalnya, metode yang disebut HNSW dapat memberikan hasil dalam beberapa milidetik bahkan untuk 10 juta vektor. Anda mendapatkan kecepatan tinggi dengan sedikit mengorbankan akurasi.
Apa yang Dilakukan Basis Data Vektor?
Basis data vektor melakukan tiga hal sekaligus: (1) menyimpan vektor, (2) dengan cepat menemukan vektor yang paling mirip dengan vektor kueri, (3) memfilter berdasarkan metadata di samping setiap vektor. Metadata adalah tag yang Anda lampirkan pada bagian itu: file sumber, tanggal, departemen, tingkat privasi, dll. Pemfilteran metadata sangat penting dalam RAG perusahaan; karena Anda harus dapat menetapkan batasan seperti "hanya mencari di dokumen Departemen Keuangan tahun 2025".
# Daftar ke database vektor (konseptual)vektor_db.add( id="izin-politikasi-parca-3", vektor=embed("Cuti berbayar tahunan adalah 14 hari..."), text="Cuti berbayar tahunan adalah 14 hari...", metadata={"source": "ik_el_kitabi.pdf", "department": "IK", "date": "2025-06", "privacy": "ic"})
# Pencarian yang difilter metadata (konseptual)hasil = vektor_db.search( vektor=embed("berapa hari cuti yang saya punya?"), top_k=4, filter={"department": "HR", "privacy": ["internal", "on"]})
Memilih Basis Data yang Tepat
kendaraan
Aspek unggulan
Situasi yang cocok
Bawaan / berbasis file (perpustakaan tertanam)
Tidak ada instalasi, mesin tunggal
Prototipe, kit kecil (< beberapa ratus ribu bagian)
Layanan cloud terkelola
Penskalaan dan pemeliharaan bukan tanggung jawab Anda
Produksi, data yang berkembang pesat, tim kecil
Sumber terbuka di server Anda sendiri
Kontrol penuh, data Anda tetap menjadi milik Anda
Kewajiban privasi, infrastruktur yang ada
Penambahan database yang sudah ada
Anda tidak mengelola sistem terpisah
Menambahkan dukungan vektor ke DB yang sudah Anda gunakan
Tanyakan saat memilih: Berapa banyak potongannya? Seberapa pentingkah pemfilteran metadata? Apakah data bisa keluar perusahaan (kerahasiaan)? Bisakah tim mengoperasikan infrastruktur? Seringkali bijaksana untuk memulai dari yang kecil dan mengembangkannya sesuai kebutuhan.
Pendekatan Lemah / Pendekatan Kuat
Lemah (menyimpan penyematan biasa, tidak ada metadata):
Simpan saja teks dan vektornya. Pencarian: mengembalikan 4 vektor yang paling mirip.# Masalah: tidak dapat memfilter seperti "hanya dokumen HR saat ini";# bagian lama/tidak sah mungkin juga disertakan dalam respons.
Kuat (metadata kaya + pencarian terfilter):
Tambahkan sumber, tanggal, departemen, dan tag privasi ke setiap bagian. Filter menurut otoritas dan kekinian pengguna selama pencarian: filter = {"privacy": user_authority, "date_date": "2024-01"}# Dengan demikian, hasilnya aman dan terkini.
Tiga Kasus Mini
Kasus 1 — Campuran model yang salah. Sebuah tim menyematkan dokumen dengan model A dan pertanyaan dengan model B. Pencarian memberikan hasil yang tidak berarti, dan tingkat jawaban yang benar tetap pada 31%. Saat saya beralih ke satu model (keduanya merupakan model penyematan yang sama), angkanya melonjak menjadi 88%. Pelajaran: pertanyaan dan dokumen harus berada di ruang yang sama.
Kasus 2 — Risiko privasi tanpa metadata. Di perusahaan layanan kesehatan, semua dokumen departemen dimasukkan ke dalam satu kumpulan tanpa metadata. Saat rekan penjualan mengajukan pertanyaan, sistem mengontekstualisasikan sebagian data pasien. Ketika metadata + filter ditambahkan (sesuai dengan tingkat otorisasi), risiko ini dihilangkan; Dalam pengambilan, 12 buah barang yang tidak sah tidak dibawa sama sekali.
Kasus 3 — Skala kemacetan. Sebuah perusahaan e-commerce mencari 8 juta deskripsi produk dengan metode sederhana "pindai semua"; Setiap kueri membutuhkan waktu 6 detik. Saat kami beralih ke ANN berbasis HNSW, waktu berkurang menjadi 45 milidetik, dengan hanya kehilangan akurasi sebesar 1%. Pelajaran: ANN wajib di set besar.
Kesalahan umum
- Menanamkan pertanyaan dan dokumen dengan model yang berbeda: Hasilnya tidak ada artinya; selalu satu model.
- Melewatkan metadata: Anda tidak dapat memfilter; Anda kehilangan kendali atas privasi dan pembaruan.
- Salah mengira Penyematan sebagai enkripsi: Penyematan membawa informasi yang dapat dibalik; Salah jika berasumsi bahwa data sensitif "tersembunyi".
- Membangun infrastruktur besar yang tidak perlu dalam skala kecil: Sebuah cluster raksasa yang dikelola untuk 5.000 bagian adalah kerumitan yang tidak perlu.
- Jangan terlalu khawatir tentang kriteria kesamaan: Mulailah dengan kosinus dalam teks; Penyempurnaan dilakukan kemudian.
Perhatian: Penyematan menyematkan makna teks dalam angka, namun tidak "menghancurkan" isinya. Jika database vektor bocor, teks asli yang disimpan (di sebagian besar instalasi, teks juga disimpan) juga disusupi. Jaga kerahasiaan repositori vektor seperti halnya dokumen di dalamnya.
Singkatnya
- Penyematan mengubah teks menjadi vektor angka yang membawa maknanya; Arti serupa adalah vektor dekat.
- Kemiripan sering kali diukur dengan kosinus; Untuk vektor yang dinormalisasi, perkalian titik memberikan hasil yang sama.
- Dalam data besar, ANN (misalnya, HNSW) menggantikan pencarian tepat: kecepatan tinggi dengan sedikit pengorbanan pada akurasi.
- Basis data vektor melakukan penyimpanan vektor + pencarian kesamaan + pemfilteran metadata; metadata sangat penting untuk RAG perusahaan.
- Pertanyaan dan dokumen harus diterjemahkan dengan model penyematan yang sama; jika tidak, koordinatnya tidak dapat dibandingkan.
Tugas aplikasi
Ekstrak 10 bagian pendek (masing-masing 3-6 kalimat) dari dokumen yang Anda pilih di unit sebelumnya. (1) Rancang setidaknya tiga tag metadata untuk setiap bagian (sumber, tanggal, dan tag ketiga yang sesuai dengan konteks bisnis Anda: departemen, produk, privasi, dll.). (2) Tulis filter metadata mana yang harus diterapkan untuk 3 pertanyaan pengguna yang berbeda. (3) Temukan 3 pasangan bagian pertanyaan yang mengungkapkan arti yang sama dalam kata yang berbeda (misalnya “hak liburan” ↔ “cuti tahunan”) dan jelaskan dalam satu kalimat mengapa pasangan tersebut tidak cocok dengan pencarian kata kunci tetapi akan cocok dengan penyematan.
daftar periksa
- [] Saya tahu bahwa penyematan mengubah teks menjadi vektor dalam ruang semantik dan makna serupa hampir sama.
- Saya tahu bahwa [ ] Kesamaan kosinus mengukur sudut dan merupakan preferensi default dalam teks.
- [ ] Saya bisa menjelaskan mengapa ANN diperlukan dalam data besar.
- [ ] Saya tahu mengapa metadata sangat penting untuk kerahasiaan dan kontrol kesegaran.
- [ ] Saya mengikuti aturan menerjemahkan pertanyaan dan dokumen dengan model penyematan yang sama.