pgvector es una extensión para PostgreSQL (también llamado Postgres) que simplifica el trabajo con vectores, lo que te permite almacenarlos, buscarlos y, además, indexarlos directamente en tu base de datos relacional.
Con pgvector, agregar capacidades avanzadas como la búsqueda de similitudes a tus aplicaciones y agentes de IA puede ser sencillo y escalable, sin tener que mover datos o 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 existente. pgvector es conocida por respaldar lo siguiente:
Un vector representa datos numéricamente de una manera que captura sus características clave, lo que los asigna a un espacio matemático virtual. En este espacio, los elementos similares, como palabras, imágenes u objetos, se posicionan cerca unos de otros.
Por ejemplo, consideremos las palabras “abrigo” y “chaqueta”. Las búsquedas tradicionales basadas en palabras clave no conectarían estas dos palabras como similares, porque sus letras son bastante diferentes. Un sistema de comercio electrónico que quiera unir estas palabras clave tendría que hacerlo de forma manual. Sin embargo, las representaciones vectoriales de estos dos términos estarían muy cerca porque comparten significados similares, lo que ofrece resultados de búsqueda más precisos para los usuarios y ahorra tiempo a los desarrolladores.
De manera similar, si tomas dos fotos diferentes de gatos, píxel por píxel podrían ser muy diferentes. Sin embargo, sus embeddings de vector las colocarían muy cerca en el espacio matemático, al igual que un humano identificaría fácilmente ambas imágenes como de gatos:

Para que esto funcione, un modelo de embeddings transforma los datos sin procesar, como imágenes o texto, en embeddings de vector. pgvector almacena estos embeddings en tu base de datos. Cuando un usuario envía una consulta, esa entrada también se convierte en un vector. Luego, pgvector calcula la distancia entre el vector de consulta y los vectores almacenados para identificar de manera eficiente los “vecinos más cercanos” con las puntuaciones de similitud más altas.
¿Quieres saber más sobre los diferentes tipos de búsquedas de vecinos más cercanos? Consulta nuestra guía para el desarrollo de apps de IA generativa.
PostgreSQL es un sistema de administración de bases de datos relacionales de código abierto y sólido diseñado para manejar datos estructurados con tablas, filas y columnas.
pgvector es una extensión que se ejecuta en PostgreSQL. Agrega “vectores”, un nuevo tipo de datos, a la base de datos, lo que permite almacenar y procesar embeddings de vector junto con tus datos operativos estándar.
No, pgvector es una extensión que se integra directamente en tu base de datos de PostgreSQL existente. Esto te permite agregar capacidades avanzadas de IA y de búsqueda sin administrar una infraestructura nueva o separada.
Para admitir las funciones basadas en IA de la actualidad, necesitas la capacidad de almacenar y administrar embeddings de vector.
PostgreSQL puede ser potente por sí solo, pero debido a que 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 coincidencia de palabras clave y patrones.
En el mundo de la IA, los datos complejos como texto, imágenes y audio se codifican como representaciones vectoriales. Estas codificaciones permiten que los modelos de IA comprendan el contexto y las relaciones semánticas en tus datos, lo que forma 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 vector para encontrar resultados basados en el significado de una consulta, en lugar de solo concordancias de palabras clave como lo haría SQL. Este proceso, conocido como búsqueda de similitud, facilita agregar capacidades de búsqueda avanzadas directamente a tus aplicaciones sin necesidad de rediseñar la arquitectura o mover los datos a una base de datos de vectores independiente.
¿Quieres obtener más información sobre los embeddings de vector? Consulta nuestra guía para el desarrollo de apps de IA generativa.
Con su capacidad para manejar vectores de alta dimensión, pgvector admite una variedad de aplicaciones avanzadas.
La concordancia de palabras clave en las bases de datos relacionales tradicionales a menudo no logra identificar conexiones significativas en los datos. La búsqueda por similitud compara la proximidad de los vectores con métricas como la distancia euclidiana y la distancia coseno para encontrar patrones más profundos, lo que es fundamental para aplicaciones como el reconocimiento de imágenes y la búsqueda semántica, en las que 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 del usuario y encontrando artículos relacionados.
El procesamiento de lenguaje natural basado en vectores permite que los agentes de IA comprendan el contexto, lo que lleva a conversaciones más personalizadas y respuestas más precisas. La compatibilidad multilingüe mejora su rendimiento como asistentes virtuales y plataformas de atención al cliente.
pgvector mejora los flujos de trabajo de IA, ya que permite almacenar y consultar embeddings de vector, que son esenciales para identificar patrones inusuales en los datos. A través del análisis de la proximidad de vectores, ayuda a detectar anomalías en tiempo real para la prevención de fraudes, la seguridad de redes o el control de calidad.
El análisis de sentimiento analiza la intención de un mensaje, lo que te permite enrutar de manera adecuada los comentarios negativos para tomar medidas más rápido y crear resoluciones personalizadas.
Aprovechando la escalabilidad, la compatibilidad con transacciones y la confiabilidad sólida de PostgreSQL, pgvector administra de manera eficiente conjuntos de datos de alta dimensión. Además, su uso de la sintaxis SQL ya conocida lo hace accesible para los equipos existentes, lo que elimina la necesidad de herramientas o infraestructura adicionales dedicadas a la indexación y búsqueda de vectores.
Se integra fácilmente en las apps existentes basadas en PostgreSQL.
Mejora la escalabilidad de PostgreSQL para conjuntos de datos en crecimiento.
Ofrece funciones personalizables, como métricas de distancia e indexación.
Hereda la seguridad y confiabilidad de PostgreSQL.
Te permite realizar consultas sin problemas en datos estructurados y no estructurados.
Proporciona una solución fácil de usar para desarrolladores que trabajan con datos de gran escala y con altas dimensiones.
Si buscas una base de datos única que se destaque tanto en las consultas en SQL tradicionales como en la búsqueda de vértices moderna, considera AlloyDB para PostgreSQL. AlloyDB usa el algoritmo de búsqueda de similitud de vectores ScaNN (vecino más cercano escalable) desarrollado por Google, lo que ofrece un rendimiento significativamente más alto que otros servicios de PostgreSQL basados en la nube para cargas de trabajo transaccionales y analíticas en bases de datos grandes.
Descubre cómo AlloyDB realiza 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 embeddings de vectores con comandos de 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 debes hacerlo una vez por base de datos.
Crea una tabla nueva (o modifica una existente) para incluir una columna de datos vectoriales. Debes especificar las dimensiones del vector. Por ejemplo, para crear una tabla para almacenar embeddings tridimensionales, haz lo siguiente:
Puedes insertar embeddings de vectores como datos estándar. Los vectores tienen el formato de arrays encerrados entre corchetes.
Ahora puedes consultar tus datos para encontrar los vecinos más cercanos. El operador <-> calcula la distancia euclidiana (distancia L2), que se usa comúnmente para encontrar los elementos más similares.
En conjuntos de datos más grandes, agregar un índice puede acelerar significativamente el rendimiento de la búsqueda. Los índices HNSW y ScaNN son opciones habituales. Aquí tienes un ejemplo de HNSW:
Comienza a desarrollar en Google Cloud con el crédito gratis de $300 y los más de 20 productos del nivel Siempre gratuito.