Toda a base de conhecimento em um arquivo
.jpg


Island
Forest
Mountain
Uma pasta e poucas linhas de TOML viram um .urna só: chunks, vetores, índice, mídia e manifest, cada seção assinada.
Os scans das cartas entram no arquivo em AV1 e os vetores passam pra um preset menor. O arquivo encolhe, a citação continua a mesma.
O gate do model_hash confere o modelo, o HNSW anda pelo grafo, o BM25 acha a palavra e o cosseno exato define a ordem.
A resposta traz a citação de volta até a fonte, e o urna validate confere cada camada antes da primeira consulta, offline.
Da pasta de documentos
ao arquivo que responde
O que cabe em um .urna
00100000 01010011 01111001 01110011 01110100 01100101 01101101 00111010 00100000 01000011 01100001 01110010 01100100 01110011
Benchmark público, mesma régua
Benchmark de 2026-09-10 em arm64, single thread. O que o Urna não faz: update e delete no lugar, filtro por metadado, escrita concorrente. Ver a tabela completa.
Benchmarks do urna
Compressão contra busca pelo nome
7 arquivos · 1.000 consultas cadavezes menor que os 3,98 GB de JPEG de origem. O arquivo em crf50 tem 533 MB e acha a carta pelo nome tanto quanto o lossless de 3,61 GB: txt@1 a +0,001, dentro do erro padrão.
O que esta métrica mede
txt@1 é a fração das 1.000 consultas em que a carta certa veio em primeiro lugar. A consulta é o nome da carta em texto ("artwork of the card {nome}"), buscado no espaço de imagem do clip: o modelo só vê a arte, por isso o nível é baixo em todos os arquivos; o que importa é onde ele cai.
drift é o cosseno entre o vetor da imagem comprimida e o da original: 1,00 é igual, e quanto menor, mais o codec mexeu no que o modelo enxerga. O pior decil (p10) é a carta na borda das 10% que mais mudaram; a mediana (p50) é a carta do meio.
Como ler este gráfico
Cada coluna é um arquivo com as mesmas 38.627 cartas, do lossless (3,61 GB) ao AV1 em crf60 (230 MB), em ordem de compressão.
Em cima, as duas linhas de drift descem o tempo todo e cruzam o floor do gate logo no segundo arquivo. Embaixo, a busca fica plana até o crf50: as barras verdes estão dentro de um erro padrão do lossless; a linha tracejada marca onde a busca cai, e as vermelhas são os arquivos além dela.
| arquivo | tamanho | drift p10 | txt@1 | ±1 erro padrão | z vs lossless |
|---|---|---|---|---|---|
| lossless | 3,61 GB | 0,9968 | 0,092 | 0,0091 | 0,00 |
| neardup | 1,37 GB | 0,9666 | 0,096 | 0,0093 | 0,31 |
| avif q48 | 1,2 GB | 0,9680 | 0,096 | 0,0093 | 0,31 |
| crf40 | 981 MB | 0,9594 | 0,089 | 0,0090 | -0,23 |
| crf50 | 533 MB | 0,9389 | 0,093 | 0,0092 | 0,08 |
| crf55 | 370 MB | 0,9211 | 0,074 | 0,0083 | -1,46 |
| crf60 | 230 MB | 0,8866 | 0,069 | 0,0080 | -1,89 |
1.000 consultas por arquivo, as mesmas cartas em todos; erro padrão binomial; z é a distância do txt@1 de cada arquivo ao do lossless em erros padrão combinados: até crf50 nenhum passa de 1.
medido em 2026-09-12 · benchmark/experiments/14-utility-ladder/results.json
curl -sSf https://raw.githubusercontent.com/hoffresearch/urna/main/scripts/install.sh | sh
urna setupurna build --spec corpus.tomlurna ask corpus.urna "funciona sem internet?" -k 3urna retrieve corpus.urna "funciona sem internet?" -k 5 --format jsonlimport urna
from urna.embed_potion import potion_embedder
emb, db = potion_embedder(), urna.open("corpus.urna")
qvec = emb.embed_texts(["funciona sem internet?"])[0]
hits = db.retrieve(qvec, 5, expected_model_hash=emb.model_hash())urna validate corpus.urnaurna cite corpus.urna "urna://content_hash/chunk_id"urna benchmark corpus.urna -q 100 -k 10 --ann 100Uma release, todo gerenciador de pacote
npx @urna/cli validate corpus.urnauvx --from urna urna validate corpus.urnacargo binstall urnaTrês grupos de verbos e uma tela pra usar eles


Um arquivo e um vetor entram, hits saem. Sem Python.
- inspect
- validate
- stats
- media
- search
- search-ann
- search-graph
- search-space
- search-text
- benchmark
- cite
- doctor
Texto ou um spec entram, respostas citadas saem, pelo embedder Python offline.
- ask
- retrieve
- build
O instalador em que todo canal termina, e o explorador do terminal.
- setup
- tui