Primeros pasos con Pgvector: Guía para desarrolladores que exploran bases de datos vectoriales
Con las recientes tendencias tecnológicas sobre IA generativa y [modelos de gran lenguaje](https://zilliz.com/glossary/large-language-models-(llms)), han surgido formas más eficientes de almacenar y consultar datos. Las bases de datos tradicionales, como MySQL y PostgreSQL, fueron durante años la opción ideal para los desarrolladores. Sin embargo, últimamente, un nuevo tipo de base de datos llamada base de datos vectorial ha ganado gran popularidad en la comunidad.
Con la extensión pgvector, los desarrolladores pueden almacenar eficientemente datos vectoriales en PostgreSQL, permitiendo capacidades avanzadas de gestión de datos.
Las bases de datos vectoriales son muy diferentes de las bases de datos tradicionales, especialmente en lo que respecta a sus casos de uso. Así que, en este resumen, exploraremos Pgvector, una extensión de PostgreSQL que le permite usar almacenamiento vectorial con una base de datos PostgreSQL. También exploraremos y entenderemos las limitaciones de Pgvector, cómo difiere de las bases de datos vectoriales especializadas, y cómo y dónde puedes usar bases de datos vectoriales para tus aplicaciones.
Si usted es un desarrollador familiarizado con las bases de datos tradicionales y busca nuevas soluciones, esta guía le proporcionará los conocimientos que necesita para empezar a utilizar Pgvector. También le ayudará a explorar otras [bases de datos vectoriales] dedicadas (https://zilliz.com/learn/what-is-vector-database) como alternativa a Pgvector.
En la actualidad, la IA y el aprendizaje automático se utilizan ampliamente en diversos sectores, como la tecnología, la informática, la medicina y la automoción. En estos campos, los datos se representan como vectores que contienen valores numéricos que capturan propiedades y características de datos no estructurados como imágenes o textos. Los algoritmos de aprendizaje automático utilizan estos vectores como entrada para aprender patrones y relaciones dentro de los datos.
Pgvector es una extensión de código abierto de PostgreSQL, una base de datos relacional tradicional de código abierto. Permite almacenar y buscar vectores de procesamiento de lenguaje natural o modelos de aprendizaje profundo sobre PostgreSQL. O, simplemente puede ver Pgvector como una extensión de base de datos vectorial de PostgreSQL.
Una de las mejores cosas de trabajar con Pgvector es que se siente similar a trabajar con una base de datos SQL tradicional como PostgreSQL. La sintaxis para operaciones vectoriales, como crear columnas vectoriales, crear una nueva tabla con columnas vectoriales y obtener los vecinos L2 más cercanos, es la misma.
Si estás trabajando en aplicaciones de IA, sistemas de recomendación, o cualquier otro proyecto que involucre datos de alta dimensión, entender la base de datos Pgvector - y otras bases de datos vectoriales - puede ampliar tus horizontes en la gestión de bases de datos. También permite el almacenamiento eficiente de valores vectoriales sin requerir amplios conocimientos de almacenamiento vectorial y bases de datos.
Ahora, comencemos primero configurando Pgvector para integrarlo con PostgreSQL. Asegúrese de que tiene PostgreSQL instalado en su sistema. Para Mac, puedes instalarlo fácilmente a través de Homebrew:
brew install postgresql
Puede comprobar rápidamente si tiene PostgreSQL instalado ejecutando el siguiente comando:
psql --version
Entonces, debería darle la versión de PostgreSQL instalada en su sistema como se muestra a continuación:
También necesitarás instalar make. Puedes instalarlo fácilmente usando Homebrew ejecutando el siguiente comando:
brew install make
Entonces, debería instalar make en su sistema como se muestra a continuación:
Antes de sumergirte en el mundo de las bases de datos vectoriales, necesitarás configurar Pgvector e integrarlo con PostgreSQL. Vamos a recorrer los pasos necesarios.
- Clona el repositorio de Pgvector.
cd /tmp && git clone --branch v0.4.4 https://github.com/pgvector/pgvector.git
- Entra en este directorio y ejecuta los siguientes comandos
make:
cd pgvector && make && make install
Integrando Pgvector con Postgres
Abra la interfaz de línea de comandos de PostgreSQL (psql) utilizando el siguiente comando. Este paso iniciará Postgres en su línea de comandos para que pueda ejecutar comandos Postgres directamente en su terminal:
psql
Puede crear un usuario para utilizar Postgres utilizando el siguiente comando:
CREAR USUARIO <usuario> CON CONTRASEÑA <contraseña>
A continuación, inicie sesión con ese usuario utilizando las credenciales que creó en el comando anterior. También puede iniciar sesión en Postgres como superusuario:
psql -U postgres
Ahora, vamos a crear una nueva base de datos para trabajar con el siguiente comando:
crear base de datos vectordb;
Vamos a seleccionar esta base de datos:
/c vectordb;
A continuación, habilitaremos la extensión Pgvector para nuestra base de datos vectordb:
crear extensión pgvector;
Sólo tiene que realizar este paso una vez para cada base de datos que desee utilizar con Pgvector.
Ejemplo de Pgvector
Vamos a crear dos columnas vectoriales, id y embedding, en una tabla llamada vectors. La tabla y las columnas almacenan los datos del vector en PostgreSQL.
CREAR TABLA vectores (
id SERIAL PRIMARY KEY,
embedding float4[] -- La columna del vector
);
Ahora podemos insertar algunos datos vectoriales en nuestra tabla vectors:
INSERT INTO vectores (incrustación) VALUES
('{1.2, 0.8, -2.1}'),
('{-0.7, 2.4, 3.6}');
Para ver la tabla, basta con ejecutar la consulta SELECT * en nuestra tabla vectors.
SELECT * FROM vectores;
Uso de Pgvector para la búsqueda de similitudes vectoriales
Hemos discutido cómo las bases de datos vectoriales pueden ser beneficiosas para realizar búsquedas de similitud. He aquí cómo escribir una simple consulta de búsqueda de similitud para encontrar vectores similares a un vector de consulta dado.
SELECT * FROM vectores
WHERE pgvector_cosine(embedding, '{0.9, -0.3, 1.8}') > 0.8;
Utilizamos la consulta normal SELECT * con una cláusula WHERE. A continuación, utilizamos la función pgvector_cosine para especificar que queremos recuperar las filas en las que la similitud coseno entre la columna del vector embedding y el vector de consulta dado {0.9, -0.3, 1.8} sea mayor que 0.8.
Introducción a las bases de datos vectoriales
¿Qué es una base de datos vectorial?
Una base de datos vectorial es un tipo especializado de base de datos diseñada para almacenar, gestionar y consultar datos vectoriales de alta dimensión de forma eficiente. A diferencia de las bases de datos tradicionales, que están optimizadas para datos estructurados como texto y números, las bases de datos vectoriales están diseñadas para manejar tipos de datos complejos utilizados en el aprendizaje automático y el procesamiento del lenguaje natural. Estas bases de datos destacan en la realización de búsquedas de similitud, en las que el objetivo es encontrar vectores que sean similares a un vector de consulta determinado basándose en métricas de distancia específicas.
Las bases de datos vectoriales son cruciales en aplicaciones que requieren el almacenamiento y la recuperación de datos vectoriales, como el reconocimiento de imágenes, los sistemas de recomendación y la búsqueda semántica. Al aprovechar técnicas avanzadas de indexación, las bases de datos vectoriales pueden recuperar vectores relevantes de forma rápida y precisa, lo que las hace indispensables para los desarrolladores que trabajan con modelos de IA y aprendizaje automático.
Ventajas de las bases de datos vectoriales para desarrolladores
Las bases de datos vectoriales ofrecen varias ventajas significativas para los desarrolladores:
Almacenamiento y recuperación eficientes: Están optimizadas para almacenar y recuperar datos vectoriales de alta dimensión de forma eficiente, lo que garantiza que incluso los grandes conjuntos de datos puedan gestionarse con eficacia.
Búsquedas por similitud rápidas y precisas**: Las bases de datos vectoriales admiten búsquedas rápidas de similitud, lo que permite a los desarrolladores encontrar rápidamente los vectores más relevantes. Esto es esencial para aplicaciones como los sistemas de recomendación y el reconocimiento de imágenes.
Soporte para varias métricas de distancia y algoritmos: Proporcionan flexibilidad a la hora de elegir diferentes métricas de distancia (por ejemplo, similitud coseno, distancia euclidiana) y algoritmos para adaptarse a las necesidades específicas de la aplicación.
Escalabilidad y flexibilidad: Las bases de datos vectoriales pueden manejar conjuntos de datos a gran escala, lo que las hace adecuadas para aplicaciones que requieren la gestión de millones o incluso miles de millones de vectores.
Integración con marcos y lenguajes de programación populares: Ofrecen una integración perfecta con varios lenguajes y marcos de programación, lo que permite a los desarrolladores incorporar fácilmente las funcionalidades de las bases de datos vectoriales a sus flujos de trabajo existentes.
Aprovechando estas ventajas, los desarrolladores pueden crear aplicaciones más eficientes y escalables que requieran capacidades avanzadas de gestión de datos vectoriales y búsqueda de similitudes.
Comprender los datos vectoriales
¿Qué son los datos vectoriales?
Los datos vectoriales son un tipo de datos representados como una lista de números, conocida como vector. Cada número del vector corresponde a una característica o atributo específico de los datos representados. Los vectores son versátiles y se pueden utilizar para representar una amplia gama de tipos de datos, como texto, imágenes, audio, etc. En el contexto del aprendizaje automático y el procesamiento del lenguaje natural, los vectores suelen representar el significado semántico de palabras, frases o documentos enteros.
Una de las principales características de los datos vectoriales es su alta dimensionalidad. Los vectores pueden tener miles o incluso millones de dimensiones, que capturan detalles intrincados y relaciones dentro de los datos. Esta alta dimensionalidad plantea problemas a las bases de datos tradicionales, que no están optimizadas para almacenar y consultar estructuras de datos tan complejas.
Las bases de datos vectoriales resuelven estos problemas proporcionando mecanismos eficaces de almacenamiento y recuperación diseñados específicamente para datos vectoriales de alta dimensionalidad. Permiten a los desarrolladores realizar búsquedas de similitud vectorial, cuyo objetivo es encontrar vectores similares a un vector de consulta determinado en función de criterios específicos. Esta capacidad es esencial para aplicaciones como el reconocimiento de imágenes, los sistemas de recomendación y el procesamiento del lenguaje natural, en las que es crucial comprender y aprovechar las relaciones entre puntos de datos.
Mediante el uso de bases de datos vectoriales, los desarrolladores pueden almacenar y consultar datos vectoriales de forma eficiente, lo que abre nuevas posibilidades para crear aplicaciones avanzadas de IA y aprendizaje automático.
Índice y limitaciones de Pgvector
Aunque Pgvector es una gran manera de almacenar y buscar vectores, tiene algunas desventajas obvias.
Pgvector tiene problemas de escalabilidad cuando se trata de vectores de alta dimensión. El almacenamiento de datos vectoriales también puede introducir sobrecargas adicionales de almacenamiento e indexación. También es importante tener en cuenta el espacio que necesitan los datos vectoriales y cómo puede afectar al rendimiento de las consultas.
Además, Pgvector sólo admite un tipo de índice denominado IVFFlat. Esta limitación afecta a las propiedades de los vectores, así como al tamaño de los conjuntos de datos que almacena. También significa que no existe una optimización de almacenamiento por defecto con un índice Pgvector.
En resumen, Pgvector es una extensión de PostgreSQL que permite el almacenamiento y la búsqueda de incrustaciones vectoriales. Sin embargo, tiene capacidades y rendimiento limitados. Afortunadamente, muchas bases de datos vectoriales dedicadas como Milvus están disponibles hoy en día que hacen un trabajo mucho mejor debido a índices o algoritmos mejorados.
Ahora que hemos explorado Pgvector y sus aplicaciones y desventajas, vamos a introducir el concepto de bases de datos vectoriales dedicadas.
A diferencia de Pgvector, un complemento de búsqueda vectorial sobre una base de datos tradicional, las bases de datos vectoriales dedicadas como Milvus y Zilliz están diseñadas desde cero para almacenar y consultar millones o incluso miles de millones de datos vectoriales de alta dimensión con respuestas casi en tiempo real. Aprovechan técnicas avanzadas de indexación para gestionar eficientemente las búsquedas por similitud, ofrecen un rendimiento superior para las operaciones basadas en similitud, gestionan datos vectoriales a gran escala y proporcionan potentes API para aplicaciones de IA y aprendizaje automático.
Una base de datos vectorial específica como Milvus se adapta a una amplia gama de casos de uso, como la recuperación de similitudes en imágenes y vídeos, el procesamiento del lenguaje natural, los sistemas de recomendación, etc. Su versatilidad la hace adecuada para diversas aplicaciones de IA y aprendizaje automático. Su versatilidad la hace adecuada para diversos proyectos relacionados con la IA. Conozcamos Milvus y cómo aprovecharlo en la nube utilizando .
Milvus es una base de datos vectorial de código abierto que proporciona una solución robusta para gestionar y consultar miles de millones de vectores de alta dimensión. Ofrece numerosas funciones interesantes, como índice GPU, Arm64, búsqueda de rango, upsert y CDC, que garantizan un rendimiento y una experiencia de usuario óptimos para crear aplicaciones de IA y aprendizaje automático. Consulte el blog de la última versión de Milvus 2.3 para obtener más información sobre estas funciones.
Zilliz Cloud funciona como un servicio basado en la nube que lleva las instancias de Milvus al ámbito del software como servicio (SaaS). Simplifica el despliegue y la gestión de las bases de datos Milvus ofreciendo infraestructura en la nube, escalabilidad y soporte operativo. Zilliz garantiza que los desarrolladores puedan aprovechar las capacidades de Milvus sin la complejidad de configurar y mantener su infraestructura. Es como utilizar Amazon RDS para PostgreSQL en la nube.
Zilliz Cloud ofrece un nivel gratuito, dando a todos los desarrolladores el mismo acceso a este servicio de base de datos vectorial. La capa gratuita ofrece hasta dos colecciones, cada una de las cuales puede albergar hasta 500.000 vectores con 768 dimensiones e incluso más a menor escala. Esta generosa capacidad permite manejar grandes volúmenes de datos sin necesidad de invertir en infraestructura.
Al actualizar a Postgres 12, asegúrese de que el vector de extensión se gestiona correctamente para mantener la compatibilidad y la funcionalidad.
Cómo elegir entre Milvus y Zilliz
Si desea un control total sobre su base de datos, puede optar por instancias Milvus autoalojadas. Sin embargo, deberá desplegar y gestionar su infraestructura en función de sus necesidades y casos de uso.
Por otro lado, si prefiere utilizar una base de datos vectorial basada en la nube, puede utilizar Zilliz Cloud. Zilliz le permite centrarse en la creación de su aplicación aprovechando Milvus en la nube sin preocuparse del mantenimiento de la infraestructura.
Milvus y Zilliz permiten a los desarrolladores una gestión eficiente de los datos vectoriales, pero se adaptan a diversas preferencias de despliegue. Tanto si se inclina por la flexibilidad autoalojada como por la simplicidad basada en la nube, la colaboración Milvus-Zilliz le ofrece opciones alineadas con las demandas de su proyecto.
Pgvector vs. Milvus y Zilliz: Comparación de bases de datos vectoriales
Ahora, vamos a comparar Pgvector con Milvus/Zilliz en cuanto a facilidad de uso, rendimiento y flexibilidad.
Pgvector se integra perfectamente con PostgreSQL, que es familiar para los desarrolladores que ya utilizan la base de datos relacional. Sin embargo, Milvus y Zilliz requieren configuraciones adicionales para instalar sus SDK y API. La buena noticia es que una vez configurado Milvus/Zilliz, crear un servicio de búsqueda de similitudes a gran escala lleva menos de un minuto. Además, existen SDK sencillos e intuitivos para varios lenguajes de programación.
Aparte de la instalación, hay un poco de curva de aprendizaje al utilizarlos. Pgvector parece más fácil de usar por su familiaridad con PostgreSQL.
Análisis de rendimiento y escalabilidad para la búsqueda de similitud vectorial
Una limitación importante de Pgvector es su capacidad limitada de indexación. Para búsquedas de similitud complejas, Milvus supera a Pgvector debido a sus mecanismos de indexación optimizados, como se demuestra en este punto de referencia.
Milvus aprovecha la búsqueda approximate nearest neighbor para mejorar el rendimiento de las consultas, ofreciendo tiempos de respuesta más rápidos sacrificando algo de precisión en comparación con la búsqueda exacta del vecino más cercano.
Pgvector y Milvus son potentes pilas de búsqueda vectorial diseñadas para manejar eficientemente datos vectoriales a gran escala. Sin embargo, Milvus/Zilliz es más escalable y puede manejar conjuntos de datos con miles de millones de incrustaciones vectoriales.
Conjuntos de características y flexibilidad en las incrustaciones vectoriales
Mientras que Pgvector aporta capacidades vectoriales a PostgreSQL, Milvus/Zilliz es una base de datos vectorial creada específicamente con características especializadas adaptadas a las aplicaciones de IA. Tienen más funciones y pueden ser más útiles para [casos de uso de bases de datos vectoriales] personalizadas (https://zilliz.com/vector-database-use-cases).
VectorDBBench es una herramienta de evaluación comparativa de código abierto para bases de datos vectoriales. Compara las principales bases de datos vectoriales y los servicios en la nube disponibles en el mercado y proporciona resultados de referencia imparciales sobre consultas por segundo (QPS), consultas por dólar (QP$) y latencia P99.
Por ejemplo, puede utilizar VectorDBBench para comparar Pgvector con Milvus o Zilliz. Según los resultados de la evaluación comparativa, Milvus y Zilliz superan a Pgvector en cuanto a QPS y latencia.
Nota: Se trata de una puntuación de 1 a 100 basada en el rendimiento de cada sistema en diferentes casos según una regla específica. Una puntuación más alta indica un mejor rendimiento.
Nota: Se trata de una puntuación >1 basada en el rendimiento de cada sistema en casos diferentes según una regla específica. Una puntuación más baja indica un mejor rendimiento.
Con VectorDBBench, puedes entender rápidamente qué base de datos rinde mejor en términos de diversas métricas. También puede determinar qué base de datos se adapta mejor a sus necesidades específicas.
Pgvector abre nuevas posibilidades para almacenar y consultar datos vectoriales dentro de PostgreSQL. Si ya estás familiarizado con PostgreSQL y quieres explorar bases de datos vectoriales, Pgvector es un excelente punto de partida. Sin embargo, para aplicaciones de IA con millones o incluso miles de millones de búsquedas de similitud vectorial, el rendimiento de Pgvector puede no ser suficiente. Milvus y Zilliz ofrecen capacidades especializadas que optimizan el rendimiento. Considere los requisitos de su proyecto y explore estas bases de datos vectoriales para liberar todo el potencial del almacenamiento vectorial en sus aplicaciones.
*Este post ha sido escrito por Siddhant Varma. Siddhant es un desarrollador JavaScript full-stack con experiencia en ingeniería front-end. Ha trabajado con la ampliación de múltiples nuevas empresas en la India y tiene experiencia en la construcción de productos en la Ed-Tech y las industrias de la salud. Siddhant tiene pasión por la enseñanza y un don para la escritura. También ha enseñado programación a muchos graduados, ayudándoles a convertirse en mejores desarrolladores del futuro.
Última actualización: 23 de enero de 2024
Sigue leyendo

Zilliz Named "Highest Performer" and "Easiest to Use" in G2's Summer 2025 Grid® Report for Vector Databases
This dual recognition shows that Zilliz solved a challenge that has long defined the database industry—delivering enterprise-grade performance without the complexity typically associated with it.

How to Build RAG with Milvus, QwQ-32B and Ollama
Hands-on tutorial on how to create a streamlined, powerful RAG pipeline that balances efficiency, accuracy, and scalability using the QwQ-32B model and Milvus.

DeepSeek Always Busy? Deploy It Locally with Milvus in Just 10 Minutes—No More Waiting!
Learn how to set up DeepSeek-R1 on your local machine using Ollama, AnythingLLM, and Milvus in just 10 minutes. Bypass busy servers and enhance AI responses with custom data.
