Vector Databases: Pinecone, Weaviate & pgvector · Lección

Indexación IVFFlat para acelerar las búsquedas

Implemente índices IVFFlat en pgvector para acelerar las búsquedas aproximadas de vecinos más cercanos y agilizar las consultas.

Lección 1 de 411 pasos

Indexación IVFFlat para acelerar las búsquedas es una lección gratuita de Vector Databases: Pinecone, Weaviate & pgvector en CoddyKit. Esta es la lección 1 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Vector Databases: Pinecone, Weaviate & pgvector, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Vector Databases: Pinecone, Weaviate & pgvector incluye 4 lecciones en total.

Partes de esta lección aún no han sido traducidas y se muestran en inglés.

Faster Searches with IVFFlat

Welcome to optimizing pgvector performance! For small datasets, a simple vector similarity query might be fast enough. But as your data grows, brute-force search becomes too slow.

This lesson introduces IVFFlat indexing, a powerful technique to accelerate Approximate Nearest Neighbor (ANN) searches in pgvector.

Why Vector Indexes are Key

Imagine searching for the closest person to you in a massive crowd. Without any organization, you'd have to check every single person.

Similarly, without an index, pgvector has to compare your query vector to every single vector in your table. This is called a brute-force search, and it's inefficient for large datasets.

  • Indexes organize data.
  • They make lookups much faster.
  • Crucial for scalable vector search.

IVFFlat: The Core Idea

IVFFlat (Inverted File Index with Flat quantizer) is an ANN indexing algorithm. Its core idea is to group similar vectors into 'lists' or 'clusters'.

Think of it like sorting books by genre before looking for a specific title. You first pick the right genre, then search within that smaller section.

How IVFFlat Works: Two Steps

When you query an IVFFlat index, it performs a two-step process:

  1. Find nearest lists: It quickly identifies a few (or more) clusters that are closest to your query vector.
  2. Search within lists: It then only searches for nearest neighbors within those selected clusters, ignoring the rest of the dataset.

This significantly reduces the number of comparisons needed, speeding up your queries.

The `lists` Parameter Explained

When creating an IVFFlat index, the most important parameter is lists. This defines how many clusters (or partitions) your data will be divided into.

  • More lists: Each cluster has fewer vectors. This can lead to faster searches (less data to scan per cluster).
  • Fewer lists: Each cluster has more vectors. Searches might be slower, but you're less likely to miss true nearest neighbors.

It's a trade-off between search speed and recall (how many of the true nearest neighbors you actually find).

Prepare Your Vector Table

Before creating an index, you need a table with a vector column. If you haven't already, ensure the vector extension is enabled.

Here's a quick setup for a table with 3-dimensional vectors:

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]');

Creating an IVFFlat Index

Now, let's create an IVFFlat index on our embedding column. We'll specify the vector_l2_ops operator class for L2 distance (Euclidean distance), and set the lists parameter.

A good starting point for lists is rows / 1000 for up to 1M rows, or sqrt(rows) for larger datasets.

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

Querying with the Index

Once the IVFFlat index is created, your standard similarity queries will automatically benefit from it! pgvector will use the index to find approximate nearest neighbors much faster.

Let's find the 3 closest items to [1,2,3]:

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

The `probes` Query Parameter

At query time, you can further tune the search with the ivfflat.probes parameter. This setting controls how many of the nearest 'lists' (clusters) are actually searched.

  • More probes: Better recall, but slower search.
  • Fewer probes: Faster search, but potentially lower recall.

The default probes value is 1. You can set it for your session:

SET ivfflat.probes = 2;

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

IVFFlat Indexing Check

Let's test your understanding of IVFFlat indexing.

IVFFlat: Key Takeaways

Great job! You've learned the fundamentals of IVFFlat indexing in pgvector.

  • IVFFlat speeds up ANN searches by partitioning data.
  • The lists parameter (index creation) controls the number of clusters.
  • The ivfflat.probes parameter (query time) controls how many clusters are searched.
  • Both involve a trade-off between search speed and recall.

Next, we'll explore HNSW indexing, another powerful option for even higher recall.

Gratis para empezar

Aprende Vector Databases: Pinecone, Weaviate & pgvector con un tutor de IA — gratis

Escribe y ejecuta código real en tu navegador, obtén ayuda instantánea de un tutor de IA disponible 24/7 y continúa donde lo dejaste en la web o en la aplicación.

Cursos
12
Lecciones
48

Preguntas frecuentes

¿La lección «Indexación IVFFlat para acelerar las búsquedas» es gratis?

Sí — el texto completo de «Indexación IVFFlat para acelerar las búsquedas» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Vector Databases: Pinecone, Weaviate & pgvector, actualiza a CoddyKit PRO. El curso de Vector Databases: Pinecone, Weaviate & pgvector incluye 4 lecciones en total.

¿Qué aprenderé en «Indexación IVFFlat para acelerar las búsquedas»?

Implemente índices IVFFlat en pgvector para acelerar las búsquedas aproximadas de vecinos más cercanos y agilizar las consultas. Practicas Vector Databases: Pinecone, Weaviate & pgvector con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Vector Databases: Pinecone, Weaviate & pgvector?

No se requiere experiencia previa. Vector Databases: Pinecone, Weaviate & pgvector en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 4.

¿Cuánto tiempo toma la lección «Indexación IVFFlat para acelerar las búsquedas»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Vector Databases: Pinecone, Weaviate & pgvector?

Sí. Cada lección de Vector Databases: Pinecone, Weaviate & pgvector incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Indexación IVFFlat para acelerar las búsquedas
  2. Indexación HNSW para mejorar la exhaustividad
  3. Optimización del rendimiento de consultas
  4. Optimización de búsquedas filtradas
← Volver a Vector Databases: Pinecone, Weaviate & pgvector