PostgreSQL 15.6 + pgvector (Alpine)
357
Imagen Docker personalizada basada en postgres:15.6-alpine3.19 que incluye la extensión pgvector compilada (pgvector v0.5.1).
Esta imagen facilita ejecutar PostgreSQL con soporte para vectores (embeddings) mediante la extensión pgvector, ideal para búsquedas semánticas y sistemas RAG.
postgres:15.6-alpine3.19.pgvector compilada desde fuente (v0.5.1).pgvector se realiza en una etapa builder y solo se copian los artefactos necesarios a la imagen final.(Ajusta la etiqueta que publiques en Docker Hub según la convención que uses, por ejemplo usuario/pg15-vector:15.6-alpine.)
Desde el directorio donde está el Dockerfile:
docker build -t pg15vector-alpine .
Ejecutar con variables de entorno estándar de Postgres y un volumen para persistencia:
docker run -d \
--name pg15-vector \
-e POSTGRES_PASSWORD=mi_contraseña \
-e POSTGRES_USER=mi_usuario \
-e POSTGRES_DB=mi_bd \
-v pgdata:/var/lib/postgresql/data \
-p 5432:5432 \
pg15vector-alpine
version: '3.8'
services:
db:
image: pg15vector-alpine
environment:
POSTGRES_USER: mi_usuario
POSTGRES_PASSWORD: mi_contraseña
POSTGRES_DB: mi_bd
volumes:
- pgdata:/var/lib/postgresql/data
ports:
- "5432:5432"
volumes:
pgdata:
pgvectorConéctate a la base de datos (psql, pgAdmin, DBeaver, etc.) y ejecuta:
CREATE EXTENSION IF NOT EXISTS vector;
Ejemplo básico de uso — crea una tabla con un campo vectorial (aquí usamos dimensión 1536 como ejemplo):
CREATE TABLE items (
id SERIAL PRIMARY KEY,
embedding VECTOR(1536),
metadata JSONB
);
INSERT INTO items (embedding, metadata) VALUES
('[0.01, 0.02, 0.03, ...]'::vector, '{"name": "ejemplo"}');
Búsqueda por similitud (distancia L2 o coseno según la configuración):
SELECT id, metadata, embedding <-> '[0.01, 0.02, ...]'::vector AS distance
FROM items
ORDER BY distance
LIMIT 5;
Crear índice (ejemplo con ivfflat):
CREATE INDEX ON items USING ivfflat (embedding vector_l2_ops) WITH (lists = 100);
-- Después de crear el índice, ejecutar ANALYZE para que planners use el índice correctamente
ANALYZE items;
Ajusta la dimensión del vector a la que produce tu modelo de embeddings (por ejemplo 1536 para OpenAI ada/embeddings, o 768/1024 según el modelo).
pgvector en una etapa builder para mantener la imagen final ligera.pgvector y actualiza la rama/tag si necesitas funciones nuevas.La imagen incluye PostgreSQL y la extensión pgvector. Revisa las licencias upstream de cada proyecto si lo vas a redistribuir con propósitos comerciales.
Content type
Image
Digest
sha256:4179adb7d…
Size
90.5 MB
Last updated
10 months ago
docker pull blacknoob20/pg15vector-alpine