Com o avanço dos Large Language Models (LLMs), a forma como armazenamos e buscamos informações mudou. Não buscamos mais apenas por palavras-chave exatas, mas pelo significado por trás delas. É aqui que entra o Qdrant, um motor de busca vetorial projetado para lidar com embeddings de alta dimensionalidade.
Neste artigo, vamos passar por todas as etapas para colocar o seu banco de dados vetorial para funcionar.
1. Como Criar o Banco de Dados (Setup)
A maneira mais eficiente e profissional de rodar o Qdrant localmente ou em produção é via Docker. Isso garante que o ambiente seja isolado e fácil de configurar.
Para iniciar uma instância do Qdrant, utilize o seguinte comando no seu terminal:
___________________________________________________
bash
docker run -p 6333:6333 -p 6334:6334 \
-v $(pwd)/qdrant_storage:/qdrant/storage:z \
qdrant/qdrant
__________________________________________________
Porta 6333: Interface HTTP (API REST).
Porta 6334: Interface gRPC (para conexões de alta performance).
Volume: O parâmetro `-v` garante que seus dados sejam salvos na pasta local `qdrant_storage` e não se percam ao desligar o container.
2. Preparando os Arquivos para o Banco
Um banco de dados vetorial não armazena apenas "texto puro" de forma eficiente para busca; ele armazena **vetores** (listas de números que representam o significado do texto).
O Processo de Embedding
Antes de enviar seus arquivos (PDFs, TXTs ou JSONs) para o Qdrant, você deve:
1. Extrair o texto: Ler o conteúdo dos seus documentos.
2. Fragmentar (Chunking): Dividir textos longos em pedaços menores (ex: 500 caracteres) para que a busca seja mais precisa.
3. Gerar Vetores: Passar esses pedaços por um modelo de embedding (como os da OpenAI, Gemini ou HuggingFace).
Exemplo de estrutura de dados preparada:
Payload: O texto original e metadados (ex: nome do arquivo, página).
Vetor: Uma lista como `[0.12, -0.05, 0.88, ...]`.
3. Ingestão de Dados no Qdrant
Agora que o banco está rodando e os dados estão preparados, vamos usar a biblioteca `qdrant-client` em Python para realizar a ingestão.
Passo 1: Conexão e Criação da Coleção
Uma "Coleção" no Qdrant é equivalente a uma tabela em um banco SQL.
_____________________________________________________________________________
python
from qdrant_client import QdrantClient
from qdrant_client.models import Distance, VectorParams
client = QdrantClient("localhost", port=6333)
# Criando a coleção (ajuste a 'size' de acordo com seu modelo de embedding)
client.recreate_collection(
collection_name="meu_projeto_ia",
vectors_config=VectorParams(size=1536, distance=Distance.COSINE),
)
____________________________________________________________________________
Passo 2: O processo de "Upsert"
O termo Upsert significa que o sistema irá inserir o dado ou atualizá-lo caso ele já exista.
____________________________________________________________________________________
python
from qdrant_client.models import PointStruct
# Exemplo de dados para ingestão
points = [
PointStruct(
id=1,
vector=[0.05, 0.61, 0.76, ...], # Seu vetor gerado pelo modelo
payload={"documento": "relatorio_01.pdf", "texto": "Conteúdo extraído aqui..."}
),
# Adicione mais pontos conforme necessário
]
client.upsert(
collection_name="meu_projeto_ia",
points=points
)
_____________________________________________________________________________________
Conclusão
O Qdrant transforma a maneira como lidamos com dados não estruturados. Ao seguir esses passos — subir o container, preparar seus embeddings e realizar o upsert — você terá uma base sólida para criar assistentes inteligentes, sistemas de recomendação ou ferramentas de análise de documentos.
O próximo passo agora é realizar buscas semânticas para ver a mágica acontecer.