LangChain / RAG / Vector DBs · Pelajaran

Kuantisasi dan Kompresi Vektor

Perkecil penyimpanan vektor dan percepat pencarian dengan kuantisasi skalar dan produk, sambil mengendalikan penurunan akurasi.

Pelajaran 4 dari 413 langkah

Kuantisasi dan Kompresi Vektor adalah pelajaran LangChain / RAG / Vector DBs gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar LangChain / RAG / Vector DBs, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus LangChain / RAG / Vector DBs mencakup 4 pelajaran total.

Masalah Memori

Satu juta vektor berdimensi 1536 yang disimpan sebagai bilangan pecahan 32-bit memerlukan sekitar 6 GB RAM. Kuantisasi memampatkan vektor agar muat dalam memori yang jauh lebih kecil dan dapat dicari lebih cepat.

Dasar Float32

Secara bawaan, setiap dimensi adalah pecahan 4 byte. Penyimpanan sama dengan vectors x dims x 4 byte. Mengurangi jumlah byte per dimensi adalah cara untuk melakukan kompresi.

vectors = 1_000_000
dims = 1536
bytes_total = vectors * dims * 4
print(bytes_total / 1e9, "GB")  # ~6.14 GB

Kuantisasi Skalar

Kuantisasi skalar memetakan setiap pecahan ke bilangan bulat 8-bit menggunakan rentang minimum dan maksimum dimensi tersebut. Cara ini mengurangi ukuran 4 kali lipat dengan sedikit penurunan akurasi.

def quantize(x, lo, hi):
    span = hi - lo
    return round((x - lo) / span * 255)

print(quantize(0.3, -1.0, 1.0))  # 165

Dekuantisasi

Untuk membandingkan vektor, Anda dapat melakukan dekuantisasi kembali ke pecahan perkiraan, atau menghitung jarak langsung dalam ruang bilangan bulat demi kecepatan.

def dequantize(q, lo, hi):
    return lo + (q / 255) * (hi - lo)

print(round(dequantize(165, -1.0, 1.0), 3))  # ~0.294

Kuantisasi Produk (PQ)

PQ membagi setiap vektor menjadi subvektor dan mengganti masing-masing dengan id sentroid terdekat dari buku kode terlatih berukuran kecil. Kompresi dapat mencapai 16 kali lipat atau lebih.

Cara PQ Melakukan Pengodean

Untuk 8 subvektor dengan masing-masing 256 sentroid, setiap vektor menjadi 8 byte tanpa bergantung pada dimensi aslinya. Jarak diperkirakan dari tabel sentroid yang telah dihitung sebelumnya.

Kuantisasi Biner

Opsi paling agresif hanya mempertahankan tanda setiap dimensi: nilai positif menjadi 1, nilai negatif menjadi 0. Vektor berdimensi 1536 dapat dimuat dalam 192 byte dan menggunakan jarak Hamming yang cepat.

def binarize(vec):
    return [1 if v > 0 else 0 for v in vec]

print(binarize([0.4, -0.1, 0.9, -2.0]))  # [1, 0, 1, 0]

Pertukaran Akurasi

Kompresi yang lebih besar berarti galat perkiraan yang lebih besar. Ukur perolehan dibandingkan dengan dasar tanpa kompresi untuk memastikan penurunan kualitas masih dapat diterima untuk penggunaan Anda.

Menghitung Ulang Skor dengan Vektor Lengkap

Pola yang umum: lakukan pencarian cepat dengan vektor terkuantisasi untuk mendapatkan sekumpulan kandidat, lalu hitung ulang skornya menggunakan vektor pecahan asli demi presisi.

candidates = quantized_search(query, k=100)
rescored = sorted(
    candidates,
    key=lambda c: exact_distance(query, full_vec[c]),
)[:10]

Mengonfigurasi di Penyimpanan

Penyimpanan produksi menyediakan kuantisasi sebagai pengaturan koleksi. Anda memilih jenis dan kedalaman penghitungan ulang skor saat membuat indeks.

# pseudo-config
collection.create(
    vectors={"size": 1536, "distance": "Cosine"},
    quantization={"scalar": {"type": "int8"}},
)

Memilih Strategi

Mulailah dengan kuantisasi skalar untuk memperoleh pengurangan ukuran 4 kali lipat dengan mudah. Beralihlah ke PQ atau biner hanya saat memori sangat terbatas dan Anda dapat melakukan penghitungan ulang skor untuk memulihkan akurasi.

Pemeriksaan Singkat

Uji pemahaman Anda tentang kompresi vektor.

Rangkuman

Anda telah mempelajari kompresi vektor:

  • Kuantisasi skalar: pecahan menjadi int8, 4 kali lebih kecil
  • PQ: id buku kode, kompresi besar
  • Biner: bit tanda, jarak Hamming
  • Hitung ulang skor dengan vektor lengkap untuk mengembalikan akurasi
Gratis untuk memulai

Belajar LangChain / RAG / Vector DBs dengan tutor AI — gratis

Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.

Kursus
12
Pelajaran
48

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Kuantisasi dan Kompresi Vektor” gratis?

Ya — teks lengkap “Kuantisasi dan Kompresi Vektor” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus LangChain / RAG / Vector DBs, upgrade ke CoddyKit PRO. Kursus LangChain / RAG / Vector DBs mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Kuantisasi dan Kompresi Vektor”?

Perkecil penyimpanan vektor dan percepat pencarian dengan kuantisasi skalar dan produk, sambil mengendalikan penurunan akurasi. Kamu berlatih LangChain / RAG / Vector DBs dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai LangChain / RAG / Vector DBs?

Tidak diperlukan pengalaman sebelumnya. LangChain / RAG / Vector DBs di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.

Berapa lama pelajaran “Kuantisasi dan Kompresi Vektor” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran LangChain / RAG / Vector DBs ini?

Ya. Setiap pelajaran LangChain / RAG / Vector DBs menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Arsitektur Penyimpanan DB Vektor
  2. Algoritme Pencarian Kedekatan (HNSW, IVFFlat)
  3. Persistensi dan Skalabilitas DB Vektor
  4. Kuantisasi dan Kompresi Vektor
← Kembali ke LangChain / RAG / Vector DBs