knowman1 / 6

As notas se acumulam e deixam de ser lidas. Um assistente sem fontes inventa.

grep encontra palavras, não respostas. Ele não diz o que foi decidido sobre X, nem onde isso está escrito.

Um assistente de chat pode inventar uma fonte. Ele responde mesmo quando as suas notas não dizem nada.

Você quer a evidência, não um chute. O arquivo exato e as linhas exatas, ou um honesto «nada encontrado».

Fonte: core/README.md, introdução.

knowman2 / 6

Pergunte às suas notas Markdown. Receba o trecho, com as linhas.

Uma pergunta que as notas cobrem

$ knowman search "why Postgres"
decision-log.md:L5-L5
  We chose Postgres with the pgvector extension for the vector store.
architecture-notes.md:L5-L6
  The store module is the only part of the codebase that speaks SQL.
  Every other module calls its functions instead of touching Postgres directly.

Uma pergunta que elas não cobrem

$ knowman search "capital of mongolia"
No evidence found for that query.

Com um modelo de linguagem configurado, ask escreve prosa a partir desses mesmos trechos e os lista como fontes. Sem ele, você ainda recebe as citações.

Roda na sua máquina: Postgres com pgvector, Ollama para os embeddings, nenhuma chave de API.

knowman3 / 6

Um observador alimenta uma fila. Uma pergunta é pareada por distância.

Ingestão

Notasarquivos .md
→
Observadorwatcher.py
→
Fila de tarefasstore.py
→
Processadorworker.py
→
Fragmentadorchunking.py
→
Postgrespgvector, HNSW

Consulta

Embed da consultaretrieval.py
→
Trechos mais próximosstore.py
→
Filtro de distânciaretrieval.py
→
Citaçõespath:Lstart-Lend
→
Resposta do LLMask.py, llm/OPCIONAL

Cada trecho mantém o intervalo de linhas de onde veio; é isso que torna uma citação exata. Se nada estiver dentro do limite de distância, o resultado é o negativo explícito e o modelo de linguagem nunca é chamado.

Diagrama completo: architecture.html · Fonte: core/README.md, seção How it works.

knowman4 / 6

A recuperação é medida. Nenhum modelo julga outro modelo.

100% (25/25)

groundedness em um dataset rotulado de 25 perguntas.

$ knowman eval
groundedness: 100.00% (25/25), delta: +0.00%

Uma taxa de acerto. Uma pergunta passa quando o arquivo citado é o esperado, ou quando nenhuma evidência é devolvida para uma pergunta que não tem.

Cada execução é guardada. A seguinte informa a mudança desde a última, então uma regressão aparece como queda.

Já pegou um bug. Um título sozinho virou o próprio trecho e casava com perguntas sem relação; a avaliação encontrou.

Fontes: core/README.md, core/src/knowman/evaldata/dataset.json, core/CHANGELOG.md. O corpus de exemplo é pequeno; isto é uma checagem de regressão, não um benchmark.

knowman5 / 6

Um script. Ele verifica e não instala nada com privilégios elevados.

Com Docker

git clone https://github.com/rdorta27/knowman
cd knowman
./install.sh
docker compose exec api \
  knowman search "why Postgres"

Precisa de Docker e do plugin do Compose; sem Python no host.

Sem Docker (Arch)

./install.sh --mode native

Usa Postgres, pgvector e Ollama no host. O script imprime os comandos exatos de pacman e systemctl do que falta e para; execute-os e rode de novo.

Os dois modos usam as mesmas portas, presas a 127.0.0.1.

Fonte: core/README.md, core/docs/running.md. O instalador indexa as notas de exemplo e confirma que uma busca real devolve uma citação real.

knowman6 / 6

O que ele não é, e o que vem depois.

Limites

  • Só Markdown. Não é um editor de notas nem um wiki; ele lê uma pasta que já é sua.
  • Os embeddings precisam do Ollama. Trocar o modelo de embeddings obriga a reindexar tudo.
  • Modelos locais pequenos hesitam. A resposta é tão boa quanto o modelo que você configurar.
  • Aberto por padrão. O token da API e o limite de taxa são opcionais; ative-os antes de expor isso além do localhost.

Próximo

Uma URL de demonstração pública em infraestrutura de nuvem gratuita, com recuperação e citações funcionando sem nenhuma chave paga.

core/README.md, Roadmap

Experimente: github.com/rdorta27/knowman

1 / 6 Início Diagrama EN ES PT