# MeliGraph v0.2.1 - Table of Contents

Graph-based recommendation engine for Elixir. In-memory graph with temporal
segmentation, Personalized PageRank, SALSA, SimilarItems and GlobalRank algorithms.
Inspired by Twitter's WTF/GraphJet and Oban's OTP patterns.

## Pages

- [MeliGraph](readme.md)
- [LICENSE](license.md)

## Modules

- [MeliGraph.Algorithm.LightGCN](MeliGraph.Algorithm.LightGCN.md): Algoritmo de recomendação LightGCN — inferência via dot product entre
o embedding do usuário e o de cada item.
- [MeliGraph.LightGCN.EmbeddingStore](MeliGraph.LightGCN.EmbeddingStore.md): Gerencia o ciclo de vida dos embeddings LightGCN no `Store.ETS` por instância.
- [MeliGraph.LightGCN.Matrix](MeliGraph.LightGCN.Matrix.md): Constrói a matriz de adjacência normalizada `Ã = D^(-1/2) · W · D^(-1/2)`
para um grafo bipartido user↔item, no formato esperado pelo LightGCN.
- [MeliGraph.LightGCN.Trainer](MeliGraph.LightGCN.Trainer.md): Loop de treinamento do LightGCN.
- [MeliGraph.Store](MeliGraph.Store.md): Behaviour para armazenamento de resultados de recomendação.

- API Pública
  - [MeliGraph](MeliGraph.md): MeliGraph — Motor de Recomendação baseado em Grafos para Elixir.

- Algoritmos
  - [MeliGraph.Algorithm](MeliGraph.Algorithm.md): Behaviour genérico para algoritmos de recomendação.
  - [MeliGraph.Algorithm.GlobalRank](MeliGraph.Algorithm.GlobalRank.md): Ranking global de itens por grau de entrada (in-degree).
  - [MeliGraph.Algorithm.PageRank](MeliGraph.Algorithm.PageRank.md): PageRank Personalizado via Monte Carlo random walks.
  - [MeliGraph.Algorithm.SALSA](MeliGraph.Algorithm.SALSA.md): Algoritmo SALSA para grafos bipartidos.
  - [MeliGraph.Algorithm.SimilarItems](MeliGraph.Algorithm.SimilarItems.md): Algoritmo de co-ocorrência para encontrar itens similares via 2-hop.

- Graph Storage
  - [MeliGraph.Graph.Edge](MeliGraph.Graph.Edge.md): Struct representando uma aresta no grafo.

  - [MeliGraph.Graph.IdMap](MeliGraph.Graph.IdMap.md): Mapeamento bidirecional entre IDs externos (qualquer termo) e IDs internos
(inteiros compactos). Usa uma tabela ETS global por instância para manter
consistência cross-segment.
  - [MeliGraph.Graph.Segment](MeliGraph.Graph.Segment.md): Um segmento temporal do grafo, inspirado no GraphJet.
  - [MeliGraph.Graph.SegmentManager](MeliGraph.Graph.SegmentManager.md): GenServer que gerencia os segmentos temporais do grafo.

- Ingestion
  - [MeliGraph.Ingestion.Writer](MeliGraph.Ingestion.Writer.md): Single-writer GenServer para ingestão de arestas.

- Query &amp; Store
  - [MeliGraph.Query](MeliGraph.Query.md): Query layer — ponto de entrada para consultas de recomendação.
  - [MeliGraph.Store.ETS](MeliGraph.Store.ETS.md): Implementação do Store behaviour usando ETS com TTL.

- Infraestrutura
  - [MeliGraph.Config](MeliGraph.Config.md): Configuração centralizada, validada uma vez no start_link.
Passada para todos os processos da supervision tree via `conf:`.
  - [MeliGraph.ConfigHolder](MeliGraph.ConfigHolder.md): Processo simples que registra o Config no Registry, permitindo
que qualquer processo localize a configuração da instância.

  - [MeliGraph.Registry](MeliGraph.Registry.md): Helpers para lookup de processos via Registry.
  - [MeliGraph.Supervisor](MeliGraph.Supervisor.md): Supervision tree principal do MeliGraph.
  - [MeliGraph.Telemetry](MeliGraph.Telemetry.md): Wrapper para `:telemetry.span/3` com prefixo `[:meli_graph]`.

- Plugins
  - [MeliGraph.Plugin](MeliGraph.Plugin.md): Behaviour para plugins periódicos do MeliGraph.
  - [MeliGraph.Plugins.CacheCleaner](MeliGraph.Plugins.CacheCleaner.md): Plugin que remove entradas expiradas do cache de resultados.

  - [MeliGraph.Plugins.Pruner](MeliGraph.Plugins.Pruner.md): Plugin que remove segmentos temporais expirados.
  - [MeliGraph.Plugins.Supervisor](MeliGraph.Plugins.Supervisor.md): Supervisor para plugins periódicos.

## Mix Tasks

- [mix meli_graph.demo](Mix.Tasks.MeliGraph.Demo.md): Demo end-to-end: lê um dataset TSV (formato heterogêneo descrito no README),
insere as arestas com peso no grafo, treina embeddings LightGCN e imprime
recomendações top-K para um perfil.

