¿Qué es Qdrant? La Guía Definitiva para Entender Este Motor de Búsqueda de Vectores
Published on
Has oído hablar sobre los motores de búsqueda de vectores, pero ¿alguna vez te has preguntado qué los diferencia del resto? Ingresa a Qdrant, un cambio de juego en el ámbito de la búsqueda de datos de alta dimensionalidad. Este artículo tiene como objetivo desmitificar qué es Qdrant, cómo funciona y por qué deberías interesarte.
Ya seas un científico de datos, un desarrollador o simplemente alguien interesado en los últimos avances en tecnología de búsqueda, esta guía es para ti. Nos adentraremos en los aspectos técnicos, lo compararemos con otros motores como Faiss e incluso te guiaremos en la instalación y uso. ¡Así que empecemos!
¿Quieres conocer las últimas noticias de LLM? ¡Consulta la clasificación LLM más reciente!
¿Qué es Qdrant?
¿Qué es Qdrant en Términos Técnicos?
Qdrant es un motor de búsqueda vectorial de código abierto diseñado para manejar datos de alta dimensionalidad. Emplea algoritmos avanzados como el grafo de Navegación Jerárquico de Mundo Pequeño (HNSW, por sus siglas en inglés) y la Cuantización de Productos. Estos algoritmos hacen que sea increíblemente eficiente en la indexación y búsqueda de vectores, incluso cuando se trabaja con conjuntos de datos masivos.
-
Grafos HNSW: Se utilizan para una indexación eficiente. Permiten a Qdrant filtrar rápidamente datos de alta dimensión, reduciendo el tiempo necesario para encontrar resultados relevantes.
-
Cuantización de Productos: Esta es una técnica utilizada para comprimir vectores. Garantiza que el motor no solo sea rápido, sino también eficiente en el uso de la memoria.
¿Qué es Qdrant en Términos Sencillos?
Piensa en Qdrant como un organizador súper inteligente para tu contenido digital. Digamos que tienes una colección masiva de fotos, artículos o incluso canciones. Encontrar algo específico en este montón puede ser como buscar una aguja en un pajar. Qdrant utiliza su "inteligencia" para encontrar rápidamente lo que estás buscando. Es como tener un asistente personal que conoce tu colección tan bien como tú, ¡quizás incluso mejor!
Lo que Hace que Qdrant sea Único
-
Grafos HNSW: Estos grafos son una forma de estructura de datos que permite a Qdrant indexar datos de alta dimensionalidad de manera eficiente. Reducen la complejidad computacional, lo que acelera el proceso de búsqueda.
-
Cuantización de Productos: Esta técnica comprime los vectores en la base de datos. Es como comprimir un archivo; el contenido es el mismo, pero ocupa menos espacio. Esto es crucial para manejar conjuntos de datos grandes sin comprometer la velocidad.
-
Búsqueda Semántica: Esta es la capacidad de comprender el contexto y las sutilezas de una consulta.
Los motores de búsqueda tradicionales se limitan a búsquedas basadas en palabras clave. Qdrant, sin embargo, utiliza la búsqueda semántica. Esto significa que comprende el significado detrás de tu consulta, no solo las palabras que utilizas.
Por ejemplo, si buscas "Apple" (manzana en inglés), una búsqueda basada en palabras clave podría mostrar resultados relacionados con la fruta y la empresa tecnológica. Una búsqueda semántica entendería el contexto y proporcionaría resultados más relevantes.
Qdrant se destaca de varias formas:
-
Código Abierto: Ser de código abierto significa que cualquiera puede contribuir a su desarrollo. Esto crea un entorno impulsado por la comunidad que fomenta la innovación y la transparencia.
-
Eficiencia: Qdrant está diseñado para proporcionar resultados de búsqueda rápidos y precisos. El uso de algoritmos avanzados asegura que destaque en términos de velocidad y confiabilidad.
Qdrant vs Faiss: Comparación de Referencia
En el espacio de motores de búsqueda de vectores, a menudo se evalúa Qdrant junto con Faiss. Sin embargo, la falta de una referencia unificada ha dificultado realizar comparaciones claras. Este análisis tiene como objetivo proporcionar una perspectiva técnica y basada en datos sobre cómo Qdrant se compara con Faiss y otros competidores.
La siguiente tabla presenta métricas clave de rendimiento de una prueba de referencia. La prueba se realizó en el conjunto de datos deep-image-96-angular
, con cada motor configurado de manera diferente.
Motor | Nombre de Configuración | Conjunto de Datos | Tiempo de Subida (s) | Tiempo de Subida + Indexación (s) | P95 (s) | RPS | Paralelo | P99 (s) | Latencia (s) | Precisión | Parámetros del Motor |
---|---|---|---|---|---|---|---|---|---|---|---|
Qdrant | qdrant-rps-m-64-ef-512 | deep-image-96-angular | 845.78 | 8959.44 | 0.055 | 1541.86 | 100 | 0.063 | 0.024 | 0.96 | {"search_params":{"hnsw_ef":64}} |
Weaviate | weaviate-m-16-ef-128 | deep-image-96-angular | 8922.25 | 8922.25 | 0.35 | 507.33 | 100 | 0.41 | 0.19 | 0.94 | {"vectorIndexConfig":{"ef":256}} |
Milvus | milvus-m-16-ef-128 | deep-image-96-angular | 364.46 | 2116.90 | 0.22 | 339.44 | 100 | 0.23 | 0.17 | 0.97 | {"params":{"ef":128}} |
Elastic | elastic-m-16-ef-128 | deep-image-96-angular | 5252.68 | 6069.67 | 1.11 | 95.90 | 100 | 1.67 | 0.92 | 0.97 | {"num_candidates":128} |
Explicación de los Parámetros:
-
Tiempo de Subida: Qdrant tiene un tiempo de subida moderado de 845.78 segundos, que es más rápido que Weaviate pero más lento que Milvus.
-
Tiempo de Indexación: El tiempo total de subida e indexación en Qdrant es de 8959.44 segundos, que es el más alto entre los motores probados.
-
Latencia: Qdrant destaca en latencia con tan solo 0.024 segundos, superando significativamente a todos los demás motores.
-
Solicitudes Por Segundo (RPS): Qdrant lidera con un RPS de 1541.86, lo que indica un mayor rendimiento.
-
Precisión: Tanto Qdrant como Milvus tienen altos puntajes de precisión, con Qdrant en 0.96 y Milvus en 0.97.
-
Latencias P95 y P99: Qdrant tiene las latencias P95 y P99 más bajas, lo que indica una mejor consistencia de rendimiento.
Ideas técnicas a partir de los datos:
-
Qdrant utiliza un gráfico HNSW (Hierarchical Navigable Small World) con un parámetro
hnsw_ef
establecido en 64, optimizando el rendimiento de búsqueda. -
Weaviate utiliza un parámetro
ef
diferente establecido en 256, lo que podría explicar su mayor latencia y menor RPS. -
Milvus también utiliza un parámetro
ef
establecido en 128 pero logra alcanzar un puntaje de precisión más alto de 0.97.
Según los datos, Qdrant muestra un rendimiento sólido en términos de latencia y rendimiento (RPS), aunque lleva más tiempo para cargar e indexar. Su alto puntaje de precisión también lo convierte en una opción confiable para tareas de búsqueda de similitud.
Cómo instalar Qdrant: Una guía completa
Instalando Qdrant mediante Docker
Docker es una plataforma popular para la contenerización y es una de las formas más sencillas de poner en funcionamiento Qdrant. Aquí tienes una guía paso a paso:
-
Instalar Docker: Si Docker aún no está instalado en tu máquina, descárgalo e instálalo desde el sitio web oficial.
-
Obtener la imagen de Qdrant: Abre tu terminal y ejecuta el siguiente comando para obtener la última imagen de Qdrant desde Docker Hub.
docker pull qdrant/qdrant
- Ejecutar el contenedor de Qdrant: Para iniciar un nuevo contenedor basado en la imagen obtenida, ejecuta:
docker run -p 6333:6333 qdrant/qdrant
- Verificar la instalación: Para asegurarte de que Qdrant esté en funcionamiento, abre una nueva terminal y ejecuta:
curl http://localhost:6333
Si recibes una respuesta JSON, significa que la instalación de Qdrant ha sido exitosa.
Instalando Qdrant en la nube
Qdrant Cloud ofrece un servicio administrado para aquellos que prefieren no lidiar con la infraestructura. Así es cómo puedes comenzar:
-
Registrarse: Visita el sitio web de Qdrant Cloud y crea una cuenta.
-
Crear una instancia: Sigue las instrucciones en pantalla para configurar una nueva instancia de Qdrant.
-
Claves de API: Después de crear la instancia, se te proporcionarán claves de API y puntos de conexión. Almacénalos de forma segura.
-
Probar la instancia: Utiliza las claves de API para hacer una consulta de prueba. Una respuesta exitosa significa que tu instancia en la nube está operativa.
Instalando Qdrant usando Python
Para desarrolladores de Python, Qdrant ofrece una biblioteca cliente de Python. Así es cómo instalarla:
-
Instalar Python y pip: Si aún no están instalados, descarga e instala Python y pip.
-
Instalar el cliente de Qdrant: Abre una terminal y ejecuta:
pip install qdrant-client
- Script de Python: Para interactuar con Qdrant, puedes utilizar el siguiente código de ejemplo:
from qdrant_client import QdrantClient
client = QdrantClient(host='localhost', port=6333)
Tutorial de Qdrant: Construye un sistema de preguntas y respuestas con Qdrant
Paso 1: Inicializar variables e importar bibliotecas
Antes de adentrarse en el código, inicializa las variables e importa las bibliotecas necesarias.
import openai
from qdrant_client.http.models import PointStruct
points = []
i = 1
Paso 2: Iterar a través de fragmentos de texto
Itera a través de cada fragmento de texto para generar embeddings. Los fragmentos de texto deberían haber sido creados y almacenados previamente en una lista llamada chunks
.
for chunk in chunks:
i += 1
Paso 3: Generar embeddings
Dentro del bucle, llama al modelo ada002 de OpenAI para crear embeddings para cada fragmento de texto.
response = openai.Embedding.create(
input=chunk,
model="text-embedding-ada-002"
)
embeddings = response['data'][0]['embedding']
Paso 4: Almacenar embeddings
Después de generar los embeddings, guárdalos en una lista junto con un ID y el texto original.
points.append(PointStruct(id=i, vector=embeddings, payload={"text": chunk}))
¿Por qué usar ada002?
El modelo ada002 está diseñado para capturar los matices semánticos del texto, lo que lo hace ideal para aplicaciones como búsqueda semántica o sistemas de preguntas y respuestas. Toma un fragmento de texto como entrada y produce un vector numérico que encapsula el significado de ese texto.
Paso 5: Inicializar el cliente de Qdrant
Primero, inicializa el cliente de Qdrant con el host y la clave de API adecuados.
from qdrant_client import QdrantClient
qdrant_client = QdrantClient(
host="<HOSTNAME>",
api_key="<API_KEY>",
)
Paso 6: Crear o recrear una colección
Crea una nueva colección en Qdrant para almacenar los embeddings. Si la colección ya existe, puedes recrearla.
qdrant_client.recreate_collection(
collection_name="mycollection",
vectors_config=models.VectorParams(size=1536, distance=models.Distance.COSINE),
)
Paso 7: Indexar embeddings
Ahora, indexa los embeddings en la colección que acabas de crear.
operation_info = qdrant_client.upsert(
collection_name="mycollection",
wait=True,
points=points
)
¿Por qué usar Qdrant para la indexación?
Qdrant ofrece un servicio sólido y listo para la producción, adaptado para el soporte extendido de filtrado. Su API es conveniente para almacenar, buscar y administrar puntos, que en este caso son los embeddings. Al indexar los embeddings en Qdrant, más adelante puedes realizar búsquedas de similitud eficientes en función de la entrada del usuario.
Conclusión
En resumen, el análisis basado en datos revela que Qdrant sobresale en las métricas clave de rendimiento como latencia, RPS y precisión. Aunque puede tardar más en cargar e indexar datos, el compromiso es un motor de alto rendimiento y baja latencia que ofrece resultados precisos. Estas cualidades hacen de Qdrant una opción convincente para las organizaciones que priorizan el rendimiento de búsqueda y la precisión de resultados en sus requisitos de motor de búsqueda vectorial.
Preguntas frecuentes (FAQs)
- ¿Qué hace que Qdrant se destaque en términos de latencia y RPS?
Qdrant emplea un grafo optimizado de Navegación Jerárquica Pequeño Mundo (HNSW, por sus siglas en inglés) para la búsqueda, lo cual contribuye a su baja latencia y alta RPS. Los parámetros del motor, en particular el hnsw_ef
establecido en 64, se ajustan de manera óptima para lograr este rendimiento.
- ¿Por qué Qdrant tarda más en la carga de datos e indexación?
El tiempo extendido en la carga de datos e indexación en Qdrant es un compromiso por su alto rendimiento en las consultas de búsqueda. El motor se centra en crear una estructura de índice optimizada que, aunque consume tiempo, produce búsquedas más rápidas y precisas en el futuro.
- ¿Cómo se compara la precisión de Qdrant con otros motores?
Qdrant tiene una puntuación de precisión alta de 0.96, lo cual es comparable a Milvus con 0.97. Esto indica que Qdrant es altamente confiable para tareas de búsqueda de similitud, devolviendo resultados precisos la mayoría de las veces.
- ¿Es Qdrant adecuado para implementaciones a gran escala?
Dada su alta RPS y baja latencia, Qdrant es adecuado para implementaciones a gran escala donde la alta capacidad de procesamiento y los tiempos de respuesta rápidos son críticos. Sin embargo, las organizaciones deben tener en cuenta los tiempos prolongados de carga y indexación al planificar su canal de datos.
¿Quieres conocer las últimas noticias de LLM? ¡Consulta la última tabla de clasificación de LLM!