0Pricing
SQL Academy · Pelajaran

Pencarian Vektor dengan pgvector

Gunakan ekstensi pgvector untuk menyimpan embedding dan menjalankan pencarian tetangga terdekat aproksimatif dengan ivfflat / HNSW

Pencarian Vektor dengan pgvector adalah pelajaran SQL Academy 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 SQL Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus SQL Academy mencakup 4 pelajaran total.

Untuk Apa Vektor Digunakan?

Embedding menyandikan makna. Dua dokumen tentang topik yang sama memiliki vektor yang mirip. Pencarian vektor mendukung pencarian semantik, RAG (pembuatan yang diperkuat dengan pengambilan), dan rekomendasi.

Mengaktifkan pgvector

Ekstensi ini tersedia secara luas (RDS, Cloud SQL, dan Supabase telah menyediakannya secara bawaan):

CREATE EXTENSION vector;

Kolom Vektor

Tentukan kolom dengan dimensi model embedding Anda:

CREATE TABLE docs (
  id BIGSERIAL PRIMARY KEY,
  title TEXT NOT NULL,
  body TEXT NOT NULL,
  embedding vector(1536)
);

-- 1536 is OpenAI text-embedding-3-small dimension; varies by model.

Menyisipkan Embedding

Sisipkan vektor sebagai literal array:

INSERT INTO docs (title, body, embedding)
VALUES ('SQL Course', 'Learn SQL', '[0.013, -0.024, ...]');

Operator Jarak

pgvector menyediakan tiga operator:

  • <-> — jarak Euclidean (L2)
  • <#> — hasil kali dalam negatif
  • <=> — jarak kosinus (paling umum untuk embedding)

Pencarian Tetangga Terdekat

Temukan dokumen yang paling dekat dengan vektor kueri:

SELECT id, title, 1 - (embedding <=> $1) AS similarity
FROM docs
ORDER BY embedding <=> $1
LIMIT 10;

Indeks IVFFlat

Untuk himpunan data besar, buat indeks tetangga terdekat aproksimatif (ANN):

CREATE INDEX docs_embedding_idx
  ON docs USING IVFFLAT (embedding vector_cosine_ops)
  WITH (lists = 100);

-- Tune lists by row count: rule of thumb sqrt(N).
-- Set probes per query for accuracy:
SET ivfflat.probes = 10;

Indeks HNSW (PG 16+)

Dalam banyak kasus, indeks ini memberikan recall/latensi yang lebih baik daripada IVFFlat:

CREATE INDEX docs_embedding_hnsw
  ON docs USING HNSW (embedding vector_cosine_ops);

SET hnsw.ef_search = 100;

Pencarian Vektor Terfilter

Gabungkan filter vektor dan terstruktur:

SELECT id, title
FROM docs
WHERE language = 'en'
  AND created_at >= NOW() - INTERVAL '30 days'
ORDER BY embedding <=> $1
LIMIT 10;
-- For best perf, partial index on the filter.

Pola RAG

Ambil N dokumen yang relevan berdasarkan embedding, lalu berikan dokumen tersebut sebagai konteks kepada LLM:

-- 1. Embed user query
-- 2. SELECT top-N docs by cosine
-- 3. Send docs + query to LLM
-- 4. Return LLM's answer to user

Pencarian Hibrida

Gabungkan vektor + leksikal (tsvector) untuk mendapatkan hasil terbaik — jika digunakan sendiri, tidak ada yang menangkap semuanya:

SELECT id, title,
  0.6 * (1 - (embedding <=> $1)) + 0.4 * ts_rank(search_doc, $2) AS score
FROM docs
WHERE embedding <=> $1 < 0.7
   OR search_doc @@ $2
ORDER BY score DESC LIMIT 10;

Pemilihan Dimensi

Embedding yang lebih besar = lebih akurat, tetapi membutuhkan lebih banyak penyimpanan dan lebih lambat. Banyak aplikasi berjalan baik dengan model berdimensi 384–768. Pilih satu model dan gunakan secara konsisten.

Ringkasan

pgvector menambahkan pencarian vektor kelas utama ke Postgres.

  • tipe kolom vector(N)
  • indeks IVFFlat / HNSW
  • jarak kosinus melalui <=> untuk embedding
  • gabungan dengan FTS untuk recall terbaik

Pemeriksaan Singkat

Anda mencari berdasarkan kemiripan semantik menggunakan embedding OpenAI. Operator jarak pgvector mana yang biasanya digunakan?

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Pencarian Vektor dengan pgvector” gratis?

Ya — teks lengkap “Pencarian Vektor dengan pgvector” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus SQL Academy, upgrade ke CoddyKit PRO. Kursus SQL Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Pencarian Vektor dengan pgvector”?

Gunakan ekstensi pgvector untuk menyimpan embedding dan menjalankan pencarian tetangga terdekat aproksimatif dengan ivfflat / HNSW Kamu berlatih SQL Academy 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 SQL Academy?

Tidak diperlukan pengalaman sebelumnya. SQL Academy 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 “Pencarian Vektor dengan pgvector” 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 SQL Academy ini?

Ya. Setiap pelajaran SQL Academy 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. Pencarian Trigram (pg_trgm) untuk Pencocokan Samar
  2. Pencarian Teks Lengkap dengan tsvector dan GIN
  3. Pengindeksan Geospasial dengan PostGIS
  4. Pencarian Vektor dengan pgvector
← Kembali ke SQL Academy