Epic_1_Sprint_10 Implement Concept clustering job - robbiemu/aclarai GitHub Wiki
Tarefa: Implementar Concept Clustering Job
Descrição
Desenvolver e implementar um job agendado para agrupar (:Concept)
nodes relacionados em clusters temáticos. Este processo utilizará o índice HNSW de embeddings de conceitos (On-Concepts.md
, On-Vector-Stores.md
e Epic_1_Sprint_4-hnswlib.md
) para identificar similaridades semânticas e formar grupos coerentes. Estes clusters serão a base para a posterior geração de páginas de assunto (On-Writing-Vault-Documents.md
, Seção "Subject Summary Agent"), contribuindo para as user stories de "Subject Pages" em Product-Definition.md
.
Escopo
Incluído
- Implementação de um job (executado pelo
aclarai-scheduler
deEpic_1_Sprint_3-Bootstrap-scheduler-and-vault-sync-job.md
) para agrupar conceitos relacionados. - Desenvolvimento de um algoritmo de agrupamento que utilize os vetores do índice HNSW de embeddings de conceitos (
On-Concepts.md
, seção "Concept Vector Index" eEpic_1_Sprint_4-hnswlib.md
) para formar clusters temáticos baseados em similaridade semântica. Os vetores de entrada serão provenientes doconcepts
vector store (On-Vector-Stores.md
). - Implementação de filtros para os clusters formados, incluindo:
- Tamanho mínimo de cluster (
min_concepts
): filtrando grupos que contenham menos que um número configurável de conceitos, conformeDesign-Config-Panel.md
(Seção 4,subject_summaries
). - Limiar de similaridade (
similarity_threshold
): utilizando um limiar de distância de cosseno (ou métrica equivalente) para determinar a coesão interna dos clusters, conformeDesign-Config-Panel.md
(Seção 4,subject_summaries
). - Tamanho máximo de cluster (
max_concepts
): limitando o número de conceitos por grupo para evitar clusters excessivamente grandes, conformeDesign-Config-Panel.md
(Seção 4,subject_summaries
).
- Tamanho mínimo de cluster (
- Armazenamento em cache das atribuições de grupo (qual conceito pertence a qual cluster) para uso posterior pelo Agente de Resumo de Assunto (
Epic_1_Sprint_10-Implement-subject-summary-agent.md
). Este cache pode ser em memória ou em um armazenamento persistente leve. - Integração do job com o
aclarai-scheduler
, permitindo sua configuração e agendamento viaaclarai.config.yaml
e a UI, conformeEpic_1_Sprint_6-Add-configuration-controls.md
. - Documentação clara do processo de clustering, da escolha do algoritmo e da configuração.
- Implementação de testes para verificar a correta formação de clusters e a aplicação dos filtros.
Excluído
- Interface de usuário para visualização interativa de clusters (será implementada em tarefa separada, possivelmente em Sprint 10).
- Geração de páginas de assunto (
[Subject:XYZ](/robbiemu/aclarai/wiki/Subject:XYZ)
Markdown files) (será implementada na tarefa "Implementar Agente de Resumo de Assunto" de Sprint 10, que consumirá o output deste job). - Otimizações avançadas de desempenho que vão além de um algoritmo de clusterização eficiente e a leitura otimizada do índice HNSW.
- Análise avançada de relações entre clusters (o foco é na formação de clusters básicos para geração de sumários).
Critérios de Aceitação
- O job utiliza corretamente os vetores do índice HNSW de embeddings de conceitos (
On-Concepts.md
,On-Vector-Stores.md
) para formar clusters. - Os clusters formados são semanticamente coerentes e temáticos, refletindo as similaridades entre os
(:Concept)
nodes (On-Concepts.md
). - Os filtros por tamanho mínimo de cluster (
min_concepts
), tamanho máximo de cluster (max_concepts
) e limiar de similaridade (similarity_threshold
) funcionam adequadamente, conforme configurado emaclarai.config.yaml
(Design-Config-Panel.md
). - As atribuições de grupo (mapeamento
concept_id
paracluster_id
) são armazenadas em cache de forma acessível para uso posterior pelo Agente de Resumo de Assunto. - A integração com o
aclarai-scheduler
(Epic_1_Sprint_3-Bootstrap-scheduler-and-vault-sync-job.md
) funciona corretamente, permitindo que o job seja agendado e executado. - A documentação clara do processo de clustering e configuração está disponível no repositório.
- Testes automatizados demonstram a funcionalidade e robustez do job, cobrindo a correta formação de clusters e a aplicação dos filtros.
Dependências
- Índice HNSW de embeddings de conceitos (
On-Concepts.md
,On-Vector-Stores.md
) implementado e populado com os vetores dos(:Concept)
nodes (Epic_1_Sprint_4-hnswlib.md
). (:Concept)
nodes existentes no Neo4j, com embeddings atualizados (Epic_1_Sprint_5-Create-Update-Tier-3.md
eEpic_1_Sprint_5-Refresh-embeddings.md
).- Sistema de agendamento (
aclarai-scheduler
comAPScheduler
) implementado e funcional (Epic_1_Sprint_3-Bootstrap-scheduler-and-vault-sync-job.md
). - Configuração clara dos parâmetros de clustering em
settings/aclarai.config.yaml
(Design-Config-Panel.md
).
Entregáveis
- Código-fonte do job de clustering de conceitos (dentro do serviço
aclarai-scheduler
). - Implementação do algoritmo de formação de clusters.
- Sistema de cache para atribuições de grupo.
- Documentação técnica do processo e configuração.
- Testes unitários e de integração.
Estimativa de Esforço
- 3 dias de trabalho
Riscos e Mitigações
- Risco: Clusters formados não são semanticamente coerentes ou significativos para o usuário.
- Mitigação: Calibrar cuidadosamente os limiares de similaridade e os parâmetros de tamanho de cluster (
min_concepts
,max_concepts
) com base emDesign-Config-Panel.md
. Implementar validação manual de amostras de clusters para verificar a relevância semântica e ajustar os parâmetros do algoritmo.
- Mitigação: Calibrar cuidadosamente os limiares de similaridade e os parâmetros de tamanho de cluster (
- Risco: Desempenho inadequado com um grande número de
(:Concept)
nodes, impactando o tempo de execução do job.- Mitigação: Implementar otimizações de algoritmo para a fase de clusterização. Considerar abordagens incrementais ou a execução em intervalos de tempo menos frequentes para grandes volumes de dados. Otimizar a recuperação de embeddings do vector store.
- Risco: Formação de clusters muito pequenos (muito granular) ou muito grandes (pouco específico).
- Mitigação: Utilizar os parâmetros configuráveis para tamanho mínimo e máximo de cluster (
min_concepts
,max_concepts
) emDesign-Config-Panel.md
para controlar a granularidade. A escolha do algoritmo de clustering também influenciará (e.g., DBSCAN pode gerar mais outliers, agrupamento hierárquico pode ser controlado por corte na árvore).
- Mitigação: Utilizar os parâmetros configuráveis para tamanho mínimo e máximo de cluster (
Notas Técnicas
- O job deve ser executado periodicamente pelo
aclarai-scheduler
, lendo os parâmetros desettings/aclarai.config.yaml
parasubject_summaries
(similarity_threshold
,min_concepts
,max_concepts
). - Considerar o uso de algoritmos de clusterização como DBSCAN (útil para lidar com densidade e identificar outliers) ou agrupamento hierárquico (útil para explorar diferentes granularidades de cluster) para a formação de clusters. A escolha pode depender da complexidade e distribuição dos embeddings.
- Implementar métricas de qualidade (e.g., Coeficiente de Silhueta, Índice de Davies-Bouldin) para avaliar a coerência e separação dos clusters formados. Isso pode auxiliar na calibração dos parâmetros.
- O sistema de cache para atribuições de grupo deve ser projetado para permitir rápida recuperação e atualização incremental de associações de conceitos a clusters. Pode ser um simples dicionário em memória para o MVP, mas com consideração para persistência em caso de reinício.
- O job deve lidar com conceitos outliers que não se encaixam bem em nenhum cluster, garantindo que eles não sejam perdidos no processo, embora não formem um "assunto" por si só.
- Este job é um pré-requisito direto para a tarefa "Implementar Subject Summary Agent" de Sprint 10, que consumirá esses clusters.
Nota Técnica: A implementação deste job deve recuperar os embeddings de todos os conceitos canônicos de uma só vez, utilizando um método de recuperação em lote (get_embeddings_for_concepts
) do vector store. O uso de similarity_search
em um loop para cada conceito é um anti-padrão que deve ser evitado para garantir o desempenho.