Ir al contenido principal

¿Qué es pgvector?

Una extensión de PostgreSQL para almacenar y buscar embeddings vectoriales de forma nativa dentro de su base de datos existente.

4 Personas AI Agents 6

Summary

  • pgvector es una extensión de PostgreSQL que permite el almacenamiento de vectores y la búsqueda de similitud directamente dentro de Postgres, eliminando la necesidad de una base de datos vectorial separada para la mayoría de los casos de uso de IA como la búsqueda semántica, RAG y las recomendaciones.
  • Admite múltiples métricas de distancia, dos tipos de índices (HNSW e IVFFlat), búsqueda filtrada y búsqueda híbrida, todo de forma nativa dentro de SQL, lo que lo hace operacionalmente simple para los equipos que ya usan Postgres.
  • pgvector maneja bien millones de vectores, pero el rendimiento se degrada a escalas muy altas; pgvectorscale y bases de datos vectoriales dedicadas como Pinecone o Weaviate son los siguientes pasos naturales a medida que crecen las cargas de trabajo.

pgvector es una extensión de código abierto de PostgreSQL que añade la capacidad de almacenar, indexar y buscar embeddings vectoriales (representaciones numéricas de datos). Integra datos vectoriales y búsqueda de similitud en el mismo sistema que contiene los datos de la aplicación, lo que permite potenciar la búsqueda semántica, las recomendaciones y la generación aumentada por recuperación (RAG) sin depender de una base de datos vectorial externa. pgvector amplía Postgres para soportar estos casos de uso impulsados por IA.

Muchas aplicaciones modernas de IA dependen de la recuperación de datos semánticamente similares, no solo de coincidencias exactas. pgvector permite a los equipos realizar este tipo de recuperación en tiempo de ejecución dentro de su pila de Postgres existente. Por ejemplo, las aplicaciones a menudo necesitan recuperar contenido que sea contextualmente similar a una consulta, incluso si la redacción es diferente. Este enfoque a menudo se denomina similitud del coseno, búsqueda del vecino más cercano o búsqueda basada en embeddings.

Este artículo proporciona una visión general educativa de alto nivel de pgvector en lugar de una guía de implementación detallada.

Cómo funciona pgvector

pgvector añade un nuevo tipo de dato a Postgres llamado vector. Permite almacenar embeddings, representaciones numéricas de texto, imágenes u otro contenido junto con datos relacionales sin necesidad de un sistema separado. Estos embeddings suelen ser generados por modelos de machine learning que convierten contenido como texto o imágenes en formato numérico.

A un alto nivel, el proceso es sencillo. Los embeddings se almacenan en la base de datos. Cuando se recibe una consulta, se genera un embedding de consulta a partir de la entrada, y pgvector devuelve los registros cuyos vectores son más similares, o más cercanos en significado, a esa consulta. En lugar de coincidir con palabras clave, los resultados se recuperan basándose en el significado.

pgvector determina la similitud utilizando métricas de distancia:

  • L2 (distancia euclidiana): mide la distancia entre vectores, donde valores más pequeños indican mayor similitud
  • Similitud del coseno: mide cuán cerca apuntan los vectores en la misma dirección, lo que a menudo refleja similitud en el significado
  • Producto interno: mide la alineación entre vectores y a menudo se utiliza con embeddings normalizados

Características clave de pgvector

