Capítulo 1: Introdução aos Armazenamentos Vetoriais
O Que Torna os Bancos de Dados Vetoriais Especiais?
Bancos de dados tradicionais são otimizados para buscas exatas:
SELECT * FROM products WHERE id = 123;
Bancos de dados vetoriais são otimizados para busca por similaridade:
# Encontrar os 10 vetores mais similares ao query_vector
results = vector_db.search(query_vector, top_k=10)
Algoritmos de Indexação
HNSW (Hierarchical Navigable Small World)
O algoritmo mais popular para busca vetorial:
# Parâmetros do HNSW
index = create_hnsw_index(
vectors=embeddings,
M=16, # Número de conexões por nó
ef_construction=200, # Qualidade na construção
ef_search=50 # Qualidade na consulta
)
Características:
- Excelente velocidade de consulta
- Alto uso de memória
- Melhor para a maioria dos casos
IVF (Inverted File Index)
Agrupa vetores para busca mais rápida:
# Parâmetros do IVF
index = create_ivf_index(
vectors=embeddings,
nlist=100, # Número de clusters
nprobe=10 # Clusters a serem buscados
)
Características:
- Menor uso de memória que o HNSW
- Requer treinamento
- Bom para grandes volumes de dados
Flat Index
Busca exata por força bruta:
# Sem parâmetros - busca exata
index = create_flat_index(vectors=embeddings)
Características:
- Precisão perfeita
- Busca mais lenta
- Bom para conjuntos de dados pequenos
Comparação de Algoritmos
| Algoritmo | Velocidade | Memória | Precisão | Melhor Uso |
|---|---|---|---|---|
| HNSW | Rápido | Alta | ~95% | Maioria dos casos |
| IVF | Média | Média | ~90% | Grande escala |
| Flat | Lento | Baixa | 100% | Dados pequenos |
Armazenamento de Metadados
Bancos de dados vetoriais armazenam metadados junto aos vetores:
vectorstore.add(
vectors=[embedding],
documents=["Documento de política da empresa"],
metadata=[{
"source": "handbook.pdf",
"page": 15,
"department": "RH",
"date": "2024-01-15"
}]
)
# Filtrar por metadados durante a busca
results = vectorstore.search(
query_vector,
filter={"department": "RH"},
top_k=5
)
Principais Funcionalidades a Considerar
| Funcionalidade | Descrição |
|---|---|
| Filtragem | Consulta por metadados |
| Atualizações | Modificar vetores existentes |
| Exclusão | Remover vetores |
| Namespaces | Isolar dados |
| Replicação | Alta disponibilidade |
| Sharding | Escalabilidade horizontal |
Resumo
- Bancos de dados vetoriais permitem busca por similaridade
- HNSW é o algoritmo mais comum
- Filtragem por metadados é essencial para produção
- Escolha de acordo com escala e requisitos
Próximos Passos
Continue para Capítulo 2: Opções Populares.