pgvector es una extensión de PostgreSQL (también llamado Postgres) que simplifica el trabajo con vectores, ya que permite almacenarlos, buscarlos e indexarlos directamente en tu base de datos relacional.
Con pgvector, añadir funciones avanzadas como la búsqueda por similitud a tus aplicaciones y agentes de IA puede ser sencillo y escalable, sin tener que mover datos ni cambiar las arquitecturas de las aplicaciones para conectar el nuevo tipo de datos vectoriales.
pgvector es una extensión de código abierto para PostgreSQL que te ayuda a almacenar, indexar y buscar vectores de alta dimensión directamente en tu base de datos de PostgreSQL. pgvector es conocido por admitir lo siguiente:
Un vector representa datos numéricamente de forma que se capturan sus características clave, asignándolos a un espacio matemático virtual. En este espacio, los elementos similares, como palabras, imágenes u objetos, se colocan cerca unos de otros.
Por ejemplo, las palabras "abrigo" y "chaqueta". Las búsquedas tradicionales basadas en palabras clave no las conectarían como similares, ya que sus letras son bastante diferentes. Un sistema de comercio electrónico que quiera unir estas palabras clave tendría que hacerlo manualmente. Sin embargo, las representaciones vectoriales de estas dos palabras serían muy similares porque tienen significados parecidos, lo que permite ofrecer resultados de búsqueda más precisos a los usuarios y ahorrar tiempo a los desarrolladores.
De forma similar, si haces dos fotos distintas de gatos, píxel a píxel pueden ser muy diferentes. Sin embargo, sus embeddings de vectores los colocarían muy cerca en el espacio matemático, al igual que un humano identificaría fácilmente ambas imágenes como imágenes de gatos:

