Búsqueda vectorial con pgvector
Utilice la extensión pgvector para almacenar embeddings y realizar búsquedas aproximadas de vecinos más cercanos con ivfflat / HNSW.
Búsqueda vectorial con pgvector es una lección gratuita de SQL Academy en CoddyKit. Esta es la lección 4 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 SQL Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de SQL Academy incluye 4 lecciones en total.
¿Para qué sirven los vectores?
Los embeddings codifican el significado. Dos documentos sobre el mismo tema tienen vectores similares. La búsqueda vectorial permite realizar búsquedas semánticas, RAG (generación aumentada mediante recuperación) y recomendaciones.
Activar pgvector
La extensión está ampliamente disponible (RDS, Cloud SQL y Supabase la incorporan):
CREATE EXTENSION vector;Columna vectorial
Defina una columna con la dimensionalidad de su modelo de embeddings:
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.Insertar embeddings
Inserte el vector como un literal de matriz:
INSERT INTO docs (title, body, embedding)
VALUES ('SQL Course', 'Learn SQL', '[0.013, -0.024, ...]');Operadores de distancia
pgvector proporciona tres:
<->— distancia euclídea (L2)<#>— producto interno negativo<=>— distancia coseno (la más habitual para embeddings)
Búsqueda del vecino más cercano
Busque los documentos más cercanos a un vector de consulta:
SELECT id, title, 1 - (embedding <=> $1) AS similarity
FROM docs
ORDER BY embedding <=> $1
LIMIT 10;Índice IVFFlat
Para conjuntos de datos grandes, cree un índice aproximado de vecinos más cercanos (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;Índice HNSW (PG 16+)
En muchos casos ofrece una mejor recuperación y latencia que IVFFlat:
CREATE INDEX docs_embedding_hnsw
ON docs USING HNSW (embedding vector_cosine_ops);
SET hnsw.ef_search = 100;Búsqueda vectorial con filtros
Combine filtros vectoriales y estructurados:
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.Patrón RAG
Recupere N documentos relevantes mediante embeddings y páselos como contexto a un LLM:
-- 1. Embed user query
-- 2. SELECT top-N docs by cosine
-- 3. Send docs + query to LLM
-- 4. Return LLM's answer to userBúsqueda híbrida
Combine la búsqueda vectorial y la léxica (tsvector) para obtener los mejores resultados; ninguna de las dos por sí sola encuentra todo:
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;Elección de la dimensionalidad
Los embeddings más grandes son más precisos, pero requieren más almacenamiento y son más lentos. Muchas aplicaciones funcionan bien con modelos de 384–768 dimensiones. Elija un modelo y manténgalo.
Resumen
pgvector añade búsqueda vectorial de primera clase a Postgres.
- Tipo de columna vector(N)
- Índices IVFFlat / HNSW
- Distancia coseno mediante <=> para embeddings
- Combinación con FTS para obtener la mejor recuperación
Comprobación rápida
Busca por similitud semántica mediante embeddings de OpenAI. ¿Qué operador de distancia de pgvector suele utilizar?
Preguntas frecuentes
¿La lección «Búsqueda vectorial con pgvector» es gratis?
Sí — el texto completo de «Búsqueda vectorial con pgvector» 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 SQL Academy, actualiza a CoddyKit PRO. El curso de SQL Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Búsqueda vectorial con pgvector»?
Utilice la extensión pgvector para almacenar embeddings y realizar búsquedas aproximadas de vecinos más cercanos con ivfflat / HNSW. Practicas SQL Academy 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 SQL Academy?
No se requiere experiencia previa. SQL Academy 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 4 de 4.
¿Cuánto tiempo toma la lección «Búsqueda vectorial con pgvector»?
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 SQL Academy?
Sí. Cada lección de SQL Academy 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
- Búsqueda por trigramas (pg_trgm) para coincidencias aproximadas
- Búsqueda de texto completo con tsvector y GIN
- Indexación geoespacial con PostGIS
- Búsqueda vectorial con pgvector