O que é o Qdrant? O Guia Definitivo para Entender Este Motor de Busca por Vetor
Published on
Você já ouviu falar sobre motores de busca por vetores, mas já se perguntou o que faz um deles se destacar dos demais? Conheça o Qdrant, uma inovação no campo da pesquisa de dados em alta dimensão. Este artigo tem como objetivo desmistificar o que é o Qdrant, como ele funciona e por que você deveria se importar.
Independentemente de você ser um cientista de dados, um desenvolvedor ou alguém interessado nas últimas inovações em tecnologia de busca, este guia é para você. Vamos mergulhar nos aspectos técnicos, compará-lo com outros motores como o Faiss e até mesmo orientá-lo na instalação e uso. Então, vamos lá!
Quer ficar por dentro das últimas notícias da LLM? Confira o LLM leaderboard mais recente!
O que é o Qdrant?
O que é o Qdrant em Termos Técnicos?
O Qdrant é um motor de busca por vetores de código aberto projetado para lidar com dados em alta dimensão. Ele utiliza algoritmos avançados como o Hierarchical Navigable Small World (HNSW) e a Quantização de Produto. Esses algoritmos o tornam incrivelmente eficiente na indexação e busca de vetores, mesmo ao lidar com conjuntos de dados enormes.
-
Hierarchical Navigable Small World (HNSW): Esses são usados para indexação eficiente. Eles permitem que o Qdrant percorra dados em alta dimensão rapidamente, reduzindo o tempo necessário para encontrar resultados relevantes.
-
Quantização de Produto: Essa é uma técnica usada para comprimir vetores. Ela garante que o motor seja não apenas rápido, mas também eficiente em termos de memória.
O que é o Qdrant em Termos Simples?
Pense no Qdrant como um organizador superinteligente para o seu conteúdo digital. Vamos supor que você tenha uma grande coleção de fotos, artigos ou até mesmo músicas. Encontrar algo específico nesse montante pode ser como procurar uma agulha no palheiro. O Qdrant usa sua "inteligência" para encontrar rapidamente o que você procura. É como ter um assistente pessoal que conhece sua coleção tão bem quanto você, talvez até melhor!
O que Torna o Qdrant Único
-
Hierarchical Navigable Small World (HNSW): Esses gráficos são uma forma de estrutura de dados que permite ao Qdrant indexar dados em alta dimensão de forma eficiente. Eles reduzem a complexidade computacional, tornando o processo de busca mais rápido.
-
Quantização de Produto: Essa técnica comprime os vetores no banco de dados. É como compactar um arquivo; o conteúdo é o mesmo, mas ocupa menos espaço. Isso é crucial para lidar com conjuntos de dados grandes sem comprometer a velocidade.
-
Busca Semântica: Essa é a capacidade de entender o contexto e nuances de uma consulta.
Os motores de busca tradicionais estão limitados a buscas baseadas em palavras-chave. O Qdrant, no entanto, utiliza busca semântica. Isso significa que ele compreende o significado por trás da sua consulta, não apenas as palavras que você usa.
Por exemplo, se você pesquisar por "Apple" (maçã em inglês), uma busca baseada em palavras-chave pode trazer resultados relacionados à fruta e à empresa de tecnologia. Uma busca semântica entenderia o contexto e forneceria resultados mais relevantes.
O Qdrant se destaca de várias maneiras:
-
Código Aberto: Ser de código aberto significa que qualquer pessoa pode contribuir para o seu desenvolvimento. Isso cria um ambiente impulsionado pela comunidade que promove a inovação e a transparência.
-
Eficiência: O Qdrant foi projetado para fornecer resultados de pesquisa rápidos e precisos. Seu uso de algoritmos avançados garante que ele se destaque em termos de velocidade e confiabilidade.
Qdrant vs Faiss: Comparação de Referência
No espaço de motores de busca por vetores, o Qdrant e o Faiss muitas vezes são avaliados lado a lado. No entanto, a ausência de uma referência unificada tornou difícil fazer comparações claras. Esta análise tem como objetivo fornecer uma perspectiva técnica e baseada em dados sobre como o Qdrant se compara ao Faiss e a outros concorrentes.
A tabela a seguir apresenta as principais métricas de desempenho de um teste de referência. O teste foi realizado no conjunto de dados deep-image-96-angular
, com cada motor configurado de forma diferente.
Motor | Configuração | Conjunto de Dados | Tempo de Upload (s) | Tempo de Upload + Indexação (s) | P95 (s) | RPS | Paralelo | P99 (s) | Latência (s) | Precisão | Parâmetros do 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} |
Parâmetros Explicados:
-
Tempo de Upload: O Qdrant possui um tempo moderado de upload de 845,78 segundos, que é mais rápido do que o Weaviate, mas mais lento do que o Milvus.
-
Tempo de Indexação: O tempo total de upload e indexação no Qdrant é de 8959,44 segundos, o que é o maior entre os motores testados.
-
Latência: O Qdrant se destaca na latência com apenas 0,024 segundos, superando significativamente todos os outros motores.
-
Requisições por Segundo (RPS): O Qdrant lidera com um RPS de 1541,86, indicando maior taxa de transferência.
-
Precisão: Tanto a Qdrant quanto a Milvus têm altas pontuações de precisão, com a Qdrant em 0,96 e a Milvus em 0,97.
-
Latências P95 e P99: A Qdrant tem as menores latências P95 e P99, indicando melhor consistência de desempenho.
Percepções técnicas dos dados:
-
A Qdrant usa um grafo HNSW (Hierarchical Navigable Small World) com um parâmetro
hnsw_ef
definido como 64, otimizando o desempenho da pesquisa. -
O Weaviate usa um parâmetro
ef
diferente, definido como 256, o que pode explicar sua latência mais alta e RPS mais baixa. -
A Milvus também usa um parâmetro
ef
definido como 128, mas consegue alcançar uma pontuação de precisão mais alta, de 0,97.
Com base nos dados, a Qdrant apresenta um desempenho sólido em termos de latência e throughput (RPS), embora leve mais tempo para upload e indexação. Sua pontuação de precisão alta também a torna uma escolha confiável para tarefas de pesquisa de similaridade.
Como Instalar o Qdrant: Um Guia Completo
Instalando o Qdrant Usando o Docker
O Docker é uma plataforma popular para contêineres e é uma das maneiras mais fáceis de instalar e executar o Qdrant. Aqui está um guia passo a passo:
-
Instalar o Docker: Se o Docker ainda não estiver instalado em sua máquina, faça o download e instale-o no site oficial.
-
Baixar a Imagem do Qdrant: Abra o terminal e execute o seguinte comando para baixar a última imagem do Qdrant do Docker Hub.
docker pull qdrant/qdrant
- Executar um Container do Qdrant: Para iniciar um novo container baseado na imagem baixada, execute:
docker run -p 6333:6333 qdrant/qdrant
- Verificar a Instalação: Para garantir que o Qdrant esteja em execução, abra um novo terminal e execute:
curl http://localhost:6333
Se você receber uma resposta JSON, significa que a instalação do Qdrant foi bem-sucedida.
Instalando o Qdrant na Nuvem
O Qdrant Cloud oferece um serviço gerenciado para aqueles que preferem não lidar com a infraestrutura por conta própria. Veja como começar:
-
Cadastrar-se: Visite o site do Qdrant Cloud e crie uma conta.
-
Criar uma Instância: Siga as instruções na tela para configurar uma nova instância do Qdrant.
-
Chaves de API: Após a criação da instância, você receberá chaves de API e endpoints. Guarde-os com segurança.
-
Testar a Instância: Use as chaves de API para fazer uma consulta de teste. Uma resposta bem-sucedida significa que sua instância na nuvem está operacional.
Instalando o Qdrant Usando o Python
Para desenvolvedores Python, o Qdrant oferece uma biblioteca de cliente Python. Veja como instalá-la:
-
Instalar o Python e pip: Se ainda não estiverem instalados, faça o download e instale o Python e o pip.
-
Instalar o Cliente Qdrant: Abra um terminal e execute:
pip install qdrant-client
- Script Python: Para interagir com o Qdrant, você pode usar o seguinte código de exemplo:
from qdrant_client import QdrantClient
client = QdrantClient(host='localhost', port=6333)
Tutorial Qdrant: Criar um Sistema de Perguntas e Respostas com Qdrant
Passo 1: Inicializar Variáveis e Importar Bibliotecas
Antes de iniciar o código, inicialize as variáveis e importe as bibliotecas necessárias.
import openai
from qdrant_client.http.models import PointStruct
points = []
i = 1
Passo 2: Percorrer os Trechos de Texto
Itere por cada trecho de texto para gerar embeddings. Os trechos de texto devem ter sido previamente criados e armazenados em uma lista chamada chunks
.
for chunk in chunks:
i += 1
Passo 3: Gerar Embeddings
Dentro do loop, chame o modelo ada002 da OpenAI para criar embeddings para cada trecho de texto.
response = openai.Embedding.create(
input=chunk,
model="text-embedding-ada-002"
)
embeddings = response['data'][0]['embedding']
Passo 4: Armazenar os Embeddings
Após a geração dos embeddings, armazene-os em uma lista junto com um ID e o texto original.
points.append(PointStruct(id=i, vector=embeddings, payload={"text": chunk}))
Por que usar ada002?
O modelo ada002 foi projetado para capturar nuances semânticas do texto, tornando-o ideal para aplicativos como busca semântica ou sistemas de P&R. Ele recebe um trecho de texto como entrada e gera um vetor numérico que encapsula o significado do texto.
Passo 5: Inicializar o Cliente Qdrant
Primeiro, inicialize o cliente Qdrant com o host e a chave de API adequados.
from qdrant_client import QdrantClient
qdrant_client = QdrantClient(
host="<NOME_DO_HOST>",
api_key="<CHAVE_DE_API>",
)
Passo 6: Criar ou Recriar a Coleção
Crie uma nova coleção no Qdrant para armazenar os embeddings. Se a coleção já existir, você pode recriá-la.
qdrant_client.recreate_collection(
collection_name="minhacolecao",
vectors_config=models.VectorParams(size=1536, distance=models.Distance.COSINE),
)
Passo 7: Indexar os Embeddings
Agora, indexe os embeddings na coleção que você acabou de criar.
operation_info = qdrant_client.upsert(
collection_name="minhacolecao",
wait=True,
points=points
)
Por que Usar o Qdrant para Indexação?
O Qdrant oferece um serviço robusto e pronto para produção, adaptado para suporte estendido a filtragem. Sua API é conveniente para armazenar, pesquisar e gerenciar pontos, que neste caso são os embeddings. Ao indexar os embeddings no Qdrant, você pode realizar buscas de similaridade eficientes com base na entrada do usuário.
Conclusão
Em resumo, a análise baseada em dados revela que o Qdrant se destaca em métricas-chave de desempenho, como latência, RPS e precisão. Embora possa levar mais tempo para upload e indexação de dados, a compensação é um mecanismo de alto throughput e baixa latência que oferece resultados precisos. Essas características fazem do Qdrant uma escolha atraente para organizações que dão prioridade ao desempenho de pesquisa e à precisão de resultados em seus requisitos de pesquisa vetorial.
Perguntas Frequentes (FAQ)
-
O que torna o Qdrant especial em termos de latência e RPS? Qdrant utiliza um gráfico Hierárquico Navegável de Mundo Pequeno (HNSW) otimizado para pesquisa, o que contribui para sua baixa latência e alto RPS. Os parâmetros do mecanismo, especialmente o
hnsw_ef
definido como 64, são ajustados para alcançar esse desempenho. -
Por que o Qdrant leva mais tempo para carregar dados e indexar?
O tempo estendido para carga de dados e indexação no Qdrant é uma compensação por seu alto desempenho em consultas de pesquisa. O mecanismo se concentra em criar uma estrutura de índice otimizada, que, embora consuma tempo, resulta em pesquisas mais rápidas e precisas posteriormente.
- Como a precisão do Qdrant se compara a outros mecanismos?
O Qdrant tem uma pontuação de precisão alta de 0,96, que é comparável ao Milvus com 0,97. Isso indica que o Qdrant é altamente confiável para tarefas de busca de similaridade, retornando resultados precisos na maioria das vezes.
- O Qdrant é adequado para implantações em larga escala?
Com seu alto RPS e baixa latência, o Qdrant é adequado para implantações em larga escala, onde o alto rendimento e os tempos de resposta rápidos são críticos. No entanto, as organizações devem considerar os tempos mais longos de carga e indexação ao planejar seu pipeline de dados.
Quer saber as últimas notícias do LLM? Confira o mais recente LLM leaderboard!