pgvector 0.8.6 en pymes: búsqueda, filtros y límite
Guía para decidir si la búsqueda semántica vive en PostgreSQL: vectores, HNSW, IVFFlat, permisos, costos y prueba de restauración.
Una columna vector puede guardar el rastro numérico de una ficha técnica y dejar la consulta dentro de PostgreSQL. pgvector 0.8.6 agrega búsqueda por similitud, índices HNSW/IVFFlat y filtros junto a los datos de negocio. Para una pyme con catálogos, tickets o expedientes, esta guía muestra dónde vive el dato, quién lo consulta y cómo probar costo, permisos y restauración.
Dónde aparece la búsqueda que devuelve demasiado
El problema aparece cuando el buscador por palabra exacta trae poco y el buscador semántico trae demasiado. Una persona escribe "buje para eje con juego" y el sistema devuelve manuales, reclamos, facturas y mensajes viejos mezclados. El antagonista es el índice sin permiso: ordena por cercanía, pero olvida quién puede leer cada documento. El repositorio pgvector/pgvector registraba 22.543 estrellas y 1.276 forks al momento de esta corrida. La lista oficial de tags muestra v0.8.6 como versión vigente. Su README define el proyecto como búsqueda vectorial de código abierto para PostgreSQL, con búsqueda exacta y aproximada, distancias L2, producto interno, coseno, L1, Hamming y Jaccard. El dato puente viene de Stack Overflow 2025: SQL aparece con 58,6% entre tecnologías usadas por quienes respondieron. Esa familiaridad ayuda a discutir una decisión concreta: usar PostgreSQL como base de búsqueda cuando los datos, permisos, copias y auditoría ya viven ahí.
Cómo funciona por dentro
El flujo arranca con documentos de negocio: fichas técnicas, artículos de ayuda, tickets cerrados, contratos, actas o expedientes. Un proceso toma cada texto, lo corta en fragmentos y genera embeddings con un modelo aprobado por la organización. pgvector no genera esos vectores; los recibe y permite ordenarlos por distancia dentro de PostgreSQL. 1. La aplicación carga documento, fragmento, origen, cliente, estado y permiso. 2. PostgreSQL guarda texto, metadatos, usuario, fechas y columna vector. 3. Un proceso externo genera el embedding y actualiza la fila. 4. La consulta convierte la pregunta en vector y aplica filtros de negocio. 5. pgvector ordena resultados por distancia y devuelve filas candidatas. 6. Row Level Security o filtros por rol impiden leer material ajeno. 7. El backup cubre tabla, metadatos y configuración; el índice se reconstruye si hace falta. El manual de CREATE EXTENSION explica que una extensión empaqueta objetos relacionados dentro de una base. En pgvector, ese paso crea el tipo vector y los operadores. El manual de índices recuerda que PostgreSQL usa índices para acelerar accesos por condiciones; pgvector suma HNSW e IVFFlat para vecinos cercanos.
Qué se instala o configura primero
La instalación mínima habilita la extensión, define una tabla de fragmentos y crea un índice acorde al volumen. El README marca límites útiles: vector hasta 2.000 dimensiones, halfvec hasta 4.000 y sparsevec hasta 1.000 valores no nulos. HNSW no requiere paso de entrenamiento y suele construir más lento; IVFFlat exige datos para entrenar y puede construir más rápido, con otra relación entre memoria y calidad. El primer entregable verificable son 300 fragmentos de muestra, diez preguntas reales y una matriz de permisos. Cada resultado debe mostrar texto, fuente, score, usuario permitido, filtro aplicado y enlace al documento original. La seguridad por filas sirve cuando la misma tabla contiene datos de varios clientes o áreas: sin política, una tabla con RLS activado queda en denegación por defecto. Con dólar oficial vendedor a ARS 1520, un piloto de 20 a 34 horas técnicas a USD 30/h queda entre USD 600 y USD 1.020, es decir entre ARS 912.000 y ARS 1.550.400. Una instancia de prueba con 8 a 16 GB de memoria puede moverse entre USD 45 y USD 120 mensuales, entre ARS 68.400 y ARS 182.400. Incluye modelo, carga de muestra, índice, permisos, tablero de consultas, backup y restauración. Quedan fuera licencias de modelos, limpieza histórica y revisión legal de documentos. UMSA puede aplicar este patrón cuando una pyme quiere probar búsqueda semántica sin separar datos operativos de permisos. La primera decisión técnica es escribir qué documentos entran y qué documentos quedan fuera; mezclar actas privadas con fichas públicas rompe la confianza antes que el índice.
Dónde se rompe y cómo probarlo
El primer riesgo es filtro posterior demasiado estrecho. pgvector puede encontrar vecinos y luego PostgreSQL aplica filtros; si hay pocos documentos permitidos para un cliente, la consulta devuelve poco o nada. La prueba usa tres clientes, una pregunta común y compara resultados con y sin filtro. El segundo riesgo es dimensión inconsistente. La señal aparece cuando un lote trae vectores de otra longitud y la carga falla. La prueba inserta un vector inválido y confirma rechazo antes de indexar. El tercer riesgo es backup incompleto. El manual de respaldo de PostgreSQL enumera volcado SQL, copia de archivos y archivado continuo. La prueba restaura base, permisos y tabla de fragmentos en otra instancia, ejecuta diez preguntas y reconstruye índices. La búsqueda útil muestra por qué devolvió una fila, quién puede leerla y cómo se recupera después de una caída. También muestra cuándo conviene detener la prueba: si diez preguntas reales no mejoran el trabajo diario, el índice queda como experimento documentado y no como gasto recurrente.
Para seguir leyendo
Para avanzar
Ver también
Continuá hacia capacidades técnicas, sectores o notas relacionadas.