Pangkalan Data Vektor: Pinecone, Weaviate & pgvector · Pelajaran

Pengindeksan IVFFlat untuk Kelajuan

Laksanakan indeks IVFFlat dalam pgvector untuk mempercepatkan carian jiran terdekat secara anggaran dan menghasilkan pertanyaan yang lebih pantas.

Pelajaran 1 daripada 411 langkah

Pengindeksan IVFFlat untuk Kelajuan ialah pelajaran Pangkalan Data Vektor: Pinecone, Weaviate & pgvector percuma di CoddyKit. Ini ialah pelajaran 1 daripada 4. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Pangkalan Data Vektor: Pinecone, Weaviate & pgvector, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Pangkalan Data Vektor: Pinecone, Weaviate & pgvector merangkumi sejumlah 4 pelajaran.

Carian Lebih Pantas dengan IVFFlat

Selamat datang ke pengoptimuman prestasi pgvector! Untuk set data kecil, pertanyaan keserupaan vektor yang mudah mungkin cukup pantas. Namun, apabila data anda bertambah, carian secara paksa menjadi terlalu perlahan.

Pelajaran ini memperkenalkan pengindeksan IVFFlat, iaitu teknik hebat untuk mempercepat carian ANN (Jiran Terdekat Anggaran) dalam pgvector.

Mengapa Indeks Vektor Penting

Bayangkan anda sedang mencari orang yang paling hampir dengan anda dalam kerumunan yang sangat besar. Tanpa sebarang penyusunan, anda perlu memeriksa setiap orang.

Begitu juga, tanpa indeks, pgvector perlu membandingkan vektor pertanyaan anda dengan setiap vektor dalam jadual anda. Ini dipanggil carian secara paksa, dan kaedah ini tidak cekap untuk set data yang besar.

  • Indeks menyusun data.
  • Indeks menjadikan carian jauh lebih pantas.
  • Indeks amat penting untuk carian vektor yang boleh diskalakan.

IVFFlat: Idea Teras

IVFFlat (Inverted File Index with Flat quantizer) ialah algoritma pengindeksan ANN. Idea terasnya adalah mengumpulkan vektor yang serupa ke dalam 'senarai' atau 'kelompok'.

Anggaplah ia seperti menyusun buku mengikut genre sebelum mencari tajuk tertentu. Mula-mula, anda memilih genre yang betul, kemudian mencari dalam bahagian yang lebih kecil itu.

Cara IVFFlat Berfungsi: Dua Langkah

Apabila anda membuat pertanyaan pada indeks IVFFlat, proses dua langkah akan dijalankan:

  1. Cari senarai terdekat: Indeks mengenal pasti dengan pantas beberapa kelompok yang paling hampir dengan vektor pertanyaan anda.
  2. Cari dalam senarai: Indeks kemudian hanya mencari jiran terdekat dalam kelompok yang dipilih itu dan mengabaikan bahagian set data yang lain.

Ini mengurangkan bilangan perbandingan yang diperlukan dengan ketara, lalu mempercepatkan pertanyaan anda.

<p>Apabila mencipta indeks IVFFlat, parameter yang paling penting ialah <code>lists</code>. Parameter ini menentukan bilangan kelompok (atau pembahagian) data anda.</p><ul><li><b>Lebih banyak <code>lists</code>:</b> Setiap kelompok mempunyai lebih sedikit vektor. Ini boleh menghasilkan carian yang lebih pantas kerana kurang data perlu diimbas bagi setiap kelompok.</li><li><b>Lebih sedikit <code>lists</code>:</b> Setiap kelompok mempunyai lebih banyak vektor. Carian mungkin lebih perlahan, tetapi kebarangkalian untuk terlepas jiran terdekat sebenar adalah lebih rendah.</li></ul><p>Ini ialah pertukaran antara kelajuan carian dengan <b>recall</b> (jumlah jiran terdekat sebenar yang berjaya ditemui).</p>

Apabila mencipta indeks IVFFlat, parameter yang paling penting ialah lists. Parameter ini menentukan bilangan kelompok (atau partisi) yang akan membahagikan data anda.

  • Lebih banyak lists: Setiap kelompok mempunyai lebih sedikit vektor. Hal ini boleh menghasilkan carian yang lebih pantas (kurang data untuk diimbas bagi setiap kelompok).
  • Lebih sedikit lists: Setiap kelompok mempunyai lebih banyak vektor. Carian mungkin menjadi lebih perlahan, tetapi kebarangkalian untuk terlepas jiran terdekat sebenar adalah lebih rendah.

Ini ialah pertukaran antara kelajuan carian dengan dapatan semula (bilangan jiran terdekat sebenar yang berjaya ditemui).

Sediakan Jadual Vektor Anda

Sebelum mencipta indeks, anda memerlukan jadual dengan lajur vector. Jika belum berbuat demikian, pastikan sambungan vector telah didayakan.

