Olá, pessoal — tudo bem?
Estou estudando o material da Aula 2 e 3. Gostaria de discutir alguns pontos ponto que me deixaram em dúvida: a influência do número de dimensões (n) dos embeddings na organização do espaço vetorial e na qualidade dos retrievers, e como comparar modelos que geram embeddings com dimensões muito distintas (ex.: 384 vs 1024 vs 3072).
Contexto rápido (do que vimos na aula)
- Trabalhamos com RAG, índices vetoriais (flat e HNSW) e bases (ChromaDB, FAISS, Pinecone).
- Falamos sobre normalização L2 e sua importância para similaridade por cosseno.
- Vimos trade-offs entre modelos proprietários vs. open-source, fine-tuning, versionamento de embeddings e parâmetros do índice HNSW (p.ex.
M
vizinhos).
O problema / dúvidas centrais
Qual é a influência prática do
n
(dimensionalidade) na organização do espaço?- Modelos com maior
n
carregam mais “capacidade” semântica, mas também podem aumentar ruído, custo de armazenamento e latência. Gostaria de entender melhor: a dimensão maior costuma melhorar recall/precisão de retrieval de forma consistente, ou há um ponto de retorno decrescente / overfitting semântico?
- Modelos com maior
Como comparar modelos com dimensões diferentes?
- Quando reduzo cada embedding via PCA (ou UMAP) separadamente e ploto tudo junto, a comparação perde fidelidade porque a transformação é local ao modelo.
- Pergunta: qual a forma correta de produzir uma visualização ou comparação justa entre espaços com
n
distintos? Usar PCA por modelo e mesclar os 3D resultantes é válido? Devo alinhar vetores (Procrustes/CCA) antes da projeção? Ou devo comparar apenas via métricas (recall@k, MRR) sobre o mesmo conjunto de queries/documentos?
Fidelidade do UMAP/PCA para comparação entre modelos
- UMAP preserva estrutura local; PCA preserva variância global. Ambos são transformações não-lineares / lineares que podem distorcer relações relativas entre espaços diferentes.
- Como interpretar corretamente plots 2D/3D (UMAP/PCA) quando os modelos têm
n
diferentes? Quais cuidados evitar (ex.: concatenar embeddings brutos com dimensões diferentes causa erro; reduzir por modelo e concatenar gera escalas distintas)?
Procurando um “ponto de equilíbrio”
- Como achar o trade-off prático entre custo/latência e qualidade (ex.: MiniLM 384 vs BGE 1024 vs Gemini 3072)? Que métricas e procedimentos vocês usam (recall@k, MRR, latência/GB por milhão de vetores, custo por query)?
Se alguém já enfrentou essas dúvidas na prática, agradeço muito se puder compartilhar percepções, referências ou heurísticas que usem para comparar espaços e escolher a dimensionalidade/ modelo adequados ao projeto.
Obrigado desde já!