pgvector incluye varias características que hacen que la búsqueda vectorial sea práctica dentro de Postgres.

  • Indexación: Se admiten dos tipos de índices: HNSW y IVFFlat. HNSW prioriza la velocidad de consulta y construye una estructura de grafo en memoria, pero requiere más memoria. IVFFlat es más eficiente en memoria y particiona los vectores en clústeres utilizando un paso de entrenamiento, pero las consultas pueden ser más lentas.
  • Métricas de distancia: L2, similitud del coseno y producto interno cubren la mayoría de los casos de uso basados en embeddings. La distancia de Hamming soporta vectores binarios, y la distancia de Jaccard soporta vectores dispersos en escenarios más especializados.
  • Búsqueda filtrada: La similitud vectorial se puede combinar con filtros relacionales estándar. Por ejemplo, los resultados pueden incluir los productos semánticamente más similares que también estén en stock, dentro de un rango de precios o en una categoría específica.
  • Búsqueda híbrida: pgvector se puede emparejar con la búsqueda de texto completo de Postgres para combinar la búsqueda por palabras clave y la semántica. Esto permite que los resultados sean contextualmente relevantes y textualmente precisos en una sola consulta.
  • Tipos de datos adicionales: Opciones como los tipos halfvec, sparsevec y bit ayudan a reducir el uso de memoria al trabajar con grandes conjuntos de datos de embeddings.

Casos de uso comunes para pgvector

pgvector se utiliza ampliamente para potenciar características de aplicaciones impulsadas por IA:

Búsqueda semántica y RAG

Las aplicaciones pueden recuperar documentos o contenido basándose en el significado en lugar de palabras clave. Este es un componente central de la generación aumentada por recuperación (RAG), donde los modelos de lenguaje grandes utilizan el contexto recuperado para generar respuestas precisas y relevantes. Dado que pgvector ejecuta la búsqueda de similitud directamente dentro de Postgres, esta recuperación puede ocurrir en tiempo real sin necesidad de un sistema separado.

Sistemas de recomendación

Los artículos se pueden emparejar con el comportamiento o las preferencias pasadas para soportar recomendaciones. Este patrón se utiliza comúnmente para recomendaciones de productos, descubrimiento de contenido y personalización en aplicaciones. pgvector hace que sea eficiente identificar artículos relacionados basándose en patrones en el comportamiento del usuario o en el contenido.

Similitud de imágenes

Los embeddings de imágenes se pueden almacenar y comparar para encontrar rápidamente imágenes visualmente similares. Esto se utiliza ampliamente en plataformas de medios, comercio electrónico y herramientas creativas. Almacenar estos embeddings junto con los datos de la aplicación facilita la ejecución de búsquedas de similitud sin infraestructura adicional.

Detección de anomalías

Se pueden identificar valores atípicos encontrando puntos de datos que están distantes de los patrones típicos en el espacio vectorial. Esto es útil para la detección de fraudes, la monitorización y el control de calidad. pgvector lo permite al facilitar la comparación de vectores y la detección de desviaciones.

Deduplicación

Se puede identificar contenido duplicado o casi duplicado, incluso cuando se expresa de manera diferente o se formatea de distintas maneras. Esto es importante para la gestión de contenido, la calidad de la búsqueda y la higiene de los datos. La comparación basada en similitud hace posible detectar duplicados más allá de las coincidencias exactas.

pgvector frente a bases de datos vectoriales dedicadas: cuándo usar cada una

A medida que la búsqueda vectorial se integra en más aplicaciones, los equipos a menudo se enfrentan a una decisión práctica: ¿debería la búsqueda vectorial permanecer dentro de Postgres, o se necesita una base de datos vectorial dedicada? La respuesta depende de la escala, los requisitos de rendimiento y la complejidad operativa.

Las diferencias se pueden resumir en dimensiones clave:

Herramienta

Complejidad Operativa

Límite de Escalabilidad

Soporte de Consultas Híbridas

Costo

Madurez del Ecosistema

pgvector

Más bajo (DB Existente)

Alto (~100M+ vectores)

Mejor (Uniones SQL Nativas)

Más bajo (Incluido)

Alto (Ecosistema Postgres)

Pinecone

Bajo (Serverless/SaaS)

Más alto (Miles de millones+)

Moderado (Solo metadatos)

Alto (Basado en uso)

Alto (Específico de IA)

Weaviate

Moderado (Multimodal)

Muy Alto

Alto (GraphQL/Vector)

Moderado

