Sign In
Free Sign Up
  • English
  • Español
  • 简体中文
  • Deutsch
  • 日本語
Sign In
Free Sign Up
  • English
  • Español
  • 简体中文
  • Deutsch
  • 日本語

MyScale vs Qdrant: Un Análisis Detallado del Rendimiento de las Bases de Datos Vectoriales

Las bases de datos vectoriales (opens new window) y las búsquedas vectoriales (opens new window) están ganando rápidamente popularidad debido a su impresionante velocidad y escalabilidad. A diferencia de los modelos tradicionales de aprendizaje automático, estas bases de datos aprovechan medidas de similitud eficientes como la distancia euclidiana (opens new window), la similitud del coseno (opens new window), etc. para ofrecer resultados de búsqueda rápidos sin requerir un entrenamiento extenso. Esta eficiencia, junto con su rentabilidad en comparación con las alternativas basadas en IA, las convierte en una solución atractiva para diversas aplicaciones.

Dado el creciente panorama de las bases de datos vectoriales, elegir la adecuada para tus necesidades específicas puede ser un desafío. Factores como el rendimiento, el costo y la funcionalidad juegan un papel crucial en la determinación de la opción ideal.

Este artículo, el tercero de nuestra serie, profundiza en una comparación detallada de dos destacados contendientes: MyScaleDB (opens new window) y Qdrant (opens new window). Ambas bases de datos ofrecen ventajas únicas, por lo que un análisis exhaustivo es esencial para tomar decisiones informadas.

Nota: Si eres nuevo en las bases de datos vectoriales, te recomendamos comenzar con el primer artículo (opens new window) de esta serie para obtener una comprensión básica de esta poderosa tecnología.

# Introducción de MyScaleDB y Qdrant

# MyScaleDB

MyScaleDB se destaca como una base de datos nativa de la nube optimizada para aplicaciones y soluciones de IA. Construida sobre la sólida base de datos de código abierto y altamente escalable ClickHouse (opens new window), MyScaleDB ofrece varias ventajas convincentes:

  • Plataforma Unificada para IA: MyScaleDB agiliza los flujos de trabajo de IA al gestionar y procesar de manera fluida tanto datos estructurados como vectorizados dentro de una única plataforma unificada. Esto elimina la necesidad de tuberías de datos complejas y simplifica los procesos de desarrollo.
  • Rendimiento Intransigente: Aprovechando una arquitectura de base de datos OLAP de vanguardia, MyScaleDB ofrece un rendimiento excepcional para operaciones en datos vectorizados. Esta arquitectura permite una ejecución de consultas extremadamente rápida, lo que la hace ideal para cargas de trabajo de IA exigentes.
  • Simplicidad Potenciada por SQL: MyScaleDB adopta la universalidad de SQL, lo que permite a los desarrolladores interactuar con la base de datos utilizando un lenguaje familiar y ampliamente adoptado. Esto elimina la necesidad de aprender lenguajes de consulta especializados, acelerando los ciclos de desarrollo y aumentando la productividad.
  • Indexación MSTG para Búsqueda Mejorada: MyScaleDB utiliza el algoritmo Multi-Scale Tree Graph (MSTG) (opens new window), un algoritmo de indexación avanzado (opens new window) diseñado para una alta densidad de datos y un rendimiento de búsqueda optimizado. MSTG destaca tanto en búsquedas vectoriales básicas como en búsquedas vectoriales filtradas (opens new window), asegurando una recuperación rápida y precisa de información relevante.

# Qdrant

Qdrant es otra base de datos vectorial contemporánea. También es de código abierto y está disponible tanto en Docker como en la nube. Algunas de las características de Qdrant son:

  • Compresión Avanzada: Qdrant utiliza cuantización binaria (opens new window), que convierte cualquier vector de incrustación numérica en un vector de valores booleanos. Proporciona un rendimiento de búsqueda hasta 40 veces mejor.
  • Soporte de Multitenencia: Tener una única colección con particionamiento basado en carga útil se llama multitenencia (opens new window). Qdrant lo admite para compartir instancias entre múltiples usuarios.
  • I/O Uring (opens new window): Qdrant proporciona soporte para io_uring para mejorar el rendimiento y combatir la sobrecarga de las llamadas al sistema operativo.

Con una comprensión clara de lo que ofrecen MyScaleDB y Qdrant, ahora nos centraremos en las diferencias clave. Estas distinciones te ayudarán a determinar qué base de datos se ajusta mejor a tus necesidades y prioridades específicas, desde el rendimiento hasta las características únicas.

