Porque é que várias coleções RAG competem pela RAM num servidor doméstico?

Eva Wong é a Redatora Técnica e e entusiasta residente na ZimaSpace. Uma geek de longa data com paixão por homelabs e software de código aberto, ela é especialista em traduzir conceitos técnicos complexos em guias acessíveis e práticos . Eva acredita que o auto-hospedagem deve ser divertida, não intimidante. Através dos seus tutoriais, ela capacita a comunidade adesmistificar configurações de hardware , desde a construção do seu primeiro NAS até dominar os contêineres Docker., from building their first NAS to mastering Docker containers.

Várias coleções RAG competem pela RAM porque cada coleção mantém os seus próprios vetores, grafo de pesquisa, índices de metadados, caches e conjunto de dados ativo.

Um servidor doméstico pode separar documentos familiares, manuais técnicos, metadados de fotografias, notas de trabalho e histórico da casa inteligente em diferentes coleções RAG, por motivos de privacidade ou para obter uma recuperação mais organizada. Os ficheiros de origem podem caber confortavelmente no disco, enquanto a camada de pesquisa consome muito mais memória do que o esperado. Cada coleção pode carregar um índice de vizinhos mais próximos aproximados, filtros de payload, metadados de segmentos, páginas acedidas recentemente e buffers de consultas; os serviços de criação de embeddings e de reclassificação acrescentam os seus próprios modelos residentes junto dessas coleções.

Cada coleção cria uma estrutura de pesquisa separada

Uma coleção de vetores não é apenas uma pasta de embeddings. Os motores de pesquisa mantêm normalmente os valores dos vetores e um grafo de vizinhança, ou outra estrutura de pesquisa aproximada, que ajuda a evitar a análise de todos os registos.

A Weaviate identifica os vetores e os grafos HNSW como dois dos principais consumidores de memória num índice de vizinhos mais próximos aproximados mantido em memória.

Criar cinco coleções pode, por isso, significar cinco índices endereçáveis de forma independente, mesmo quando partilham o mesmo modelo de embeddings e estão no mesmo processo de base de dados. A separação melhora as políticas e a manutenção apenas quando o benefício na recuperação justifica a multiplicação dos conjuntos de trabalho.

As dimensões e a sobrecarga do índice multiplicam a base

A memória dos vetores em bruto aumenta com o número de vetores, as dimensões dos embeddings e os bytes por componente. O índice pesquisável acrescenta ligações do grafo, identificadores, alinhamento, metadados e sobrecarga do alocador, para além dessa matriz em bruto.

A Milvus disponibiliza uma fórmula para a memória dos índices vetoriais e observa que uma implementação HNSW pode exigir substancialmente mais memória do que os vetores não indexados, por si só.

Estime cada coleção separadamente e some os valores. Uma coleção com menos documentos pode continuar a ser dispendiosa quando utiliza embeddings de muitas dimensões, componentes de precisão total ou um grafo ajustado para uma recuperação elevada.

A conectividade do grafo troca RAM por recuperação e velocidade

O HNSW liga cada vetor a nós vizinhos. Um maior número de ligações pode melhorar a navegação e a recuperação, mas cada aresta armazenada consome memória e torna a construção do índice mais dispendiosa.

A Redis explica como a conectividade do grafo é controlada por parâmetros que estabelecem um compromisso entre o tamanho do índice, a recuperação e o comportamento da pesquisa.

Diferentes coleções podem herdar os mesmos valores predefinidos agressivos, mesmo quando apenas uma delas precisa desses valores. Utilize um perfil de menor consumo de memória para arquivos pequenos ou coleções com pouca concorrência, em vez de ajustar todos os índices para a carga de pesquisa mais exigente.

-15% OFF

O mapeamento de memória transfere a pressão para a cache de páginas partilhada

Colocar vetores ou dados do grafo no disco através de mapeamento de memória pode reduzir a alocação permanentemente residente do processo. Isso não liberta as páginas ativas; o sistema operativo continua a colocar em cache, na RAM, os blocos de índice acedidos recentemente.

A comparação de memória da Qdrant mostra como os vetores mapeados em memória reduzem a utilização de RAM medida, introduzindo, ao mesmo tempo, um compromisso de latência à medida que os dados são obtidos através do armazenamento.

Quando as consultas alternam entre várias coleções, as respetivas páginas quentes podem expulsar-se mutuamente da cache de páginas. A mesma pressão pode deslocar dados do sistema de ficheiros utilizados por aplicações de fotografias, contentores, bases de dados e partilhas de rede no servidor doméstico.

Os índices maiores do que a RAM pagam com mais E/S de armazenamento

