Pressione Esc para fechar

Indexing - Qdrant

← Voltar para o Dia 4: RAG: finalmente

Indexing Qdrant

O que é

Qdrant é um banco de dados vetorial desenvolvido para armazenar, indexar e pesquisar vetores, sendo utilizado em aplicações como busca semântica, sistemas de recomendação e RAG.

No contexto de RAG, o Qdrant recebe os embeddings gerados a partir dos chunks, armazena esses vetores junto com seus metadados e permite encontrar os vetores mais semelhantes quando uma nova consulta é realizada.

O fluxo é:

Documentos
   ↓
Parsing
   ↓
Cleaning
   ↓
Chunking
   ↓
Embedding Model
   ↓
Embeddings + Metadata
   ↓
Qdrant
   ↓
Vector Search
   ↓
Chunks relevantes
   ↓
LLM

Assim como Pinecone, Chroma e outras soluções estudadas, o Qdrant pode atuar como uma camada de armazenamento e recuperação vetorial dentro da arquitetura RAG.

Como funciona

Imagine que cada chunk de um documento seja transformado em um ponto dentro de um enorme espaço matemático.

O Embedding Model cria esses pontos:

Chunk A → [0.21, -0.73, 0.45, ...]
Chunk B → [0.68,  0.14, -0.31, ...]
Chunk C → [0.19, -0.70, 0.48, ...]

O Qdrant organiza esses vetores em uma estrutura que permite realizar buscas por proximidade.

Quando chega uma pergunta, ela também é transformada em um vetor:

Pergunta
   ↓
Embedding Model
   ↓
Vetor da consulta
   ↓
Qdrant
   ↓
Vetores mais próximos

O sistema procura os pontos mais próximos do vetor da pergunta e retorna os registros correspondentes.

O Qdrant também associa os vetores a payloads, que são informações adicionais armazenadas junto aos vetores. Na prática, esses dados funcionam como os metadados dos chunks.

Por exemplo:

Vector:
[0.21, -0.73, 0.45, ...]

Payload:
{
  "documento": "politica_ferias.pdf",
  "pagina": 12,
  "seção": "Férias",
  "ano": 2026
}

Isso permite combinar busca vetorial com filtros estruturados.

Um exemplo

Imagine uma empresa com milhares de documentos internos.

Durante a ingestão, um documento é dividido em chunks:

Documento
   ↓
Chunking
   ↓
Chunk 1
Chunk 2
Chunk 3
...

Cada chunk passa pelo Embedding Model:

Chunk 1 → Vetor 1
Chunk 2 → Vetor 2
Chunk 3 → Vetor 3

Esses vetores podem ser armazenados no Qdrant junto com os dados necessários para identificar e recuperar o conteúdo original.

Imagine que o usuário pergunte:

"Qual é o prazo para solicitar férias?"

A pergunta é transformada em um vetor:

Pergunta
   ↓
Embedding Model
   ↓
Query Vector

O Qdrant pesquisa os vetores mais próximos:

Query Vector
      ↓
   Qdrant
      ↓
┌──────────────────────┐
│ Chunk 42  → próximo  │
│ Chunk 91  → próximo  │
│ Chunk 17  → próximo  │
└──────────────────────┘

O sistema pode então recuperar o conteúdo desses chunks e utilizá-los como contexto para o LLM.

Também podemos restringir a busca usando os metadados:

Busca semântica:
"Qual é o prazo para solicitar férias?"

Filtro:
seção = "Férias"
ano = 2026

Isso reduz o universo de informações consideradas pelo retrieval.

Por que é importante

O Qdrant é importante porque oferece uma infraestrutura especializada para busca vetorial com filtros e metadados, permitindo construir sistemas de recuperação semântica em diferentes escalas.

Um de seus conceitos importantes é a organização dos dados em collections. Uma collection pode ser entendida, de forma simplificada, como um conjunto de pontos vetoriais que compartilham determinadas características de configuração.

Cada ponto pode conter:

Point
├── ID
├── Vector
└── Payload

Isso ajuda a separar o vetor em si das informações associadas a ele.

A relação com as tecnologias estudadas anteriormente fica assim:

FAISS
→ biblioteca focada em busca e indexação vetorial

Chroma
→ solução orientada a aplicações com armazenamento e busca vetorial

pgvector
→ extensão do PostgreSQL para dados e busca vetorial

Pinecone
→ plataforma especializada em banco de dados vetorial

Qdrant
→ banco de dados vetorial com busca por similaridade
  e filtragem baseada em payloads

O Qdrant também utiliza estruturas especializadas para acelerar a busca por vizinhos próximos, incluindo HNSW, conceito que se conecta diretamente ao próximo nível de Indexing e à ideia de Approximate Nearest Neighbor.

Assim, a arquitetura pode ser resumida:

Chunking
   ↓
Embedding Model
   ↓
Vector Embedding
   ↓
Qdrant
   ↓
Indexing
   ↓
Vector Search
   ↓
Metadata Filtering
   ↓
Retrieval
   ↓
Contexto
   ↓
LLM

O ponto central é: Qdrant é um banco de dados vetorial que armazena embeddings e informações associadas, utilizando índices de busca vetorial para encontrar rapidamente os chunks semanticamente mais relevantes para uma consulta.

link de compartilhamento