# Flexibilidad de Alojamiento: Un Aspecto Clave para las Bases de Datos Vectoriales

Al evaluar las soluciones de bases de datos, el alojamiento se convierte en un factor crítico con implicaciones de gran alcance en el rendimiento, la escalabilidad y la facilidad de administración. La opción de alojamiento adecuada garantiza que tu base de datos pueda manejar con elegancia cargas de trabajo fluctuantes, mantener una alta disponibilidad y minimizar la carga administrativa.

En cuanto al alojamiento, tanto MyScaleDB como Qdrant ofrecen versiones de código abierto, soluciones basadas en la nube y soluciones locales. El alojamiento en la nube ofrece tanto niveles gratuitos como de pago, como veremos en detalle a continuación.

# Alojamiento en la Nube

Para MyScaleDB en la nube (opens new window), puedes comenzar con un pod gratuito que admite 5 millones de vectores de 768 dimensiones. Regístrate aquí (opens new window) y consulta MyScaleDB QuickStart (opens new window) para obtener más instrucciones.

Qdrant te ofrece un clúster gratuito de 1 GB para siempre sin costos iniciales. Para comenzar a usar Qdrant, visita la Guía de Inicio Rápido en la Nube (opens new window).

# Local

Para la solución local, la imagen de Docker es una opción general. Podemos lanzar la imagen de MyScaleDB de Docker de la siguiente manera:

docker run --name MyScaleDB --net=host MyScaleDB/MyScaleDB:1.6

Luego, nos conectamos a la base de datos utilizando el cliente ClickHouse:

docker exec -it MyScaleDBdb clickhouse-client

De manera similar, Qdrant también se puede ejecutar localmente utilizando Docker de la siguiente manera:

docker run -p 6333:6333 qdrant/qdrant

# Funcionalidades Principales

Si bien las opciones de alojamiento sientan las bases para la accesibilidad y escalabilidad de la base de datos, son las funcionalidades principales las que realmente diferencian a MyScaleDB y Qdrant. Esta sección analiza las características esenciales de cada plataforma, brindando información sobre cómo manejan las complejidades del procesamiento de datos basado en vectores.

Comprender estas características te ayudará a ver cómo cada base de datos maneja tareas clave en el procesamiento de datos basado en vectores y cuál de ellas podría satisfacer mejor tus necesidades específicas.

# Lenguaje de Consulta y Soporte de API

La elección del lenguaje de consulta y el soporte de API disponibles desempeñan un papel crucial en la productividad del desarrollador y la facilidad de integración. Veamos cómo abordan estos aspectos MyScaleDB y Qdrant:

# Soporte Multi-Lenguaje:

Si bien ambas bases de datos ofrecen un respetable soporte multi-lenguaje, MyScaleDB se destaca por su singular adopción de SQL. Puedes utilizar consultas SQL tradicionales con MyScaleDB, y funcionarán sin problemas con bases de datos vectoriales o incluso una combinación de bases de datos tradicionales y vectoriales, como esta:

SELECT id, date, label, 
    distance(data, {target_row_data}) AS dist
FROM default.myscale_search
ORDER BY dist LIMIT 10

El método distance en MyScaleDB calcula la similitud entre vectores midiendo la distancia entre un vector especificado y todos los vectores almacenados en una columna particular.

Nota: Si te gusta trabajar con SQL, definitivamente MyScaleDB será tu elección.

# Tipos de Datos Soportados

La capacidad de manejar diversos tipos de datos es esencial para cualquier base de datos, y las bases de datos vectoriales no son una excepción. Comparemos MyScaleDB y Qdrant en términos de los tipos de datos que admiten:

# Enfoque Flexible de JSON de Qdrant

Qdrant aprovecha la flexibilidad de las cargas útiles JSON, lo que le permite almacenar y consultar una amplia gama de tipos de datos, incluyendo:

  • Palabras Clave: Para búsquedas y filtrado basados en texto.
  • Enteros y Flotantes: Para datos numéricos y consultas de rango.
  • Objetos y Arreglos Anidados: Para representar estructuras de datos complejas.

Este enfoque centrado en JSON proporciona flexibilidad en la modelización de datos y se adapta a diversos casos de uso.

# Versatilidad Potenciada por SQL de MyScaleDB:

MyScaleDB lleva el soporte de tipos de datos un paso más allá al aprovechar su plena compatibilidad con SQL. Esto le permite manejar no solo datos vectoriales, sino también una amplia variedad de tipos de datos tradicionales, incluyendo:

  • Datos Estructurados: Tipos de datos relacionales tradicionales como enteros, flotantes, cadenas, fechas, etc.
  • JSON: Para manejar datos semi-estructurados y objetos anidados.
  • Datos Geoespaciales: Para consultas basadas en ubicación y análisis espacial.
  • Datos de Series Temporales: Para almacenar y analizar datos con marca de tiempo.

La capacidad de MyScaleDB para manejar tanto datos vectoriales como diversos tipos de datos tradicionales dentro de una sola plataforma ofrece una ventaja significativa. Este enfoque unificado simplifica la gestión de datos, elimina los silos de datos y permite consultas potentes que abarcan diferentes tipos de datos.

A continuación se muestra un ejemplo de tabla que muestra la variedad de columnas que MyScaleDB puede manejar, incluidos los datos vectoriales.


CREATE TABLE default.wiki_abstract_mini(
    `id` UInt64,
    `body` String,
    `title` String,
    `url` String,
    `body_vector` Array(Float32),
    CONSTRAINT check_length CHECK length(body_vector) = 768
)
ENGINE = MergeTree
ORDER BY id
SETTINGS index_granularity = 128;

Este comando SQL crea una tabla con datos estructurados y vectorizados, impone un tamaño de vector de 768 y optimiza las consultas ordenándolas por id.

TL;DR: Ambas bases de datos admiten de manera efectiva una amplia gama de tipos de datos numéricos y de texto, pero MyScaleDB va más allá con su compatibilidad avanzada con SQL, sus capacidades OLAP potentes y su soporte integral para estructuras de datos complejas como datos geoespaciales y de series temporales.

# Indexación

Para la indexación, Qdrant utiliza el algoritmo Hierarchical Navigable Small World (HNSW) (opens new window), que, si bien es efectivo para búsquedas vectoriales estándar, tiene dificultades con las operaciones de búsqueda filtradas.

MyScaleDB aborda esta limitación al introducir el algoritmo Multi-Scale Tree Graph (MSTG). MSTG combina el agrupamiento jerárquico de árboles con la búsqueda basada en grafos, mejorando significativamente la velocidad y el rendimiento de recuperación. Esto lo hace altamente eficiente tanto para búsquedas vectoriales estándar como para búsquedas vectoriales filtradas complejas.

Por cierto, tanto MyScaleDB como Qdrant admiten búsqueda de múltiples vectores.

Nota: MSTG supera a los algoritmos de indexación contemporáneos, lo que le brinda a MyScaleDB una ventaja significativa tanto en búsquedas vectoriales estándar como en búsquedas vectoriales filtradas.

# Búsqueda de Texto Completo

La búsqueda de texto completo (opens new window) está disponible tanto en Qdrant (a partir de la versión 0.10.0) como en MyScaleDB. Qdrant implementa la búsqueda de texto completo mediante el soporte de tokenización e indexación de campos de texto, lo que le permite buscar y filtrar en función de palabras o frases específicas.

búsqueda de texto completo

MyScaleDB, por otro lado, utiliza la biblioteca Tantivy, que aprovecha el algoritmo BM25 para una recuperación precisa y eficiente de documentos.

# Ejemplo de Qdrant

Aquí tienes un ejemplo de cómo crear un índice de texto completo (generalmente llamado índice de carga útil en su terminología) en Qdrant,

from qdrant_client import QdrantClient, models

client = QdrantClient(url="<http://localhost:6333>")

client.create_payload_index(
    collection_name="{collection_name}",
    field_name="name_of_the_field_to_index",
    field_schema=models.TextIndexParams(
        type="text",
        tokenizer=models.TokenizerType.WORD,
        min_token_len=2,
        max_token_len=15,
        lowercase=True,
    ),
)

Este fragmento de código en Qdrant configura un índice de texto mediante la tokenización de un campo de texto en función de parámetros como la longitud de las palabras y la sensibilidad a las mayúsculas y minúsculas.

# Ejemplo de MyScaleDB

En el ejemplo de MyScaleDB, estamos utilizando el tokenizador stem con palabras de parada en inglés, lo que puede mejorar la precisión de la búsqueda al centrarse en la forma raíz de las palabras. En este caso, estamos utilizando la tabla en_wiki_abstract (se ha utilizado a lo largo de este ejemplo (opens new window) si deseas verlo en detalle).

ALTER TABLE default.en_wiki_abstract
ADD INDEX body_idx (body)
TYPE fts('{"body":{"tokenizer":{"type":"stem", "stop_word_filters":["english"]}}}');

Nota: No hay muchas diferencias en términos de búsqueda de texto completo, ya que ambas ofrecen soluciones efectivas.

