Mejores prácticas de pgvector
Cómo usar esta lista
- Completa antes del lanzamiento de RAG en producción.
- Vuelve a ejecutar cuando el modelo de incrustación, la versión de pgvector o el tamaño del corpus cambien en un factor de 10x.
- Empareja con la lista de verificación de búsqueda híbrida si FTS está habilitado.
A - Extensión y Tipos
- Fija la versión de pgvector en IaC.
CREATE EXTENSION vector VERSION '0.8.0'coincide con el paquete del sistema operativo. - Califica el esquema de
extensions.vector. Evita sorpresas consearch_pathen conexiones agrupadas. - Fija la dimensión en DDL.
vector(1536)másCHECK (vector_dims(embedding) = 1536). - Almacena el modelo de incrustación y la versión en metadatos. Las campañas de reincrustación necesitan filtros deterministas.
- Haz coincidir el operador de distancia con la clase de operación del índice.
<=>convector_cosine_opspara incrustaciones de texto normalizadas.
B - Índices y Recuperación
- Evalúa la recuperación@k en tu corpus. No confíes en los valores predeterminados de
ef_searchoivfflat.probes. - Crea HNSW después de la carga masiva, no en tablas vacías. IVFFlat especialmente necesita datos representativos.
- Usa
CREATE INDEX CONCURRENTLYen producción. Programa las compilaciones que consumen mucha RAM fuera de las horas pico. - REINDEX después de una reincrustación importante o una actualización de pgvector. Las notas de la versión marcan las reconstrucciones obligatorias.
- Mantén consultas de referencia de fuerza bruta. 50-200 preguntas etiquetadas para pruebas de regresión.
C - Esquema y Tenencia
- Separa las tablas de documentos y fragmentos. Las citas y la ingesta idempotente necesitan IDs de origen estables.
- Habilita RLS en
tenant_idpara SaaS. Establece la variable de sesión por solicitud en el agrupador. - Índice parcial
WHERE embedding IS NOT NULL. Los trabajos de incrustación pendientes no deben inflar el índice ANN. - Agrega una columna generada FTS para búsqueda híbrida. La misma fila de fragmento potencia la búsqueda por palabras clave y semántica.
- Calcula el hash del contenido de origen a nivel de documento. Omite la refragmentación cuando
content_hashno cambie.
D - Operaciones
- Monitoriza el tamaño del índice y
idx_scan. Cero escaneos significa una clase de operación incorrecta o que el planificador recurre a un escaneo secuencial. - Ajusta
hnsw.ef_searchpor entorno. Staging puede usar una recuperación más alta que la producción en horas pico. - Vigila
autovacuumen tablas de fragmentos con mucha rotación. La reincrustación actualiza rápidamente las tuplas muertas. - Dimensiona la RAM antes de la compilación HNSW. Aumenta
maintenance_work_memde la sesión solo para el rol de migración. - Documenta cuándo fragmentar o descargar. Criterios ADR antes de que la fantasía de mil millones de vectores se convierta en un mandato.
Preguntas frecuentes
¿Elección de índice predeterminada?
HNSW para la mayoría de las tiendas RAG de PG 18; IVFFlat si la RAM está severamente limitada después de la evaluación comparativa.¿Coseno vs L2?
Incrustaciones de texto normalizadas: coseno. Vectores de características crudos: a menudo L2.¿Cuántos vecinos en RAG?
Recupera 8-20; reordena en la aplicación a 3-5 para el contexto de LLM.¿Incrustaciones nulas?
Columna de estado pendiente/fallida; los trabajadores reclaman con SKIP LOCKED.¿Postgres administrado?
Verifica la disponibilidad de la extensión y el `maintenance_work_mem` máximo en la clase de instancia.¿Hinchazón de copias de seguridad?
Los vectores inflan las copias de seguridad físicas; usa alertas de tamaño en la tabla de fragmentos.¿Replicación lógica?
Haz coincidir la versión de la extensión en el suscriptor; planifica la reconstrucción del índice.¿Halfvec?
Evalúa el impacto en la recuperación antes de la adopción a nivel de flota.¿Seguridad?
RLS más no SELECT público en la tabla de fragmentos; las incrustaciones pueden filtrar contenido semántico.¿Cadencia de evaluación?
Recuperación trimestral@k y latencia p95 en un clon de staging con tamaño de producción.Relacionado
- Conceptos básicos de pgvector - tipos y operadores
- Índices IVFFlat vs HNSW - compensaciones
- pgvector a escala - memoria y vacuum
- Esquema de almacenamiento RAG - diseño de tablas
- Mejores prácticas de extensiones - fijaciones de versión
Versiones de pila: Esta página fue escrita para PostgreSQL 18.4 (estable 18, mantenimiento 17), pgvector 0.8+, PostGIS 3.5+, pgbouncer 1.x y Patroni 3.x.