¿Qué es pgvector?

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.

Compila apps potenciadas por IA en Google Cloud con pgvector, LangChain y LLM

Conclusiones principales

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:

  • Búsqueda por similitud: Comparación de patrones semánticos en los datos, en lugar de usar la concordancia de palabras clave
  • Aplicaciones de IA: Operaciones de agentes de IA y aplicaciones de búsqueda, incluidos motores de recomendaciones, chatbots, procesamiento de lenguaje natural y detección de anomalías

¿Qué es un vector?

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:

Imagen de un gato generada por Gemini

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.

Preguntas frecuentes sobre pgvector

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.

pgvector en PostgreSQL para aplicaciones de IA y búsqueda

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.

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.

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 embeddings de vectores con comandos de SQL estándar.

1. Conéctate 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 debes hacerlo una vez por base de datos.

  • SQL
Cargando...

3. Crea de una tabla con una columna de vectores

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:

  • SQL
Cargando...

4. Inserta datos vectoriales

Puedes insertar embeddings de vectores como datos estándar. Los vectores tienen el formato de arrays encerrados entre corchetes.

  • SQL
Cargando...

5. Consulta con la búsqueda por similitud

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.

  • SQL
Cargando...

6. Agrega un índice para mejorar el rendimiento

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:

  • SQL
Cargando...

Resuelve tus desafíos más difíciles con Google Cloud

Los clientes nuevos obtienen $300 en créditos gratuitos que pueden usar en Google Cloud.

Da el siguiente paso

Comienza a desarrollar en Google Cloud con el crédito gratis de $300 y los más de 20 productos del nivel Siempre gratuito.

Google Cloud