# Búsqueda Filtrada

MyScaleDB optimiza la búsqueda vectorial filtrada a través de su algoritmo MSTG, junto con técnicas de máscara de bits. Esta combinación, junto con las capacidades avanzadas de indexación y procesamiento paralelo de ClickHouse, permite que MyScaleDB maneje eficientemente conjuntos de datos grandes. Al utilizar una estrategia de prefiltrado, MyScaleDB reduce el conjunto de datos antes de la búsqueda vectorial principal, asegurando que solo se procesen los datos más relevantes, lo que mejora significativamente tanto el rendimiento como la precisión.

Qdrant utiliza una versión filtrable del algoritmo HNSW (opens new window), que aplica filtros durante el proceso de búsqueda para garantizar que solo se consideren los nodos relevantes en el grafo de búsqueda.

# Búsqueda Geoespacial

Tanto MyScaleDB como Qdrant admiten la búsqueda geoespacial. MyScaleDB tiene una serie de funciones geoespaciales (opens new window) para admitir la búsqueda geoespacial. Por ejemplo, esta función encuentra la distancia entre dos puntos en la Tierra (tomada como una variedad):

greatCircleDistance(lon1Deg, lat1Deg, lon2Deg, lat2Deg)

# Integración de APIs de LLM

Probablemente, la mayor aplicación de las búsquedas vectoriales sean los LLM y los RAG. Tanto Qdrant como MyScaleDB tienen su respaldo al admitir varias integraciones de APIs de LLM como LlamaIndex (opens new window), LangChain (opens new window) y Hugging Face (opens new window).

Boost Your AI App Efficiency now
Sign up for free to benefit from 150+ QPS with 5,000,000 vectors
Free Trial
Explore our product

# Precios

Tanto Qdrant como MyScaleDB adoptan un modelo de precios freemium, ofreciendo niveles gratuitos adecuados para experimentación y proyectos más pequeños, junto con niveles pagados más potentes para cargas de trabajo exigentes. Es importante destacar que ambas plataformas permiten a los usuarios explorar sus ofertas gratuitas sin requerir información de tarjeta de crédito.

# Nivel gratuito

  • Qdrant: Proporciona una capacidad de almacenamiento de 1 GB en su nivel gratuito.
  • MyScaleDB: Ofrece un nivel gratuito significativamente más generoso, permitiendo el almacenamiento de hasta 5 millones de vectores de 768 dimensiones. Para poner esto en perspectiva, lograr esta capacidad de almacenamiento en la plataforma de Qdrant requeriría un plan de pago que costaría aproximadamente $275 al mes.

# Nivel pagado

Para el nivel pagado, tanto Qdrant como MyScaleDB ofrecen los 3 tipos de alojamiento en la nube: GCP, Azure y AWS. Por lo general, Azure y AWS tienen costos más altos, mientras que GCP es la opción más económica disponible.

Para el nivel pagado, compararemos el alojamiento de Qdrant en GCP con MyScaleDB. Para MyScaleDB, consideraremos tanto opciones optimizadas para capacidad como para rendimiento, utilizando un tamaño de vector constante de 768 dimensiones para todas las comparaciones.

Capacidad Qdrant ($)/hora Nodos MyScaleDB Optimizado para Capacidad ($)/hora Pods MyScaleDB Optimizado para Rendimiento ($)/hora Pods
10 Millones 0.75 1 0.09 1 0.33 2
--- --- --- --- --- --- ---
20 Millones 1.5 1 0.19 2 0.67 4
40 Millones 3.02 2 0.38 4 1.33 8
80 Millones 4.52 3 0.76 8 2.67 16
160 Millones 9.05 6 1.51 16 5.33 32
320 Millones 16.58 11 3.02 32 10.66 64

En los pods optimizados para capacidad de MyScaleDB, obtenemos 10 millones de vectores por pod, mientras que la configuración optimizada para rendimiento proporciona una latencia más baja y, como resultado, tenemos más pods para el almacenamiento. Podemos ver que incluso los pods optimizados para rendimiento de MyScaleDB son mucho más económicos que la configuración más económica de Qdrant.

Otra tendencia que observamos es que MyScaleDB tiene un factor de escalado lineal, mientras que Qdrant tiene un patrón más asimétrico, como se puede ver en este gráfico.

Comparación de costos

Nota: En cuanto a los precios, tanto en el nivel gratuito como en el nivel pagado, no hay comparación con MyScaleDB.

# Comparación de Rendimiento