Alto (Código abierto)

Qdrant

Moderado (Basado en Rust)

Muy Alto

Alto (Intensivo en filtrado)

Moderado

Creciendo Rápido

pgvector es el punto de partida natural para los equipos que ya utilizan Postgres y operan por debajo del límite de escala. Funciona bien cuando la búsqueda vectorial es parte de un flujo de trabajo de aplicación existente y los volúmenes de datos o las demandas de consulta se mantienen manejables. Las bases de datos vectoriales dedicadas se vuelven más relevantes cuando el volumen de consultas, los requisitos de recuperación o las cargas de trabajo multi-inquilino superan lo que Postgres puede soportar de manera eficiente.

pgvectorscale

pgvectorscale está diseñado para equipos que desean ampliar hasta dónde pueden llegar con pgvector antes de adoptar una base de datos vectorial dedicada. Aborda los desafíos de rendimiento y escalabilidad que surgen a medida que aumentan los volúmenes de datos y las demandas de consulta, particularmente en torno a la velocidad de indexación y la latencia de las consultas. Al mejorar el rendimiento de pgvector a escalas mayores, permite a los equipos seguir utilizando Postgres durante más tiempo sin reestructurar sus sistemas. Esto lo convierte en un paso intermedio práctico para las aplicaciones que se acercan a los límites de lo que pgvector puede manejar por sí solo.

Informe

La guía de IA agéntica para la empresa

Limitaciones y consideraciones de escalado

pgvector es potente, pero tiene sus contrapartidas:

  • El rendimiento puede degradarse con recuentos de vectores muy altos (más de 10 millones) sin optimización o herramientas adicionales
    • Los índices HNSW consumen mucha memoria, y las implementaciones grandes pueden requerir una cantidad significativa de RAM
    • Postgres no proporciona fragmentación integrada para cargas de trabajo vectoriales, por lo que el escalado horizontal requiere herramientas externas o un proveedor administrado
    • La velocidad de búsqueda y la recuperación implican una compensación real. La recuperación —el porcentaje de resultados verdaderamente relevantes que se devuelven— requiere una configuración deliberada para optimizarla.

Comprender estas limitaciones ayuda a determinar cuándo pgvector es suficiente y cuándo puede ser necesaria infraestructura adicional.

Primeros pasos con pgvector

pgvector se puede instalar en macOS y la mayoría de las distribuciones de Linux utilizando gestores de paquetes estándar como Homebrew. También está disponible en muchas plataformas Postgres administradas, incluidas AWS RDS, Supabase, Azure Database for PostgreSQL, Google Cloud SQL y Neon.

Las instrucciones de instalación y configuración están disponibles en el repositorio oficial de GitHub de pgvector, que incluye una guía paso a paso mantenida por los autores del proyecto.

Los clientes de Databricks que usan Postgres también pueden consultar la documentación de extensiones OLTP de Databricks para obtener orientación específica de la plataforma.

pgvector y el stack de IA moderno

pgvector opera en la capa de servicio operacional de un sistema de IA, donde se requiere baja latencia de recuperación en tiempo de ejecución de la aplicación. Se usa comúnmente para admitir búsqueda semántica, recomendaciones y generación aumentada por recuperación (RAG) dentro de las aplicaciones.

En contraste, Databricks Mosaic AI Vector Search es más adecuado para cargas de trabajo de IA a gran escala procesadas por lotes, donde las canalizaciones de datos se administran en el lakehouse. Estos entornos admiten el procesamiento de datos centralizado, grandes conjuntos de datos y flujos de trabajo complejos.

Estos enfoques son complementarios, y los equipos a menudo usan ambos en diferentes capas del stack. pgvector admite consultas de aplicaciones en tiempo real, mientras que plataformas como Databricks manejan la preparación de datos a gran escala, la generación de incrustaciones y los flujos de trabajo dirigidos por modelos.

Preguntas frecuentes