Um índice pode exceder a memória física e continuar a ser consultável, mas uma parte maior de cada percurso de pesquisa terá de ser lida a partir do SSD. O acesso aleatório e as falhas de cache passam então a fazer parte da latência de recuperação.

A PlanetScale descreve índices vetoriais maiores do que a RAM que mantêm em memória uma estrutura de navegação mais pequena, transferindo mais listas de ocorrências ou dados vetoriais para o armazenamento.

Esta pode ser uma boa solução de compromisso para um servidor doméstico quando as pesquisas são ocasionais e o índice está num SSD rápido. É uma suposição inadequada quando várias coleções recebem consultas simultâneas ou partilham um disco lento com bases de dados de aplicações e cargas de trabalho multimédia.

O armazenamento duplicado e os serviços separados acrescentam cópias ocultas

O mesmo embedding pode existir num arquivo de documentos, num índice vetorial, numa cache da aplicação e numa coleção de cópia de segurança ou de preparação. Os contentores separados também podem carregar modelos de embeddings ou de reclassificação idênticos em espaços de endereçamento de processos diferentes.

A análise da Memgraph sobre como evitar o armazenamento duplicado de vetores mostra por que motivo a arquitetura do índice altera o número de cópias em memória mantidas para um único registo pesquisável.

Por isso, o número de coleções é apenas uma parte do orçamento. Faça um inventário dos vetores duplicados, das versões antigas dos índices, das coleções temporárias de reconstrução, dos processos dos modelos e dos resultados colocados em cache antes de concluir que a base de dados vetorial é a única responsável.

Consolide as coleções de acordo com as políticas de acesso e a carga de trabalho

Utilize coleções separadas quando estas precisarem de permissões, dimensões de embeddings, políticas de retenção, calendários de atualização ou limites de falha diferentes. A simples existência de etiquetas temáticas nem sempre exige um índice físico separado.

Uma coleção partilhada com metadados de inquilino, proprietário, origem ou categoria pode reutilizar um único índice, enquanto os filtros mantêm a recuperação dentro do âmbito pretendido. Teste a recuperação filtrada antes da consolidação, porque uma coleção mista demasiado grande pode introduzir os seus próprios custos de ordenação e manutenção.

A explicação da ZimaSpace sobre o motivo pelo qual um runtime de IA local reserva memória ajuda a interpretar a monitorização: as páginas retidas e as caches podem ser estado de trabalho reutilizável, e não uma fuga, mas continuam a competir com o resto do servidor.

Defina um orçamento de RAM antes de adicionar outra coleção

Registe o número de vetores, as dimensões, a precisão, o tipo de índice, as definições do grafo, o tamanho do índice de metadados, a memória residente após o aquecimento e a memória máxima durante a ingestão e as consultas simultâneas. Meça toda a infraestrutura, não apenas o painel da base de dados.

Deixe margem para o sistema operativo, a cache de páginas, os contentores, as bases de dados, a partilha de ficheiros e o modelo de linguagem local. Se a atividade de swap ou as falhas de página principais aumentarem quando uma segunda coleção é consultada, os conjuntos de trabalho já não cabem confortavelmente em conjunto.

Reduza as dimensões ou a precisão quando os testes de recuperação o permitirem, diminua a conectividade do grafo, transfira os vetores frios para armazenamento mapeado em memória, limite a concorrência das consultas, descarregue os modelos não utilizados e remova as coleções substituídas antes de comprar mais RAM.

FAQ

Uma única coleção RAG grande é sempre mais eficiente em termos de memória?

Muitas vezes evita a duplicação da sobrecarga dos índices, mas pode exigir uma filtragem mais complexa e reduzir a qualidade da recuperação quando conteúdos não relacionados partilham o mesmo espaço de ordenação. Consolide apenas depois de testar os limites de acesso e a recuperação.

O mapeamento de memória elimina a competição pela RAM?

Não. Reduz as alocações permanentemente residentes, mas as páginas ativas dos índices continuam a ocupar a cache de páginas do sistema operativo e podem expulsar páginas utilizadas por outras coleções e aplicações.

Porque é que a RAM continua elevada depois de terminar uma consulta RAG?

A base de dados, o alocador, o sistema operativo ou o runtime do modelo podem manter páginas e buffers reutilizáveis. Verifique se a memória é reutilizada em consultas posteriores e se surgem pressão de swap ou de falta de memória antes de a classificar como uma fuga.

Centro de Tecnologia e IA

Mais para Ler

Get More Builds Like This

Stay in the Loop

Get updates from Zima - new products, exclusive deals, and real builds from the community.

Stay in the Loop preferences

We respect your inbox. Unsubscribe anytime.