Aunque las comparaciones de características anteriores proporcionan información valiosa, las pruebas de rendimiento objetivas ofrecen una comprensión más concreta de las capacidades de MyScaleDB y Qdrant.

# Rendimiento (Consultas por Segundo)

El rendimiento, generalmente medido en Consultas por Segundo (QPS), refleja directamente la capacidad de una base de datos para manejar solicitudes concurrentes de manera eficiente. Los resultados de las pruebas demuestran claramente la superioridad de MyScaleDB en términos de rendimiento en comparación con Qdrant. Además, la brecha de rendimiento se amplía significativamente a medida que aumenta el número de hilos concurrentes, lo que destaca la excepcional escalabilidad de MyScaleDB bajo cargas de trabajo pesadas.

Comparación de QPC

# Latencia Promedio de Consulta

La latencia promedio de consulta, medida en milisegundos o segundos, representa el tiempo promedio que tarda una base de datos en procesar una consulta y devolver resultados. Una menor latencia se traduce en tiempos de respuesta más rápidos, un factor crítico en aplicaciones en tiempo real y para la experiencia del usuario.

Los resultados de las pruebas muestran consistentemente que MyScaleDB logra una latencia promedio de consulta significativamente menor en comparación con Qdrant. Esta tendencia se mantiene con diferentes cantidades de hilos, lo que indica la capacidad de MyScaleDB para mantener una baja latencia incluso bajo alta concurrencia.

Comparación de latencia promedio de consulta

Observamos tendencias similares en la latencia P95 (percentil 95), lo que refuerza la baja latencia de MyScaleDB para aplicaciones prácticas.

Comparación P95

# Tiempo de Construcción

MyScaleDB (en verde; ese pequeño punto en la esquina inferior derecha) no solo tiene mejor precisión, sino que lo hace casi 5 veces más rápido.

Tiempo de construcción

# Costo Mensual

La relación costo-efectividad juega un papel crucial al elegir la solución de base de datos adecuada. Como se destaca en la sección de precios, MyScaleDB generalmente ofrece una opción más asequible en comparación con Qdrant, especialmente al considerar su generoso nivel gratuito.

Este gráfico lo explica en términos de los hilos de búsqueda. Podemos ver que el costo de Qdrant (gris) exhibe una tendencia ascendente pronunciada a medida que aumenta el número de hilos de búsqueda. En contraste, MyScaleDB mantiene un perfil de costo significativamente más bajo, permaneciendo relativamente estable incluso con un mayor número de hilos.

Costo mensual
Join Our Newsletter

# Conclusión

Tanto Qdrant como MyScaleDB se destacan como contendientes prominentes en el panorama en rápida evolución de las bases de datos vectoriales. Qdrant, con su mayor presencia en el mercado, se beneficia de una adopción más amplia y ofrece características atractivas como el soporte para vectores dispersos y técnicas eficientes de cuantización.

Sin embargo, MyScaleDB emerge como una alternativa poderosa, con ventajas significativas en áreas clave:

  • Rendimiento y escalabilidad: MyScaleDB supera constantemente a Qdrant en las pruebas, mostrando un rendimiento superior, menor latencia e impresionante escalabilidad para cargas de trabajo exigentes.
  • Relación costo-efectividad: MyScaleDB ofrece una propuesta de valor convincente con su generoso nivel gratuito y costos significativamente más bajos en los planes de pago, especialmente para escenarios de alta concurrencia.
  • Gestión unificada de datos: La capacidad de MyScaleDB para gestionar tanto datos vectoriales como diversos tipos de datos tradicionales en una única plataforma simplifica los flujos de datos y habilita consultas cruzadas de datos potentes.
  • Simplicidad impulsada por SQL: Aprovechando la familiaridad y expresividad de SQL, MyScaleDB agiliza el desarrollo y permite a los usuarios interactuar con datos vectoriales utilizando un lenguaje ampliamente adoptado.

En última instancia, la elección óptima depende de tus requisitos y prioridades específicos. Si el soporte para múltiples lenguajes y características especializadas como el manejo de vectores dispersos son primordiales, Qdrant podría ser una opción adecuada. Sin embargo, si el rendimiento, la escalabilidad, la relación costo-efectividad y la gestión unificada de datos son consideraciones críticas, MyScaleDB se presenta como la opción ganadora.

Te animamos a evaluar cuidadosamente tus necesidades y aprovechar los conocimientos de esta comparación para tomar una decisión informada que se alinee con tus requisitos únicos de procesamiento de datos y aplicaciones.

Keep Reading

Start building your Al projects with MyScale today

Free Trial
Contact Us