¿Qué es pgvector?

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.

Crea aplicaciones basadas en IA en Google Cloud con pgvector, LangChain y LLMs

Conclusiones clave

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:

  • Búsqueda por similitud: compara patrones semánticos en los datos en lugar de usar la coincidencia de palabras clave.
  • Aplicaciones de IA: operaciones de agentes de IA y aplicaciones de búsqueda, incluidos motores de recomendaciones, bots de chat, procesamiento del lenguaje natural y detección de anomalías

¿Qué es un vector?

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:

Imagen de un gato generada con Gemini

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.

Preguntas frecuentes sobre pgvector

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.

pgvector en PostgreSQL para aplicaciones de IA y búsqueda

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.

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.

Cómo habilitar y usar pgvector en bases de datos de Google Cloud

Cloud SQL y AlloyDB para PostgreSQL admiten pgvector, lo que te permite almacenar y consultar inserciones vectoriales mediante comandos SQL estándar.

1. Conectarse a la instancia

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.

2. Habilita la extensión pgvector

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.

  • SQL
Cargando...

3. Crea una tabla con una columna de vectores

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:

  • SQL
Cargando...

4. Insertar datos vectoriales

Puedes insertar las inserciones de vectores igual que los datos estándar. Los vectores tienen el formato de arrays entre corchetes.

  • SQL
Cargando...

5. Consulta mediante la búsqueda por similitud

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.

  • SQL
Cargando...

6. Añade un índice de rendimiento

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:

  • SQL
Cargando...

Soluciona los retos empresariales que se te presenten con Google Cloud

Los nuevos clientes reciben 300 USD en crédito gratis para invertirlos en Google Cloud.

Ve un paso más allá

Empieza a crear en Google Cloud con 300 USD en crédito gratis y más de 20 productos Always Free.

Google Cloud