Para que esto funcione, un modelo de incrustaciones transforma los datos en bruto (como imágenes o texto) en incrustaciones de vectores. pgvector almacena estas incrustaciones en tu base de datos. Cuando un usuario envía una consulta, esa entrada también se convierte en un vector. A continuación, pgvector calcula la distancia entre el vector de consulta y los vectores almacenados para identificar de forma eficiente los "vecinos más cercanos" con las puntuaciones de similitud más altas.
¿Quieres saber más sobre los distintos tipos de búsquedas de vecinos más próximos? Consulta nuestra guía sobre el desarrollo de aplicaciones con IA generativa.
PostgreSQL es un sistema de gestión de bases de datos relacionales de código abierto y robusto, diseñado para gestionar datos estructurados mediante tablas, filas y columnas.
pgvector es una extensión que se ejecuta en PostgreSQL. Añade "vector", un nuevo tipo de datos, a la base de datos, lo que permite almacenar y procesar inserciones de vectores junto con los datos operativos estándar.
No, pgvector es una extensión que se integra directamente en tu base de datos PostgreSQL. Esto te permite añadir funciones avanzadas de IA y búsqueda sin tener que gestionar infraestructuras nuevas o independientes.
Para implementar las funciones basadas en IA actuales, necesitas poder almacenar y gestionar las incrustaciones de vectores.
PostgreSQL puede ser una herramienta muy potente por sí sola, pero, como sus datos están estructurados de forma rígida en tablas, filas y columnas, su capacidad de consulta se limita en gran medida a la búsqueda de palabras clave y patrones.
En el mundo de la IA, los datos complejos, como el texto, las imágenes y el audio, se codifican como representaciones vectoriales. Estas codificaciones permiten a los modelos de IA comprender el contexto y las relaciones semánticas de tus datos, lo que constituye la base de funciones como la búsqueda inteligente, las recomendaciones y la IA generativa.
La extensión pgvector lleva la búsqueda semántica a PostgreSQL, usando embeddings de vectores para encontrar resultados basados en el significado de una consulta, en lugar de limitarse a buscar coincidencias de palabras clave como haría SQL. Este proceso, conocido como búsqueda por similitud, facilita la incorporación de funciones de búsqueda avanzada directamente en tus aplicaciones sin necesidad de rediseñar la arquitectura ni de mover los datos a una base de datos de vectores independiente.
¿Quieres saber más sobre las incrustaciones de vectores? Consulta nuestra guía sobre el desarrollo de aplicaciones con IA generativa.
Gracias a su capacidad para gestionar vectores de alta dimensión, pgvector es compatible con una amplia gama de aplicaciones avanzadas.
La coincidencia de palabras clave en las bases de datos relacionales tradicionales suele fallar a la hora de identificar conexiones significativas en los datos. La búsqueda por similitud compara la proximidad de los vectores mediante métricas como la distancia euclídea y la distancia del coseno para encontrar patrones más profundos, lo cual es fundamental para aplicaciones como el reconocimiento de imágenes y la búsqueda semántica, donde los resultados se clasifican por significado. En el comercio electrónico, por ejemplo, la búsqueda por similitud permite hacer recomendaciones de productos analizando el comportamiento de los usuarios y encontrando artículos relacionados.
El procesamiento del lenguaje natural basado en vectores permite a los agentes de IA entender el contexto, lo que da lugar a conversaciones más personalizadas y respuestas más precisas. La compatibilidad con varios idiomas mejora su rendimiento como asistentes virtuales y plataformas de servicio de atención al cliente.
pgvector mejora los flujos de trabajo de IA al permitir el almacenamiento y las consultas de inserciones de vectores, que son esenciales para identificar patrones inusuales en los datos. Al analizar la proximidad de los vectores, ayuda a detectar anomalías en tiempo real para prevenir el fraude, proteger la red o controlar la calidad.
El análisis de sentimiento analiza la intención de un mensaje, lo que te permite dirigir los comentarios negativos de forma adecuada para que se actúe más rápido y se creen soluciones personalizadas.
Al aprovechar la escalabilidad, la compatibilidad con transacciones y la gran fiabilidad de PostgreSQL, pgvector gestiona de forma eficiente conjuntos de datos de alta dimensión. Además, su uso de la sintaxis SQL habitual hace que sea accesible para los equipos que ya existen, lo que elimina la necesidad de herramientas o infraestructuras adicionales dedicadas a la indexación y la búsqueda de vectores.
Se integra fácilmente en las aplicaciones basadas en PostgreSQL que ya tengas.
Mejora la escalabilidad de PostgreSQL para conjuntos de datos cada vez más grandes.
Ofrece funciones personalizables, como métricas de distancia e indexación.
Hereda la seguridad y la fiabilidad de confianza de PostgreSQL.
Te permite consultar datos estructurados y sin estructurar de forma fluida.
Proporciona una solución sencilla para desarrolladores que permite trabajar con datos de gran escala y alta dimensionalidad.
Si buscas una base de datos única que destaque tanto en las consultas SQL tradicionales como en las búsquedas modernas de vértices, te recomendamos AlloyDB para PostgreSQL. AlloyDB usa el algoritmo de búsqueda de similitud de vectores ScaNN (Scalable Nearest Neighbor) desarrollado por Google, que ofrece un rendimiento significativamente superior al de otros servicios de PostgreSQL basados en la nube para cargas de trabajo transaccionales y analíticas en bases de datos de gran tamaño.
Descubre cómo realiza AlloyDB búsquedas simultáneas en datos estructurados y no estructurados.
Cloud SQL y AlloyDB para PostgreSQL admiten pgvector, lo que te permite almacenar y consultar inserciones vectoriales mediante comandos SQL estándar.
Usa tu cliente de PostgreSQL preferido (como psql, pgAdmin o la consola de Google Cloud) para conectarte a tu instancia de Cloud SQL o AlloyDB.
Ejecuta el siguiente comando de SQL para habilitar la extensión en tu base de datos. Solo tienes que hacerlo una vez por cada base de datos.
Crea una tabla o modifica una que ya tengas para incluir una columna de datos vectoriales. Debes especificar las dimensiones del vector. Por ejemplo, para crear una tabla en la que almacenar embeddings tridimensionales:
Puedes insertar las inserciones de vectores igual que los datos estándar. Los vectores tienen el formato de arrays entre corchetes.
Ahora puedes consultar tus datos para encontrar los vecinos más cercanos. El operador <-> calcula la distancia euclídea (distancia L2), que se suele usar para encontrar los elementos más similares.
En el caso de conjuntos de datos más grandes, añadir un índice puede acelerar significativamente el rendimiento de la búsqueda. Los índices HNSW y ScaNN son opciones que se suelen usar. Aquí tienes un ejemplo de HNSW:
Empieza a crear en Google Cloud con 300 USD en crédito gratis y más de 20 productos Always Free.