Sistema de busca híbrida otimizado para GPU RTX 4000, combinando embeddings densos multilinguais e esparsos para máxima precisão.
- Busca Híbrida: Combina embeddings densos (semânticos) e esparsos (léxicos)
- GPU Otimizado: Configurado para RTX 4000 com 8GB VRAM
- Modelos de Alta Qualidade:
- Dense:
intfloat/multilingual-e5-large
(suporta 100+ idiomas) - Sparse:
prithivida/Splade_PP_en_v1
(otimizado para precisão)
- Dense:
- API REST: FastAPI com documentação automática
- Integração n8n: Webhooks prontos para automação
- Docker Ready: Deploy fácil no Easypanel
- Docker com suporte NVIDIA GPU
- NVIDIA Driver >= 525.60.13
- CUDA >= 12.0
- 8GB+ RAM
- 10GB+ espaço em disco
git clone https://github.com/seu-usuario/qdrant-hybrid-search.git
cd qdrant-hybrid-search
cp .env.example .env
# Edite .env com suas configurações
# Build da imagem
docker-compose build
# Iniciar serviços
docker-compose up -d
# Ver logs
docker-compose logs -f
GET /health
POST /index
Content-Type: application/json
Authorization: Bearer YOUR_API_KEY
{
"documents": [
{
"id": "doc1",
"text": "Seu texto aqui",
"metadata": {"category": "example"}
}
]
}
POST /search
Content-Type: application/json
Authorization: Bearer YOUR_API_KEY
{
"query": "sua consulta de busca",
"mode": "hybrid", # ou "dense" ou "sparse"
"limit": 10
}
GET /collections
Authorization: Bearer YOUR_API_KEY
- No n8n, adicione um node "Webhook"
- Configure o método como POST
- URL:
http://seu-servidor:8000/webhook
- Body:
{
"action": "search",
"data": {
"query": "busca texto",
"limit": 5
}
}
{
"action": "index",
"data": {
"documents": [
{
"text": "Documento para indexar",
"metadata": {}
}
]
}
}
# Use este docker-compose.production.yml no Easypanel
image: ghcr.io/work-flow-manager/qdrant-hybridsearch:latest
- Acesse o Easypanel em
http://seu-servidor:3000
- Crie um novo projeto
- Escolha "Docker Compose"
- Cole o conteúdo do
docker-compose.yml
- Configure as variáveis de ambiente
- Deploy!
# Na pasta do projeto
easypanel deploy --compose docker-compose.yml
Com RTX 4000 (8GB VRAM):
- Indexação: ~500 docs/segundo
- Busca: <50ms latência média
- Batch Size Ótimo: 32 documentos
- Uso de VRAM: ~3-4GB com modelos carregados
Combina resultados densos e esparsos usando Reciprocal Rank Fusion (RRF). Melhor para: Consultas gerais com alta precisão.
Usa apenas embeddings semânticos multilinguais. Melhor para: Busca por significado, cross-lingual.
Usa apenas embeddings léxicos esparsos. Melhor para: Correspondência exata de termos, nomes próprios.
- API Key obrigatória para endpoints sensíveis
- CORS configurável
- Rate limiting disponível
- Logs estruturados em JSON
Variável | Descrição | Padrão |
---|---|---|
API_KEY |
Chave de API para autenticação | - |
USE_GPU |
Habilitar aceleração GPU | true |
BATCH_SIZE |
Tamanho do batch para GPU | 32 |
QDRANT_HOST |
Host do Qdrant | qdrant |
N8N_WEBHOOK_ENABLED |
Habilitar webhooks | true |
# Verificar NVIDIA drivers
nvidia-smi
# Verificar Docker GPU support
docker run --rm --gpus all nvidia/cuda:12.1.0-base-ubuntu22.04 nvidia-smi
- Reduza
BATCH_SIZE
no.env
- Aumente
MAX_SEQUENCE_LENGTH
gradualmente
# Limpar cache e re-download
docker-compose down
rm -rf models/*
docker-compose up --build
Após iniciar, acesse:
- Swagger UI:
http://localhost:8000/docs
- ReDoc:
http://localhost:8000/redoc
Pull requests são bem-vindos! Para mudanças maiores, abra uma issue primeiro.
MIT
- Issues: GitHub Issues
- Email: seu-email@example.com
- Discord: [Link do Discord]