Berikut ialah persediaan ringkas untuk jadual dengan vektor tiga dimensi:

CREATE EXTENSION IF NOT EXISTS vector;

CREATE TABLE items (
  id serial PRIMARY KEY,
  embedding vector(3)
);

INSERT INTO items (embedding) VALUES
('[1,2,3]'),
('[1.1,2.1,3.1]'),
('[4,5,6]'),
('[4.1,5.1,6.1]'),
('[7,8,9]'),
('[7.1,8.1,9.1]');

Mencipta Indeks IVFFlat

Sekarang, mari cipta indeks IVFFlat pada lajur embedding kita. Kita akan menentukan kelas operator vector_l2_ops untuk jarak L2 (jarak Euclidean), serta menetapkan parameter lists.

Titik permulaan yang baik untuk lists ialah rows / 1000 bagi sehingga 1 juta baris, atau sqrt(rows) untuk set data yang lebih besar.

CREATE INDEX ON items USING ivfflat (embedding vector_l2_ops) WITH (lists = 4);

Membuat Pertanyaan dengan Indeks

Setelah indeks IVFFlat dicipta, pertanyaan keserupaan standard anda akan memanfaatkannya secara automatik! pgvector akan menggunakan indeks tersebut untuk mencari jiran terdekat anggaran dengan lebih pantas.

Mari cari 3 item yang paling hampir dengan [1,2,3]:

SELECT id, embedding <-> '[1,2,3]' AS distance
FROM items
ORDER BY distance
LIMIT 3;

Parameter Pertanyaan `probes`

Semasa membuat pertanyaan, anda boleh melaraskan lagi carian dengan parameter ivfflat.probes. Tetapan ini mengawal jumlah 'senarai' (kelompok) terdekat yang benar-benar dicari.

  • Lebih banyak probes: Recall lebih baik, tetapi carian lebih perlahan.
  • Lebih sedikit probes: Carian lebih pantas, tetapi recall mungkin lebih rendah.

Nilai lalai probes ialah 1. Anda boleh menetapkannya untuk sesi anda:

SET ivfflat.probes = 2;

SELECT id, embedding <-> '[1,2,3]' AS distance
FROM items
ORDER BY distance
LIMIT 3;

Semakan Pengindeksan IVFFlat

Mari uji pemahaman anda tentang pengindeksan IVFFlat.

IVFFlat: Rumusan Utama

Tahniah! Anda telah mempelajari asas pengindeksan IVFFlat dalam pgvector.

  • IVFFlat mempercepatkan carian ANN dengan membahagikan data.
  • Parameter lists (semasa penciptaan indeks) mengawal bilangan kelompok.
  • Parameter ivfflat.probes (semasa pertanyaan) mengawal bilangan kelompok yang dicari.
  • Kedua-duanya melibatkan pertukaran antara kelajuan carian dengan recall.

Seterusnya, kita akan meneroka pengindeksan HNSW, satu lagi pilihan berkuasa untuk mendapatkan recall yang lebih tinggi.

Percuma untuk bermula

Pelajari Pangkalan Data Vektor: Pinecone, Weaviate & pgvector dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
12
Pelajaran
48

Soalan Lazim

Adakah pelajaran “Pengindeksan IVFFlat untuk Kelajuan” percuma?

Ya — sebanyak 3 pelajaran dalam laluan pembelajaran Pangkalan Data Vektor: Pinecone, Weaviate & pgvector, termasuk “Pengindeksan IVFFlat untuk Kelajuan”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus Pangkalan Data Vektor: Pinecone, Weaviate & pgvector merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “Pengindeksan IVFFlat untuk Kelajuan”?

Laksanakan indeks IVFFlat dalam pgvector untuk mempercepatkan carian jiran terdekat secara anggaran dan menghasilkan pertanyaan yang lebih pantas. Anda berlatih Pangkalan Data Vektor: Pinecone, Weaviate & pgvector menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan Pangkalan Data Vektor: Pinecone, Weaviate & pgvector?

Tiada pengalaman terdahulu diperlukan. Pembelajaran Pangkalan Data Vektor: Pinecone, Weaviate & pgvector di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 1 daripada 4.

Berapa lamakah pelajaran “Pengindeksan IVFFlat untuk Kelajuan” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran Pangkalan Data Vektor: Pinecone, Weaviate & pgvector ini?

Ya. Setiap pelajaran Pangkalan Data Vektor: Pinecone, Weaviate & pgvector menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Pengindeksan IVFFlat untuk Kelajuan
  2. Pengindeksan HNSW untuk Ingat Kembali
  3. Penalaan Prestasi Pertanyaan
  4. Pengoptimuman Carian Bertapis
← Kembali ke Pangkalan Data Vektor: Pinecone, Weaviate & pgvector