¿Es pgvector una base de datos vectorial completa?
pgvector permite a Postgres almacenar incrustaciones y realizar búsquedas de similitud directamente sobre esos datos. Sin embargo, no es una base de datos vectorial diseñada específicamente para ese fin. Las bases de datos vectoriales dedicadas proporcionan escalabilidad y optimizaciones de rendimiento adicionales para cargas de trabajo más grandes.

¿Cuál es la diferencia entre HNSW e IVFFlat en pgvector?
HNSW está optimizado para un rendimiento de consulta rápido y utiliza una estructura de grafo en memoria, que requiere más memoria. IVFFlat tiene una menor huella de memoria y organiza los vectores en clústeres a través de un paso de entrenamiento, pero el rendimiento puede variar según el conjunto de datos y la carga de trabajo. La elección depende de si la prioridad es la velocidad o la eficiencia de la memoria.

¿Cuántos vectores puede manejar pgvector?
pgvector puede manejar típicamente desde millones hasta decenas de millones de vectores, dependiendo del hardware, la estrategia de indexación y los patrones de consulta. A medida que los conjuntos de datos crecen, el rendimiento puede disminuir sin una sintonización cuidadosa o herramientas adicionales. Factores como la memoria disponible, el tipo de índice y la frecuencia de consulta influyen en la escalabilidad.

¿pgvector admite la similitud coseno?
Sí, pgvector admite la similitud coseno como una de sus métricas de distancia principales. Mide cuán cerca apuntan dos vectores en la misma dirección, lo que a menudo refleja la similitud semántica en aplicaciones basadas en incrustaciones. Esto lo hace muy adecuado para la búsqueda semántica, los sistemas de recomendación y el procesamiento del lenguaje natural.

¿Es pgvector gratuito y de código abierto?
Sí, pgvector es un proyecto de código abierto lanzado bajo una licencia permisiva. Se puede usar con instalaciones Postgres estándar, así como con muchos servicios Postgres administrados. Esto lo convierte en un punto de partida accesible para agregar capacidades de búsqueda vectorial.

¿Puede pgvector realizar búsqueda híbrida?
Sí, pgvector se puede combinar con la búsqueda de texto completo de Postgres para admitir la búsqueda híbrida. Esto permite que los resultados equilibren la relevancia semántica con la coincidencia de palabras clave, mejorando tanto la precisión como la usabilidad. La búsqueda híbrida es especialmente útil en escenarios como la búsqueda de productos y la búsqueda de documentación, donde tanto el significado como los términos exactos son importantes.

Elegir el enfoque de búsqueda vectorial correcto

pgvector es un punto de partida práctico para cualquier equipo que desee agregar búsqueda vectorial a una aplicación Postgres existente. Al almacenar incrustaciones junto con datos relacionales y admitir la búsqueda de similitud de forma nativa dentro de la base de datos, elimina la sobrecarga operativa de administrar un almacén vectorial separado. Para muchas cargas de trabajo —búsqueda semántica, canalizaciones RAG, recomendaciones y detección de anomalías— proporciona lo que los equipos necesitan sin requerir un nuevo sistema.

A medida que los volúmenes de datos crecen o aumentan las demandas de consulta, pgvectorscale puede extender hasta dónde pueden llegar los equipos antes de que sea necesaria una base de datos vectorial dedicada. Para las organizaciones que administran cargas de trabajo de IA a gran escala en una plataforma de datos unificada, Databricks Mosaic AI Vector Search ofrece un enfoque complementario diseñado para la capa del lakehouse. Juntas, estas herramientas brindan a los equipos la flexibilidad de adaptar su infraestructura de búsqueda vectorial a sus requisitos de carga de trabajo reales, a cualquier escala.

(Esta entrada del blog ha sido traducida utilizando herramientas basadas en inteligencia artificial) Publicación original

Never miss a Databricks post

Subscribe to our blog and get the latest posts delivered to your inbox