AAC Pictogram Retriever (pt-BR) — GGUF
GGUF quantizations of Papuguinho/aac-pictogram-retriever-ptbr for use with llama.cpp.
A compact Brazilian-Portuguese embedding model that finds the right ARASAAC pictogram for a short search term — built for Augmentative and Alternative Communication (AAC). It powers pictogram search in Papuguinho, a tool for building communication boards.
- ~157M parameters, runs comfortably on CPU (no GPU).
- One model, two jobs: retrieval (find the best pictogram among ~14k) and reranking (order a shortlist).
- ~190 MB RAM at Q8_0 — fits easily in any modern machine.
- Competitive with much larger cloud embedding APIs on this domain, while being open and self-hostable.
Model family & resources
| Resource | Description |
|---|---|
| 🧠 aac-pictogram-retriever-ptbr | Full model — sentence-transformers, retrieval + reranking, 157M, CPU |
| ⚡ aac-pictogram-retriever-ptbr-GGUF | This repo — GGUF quants for llama.cpp (Q4/Q6/Q8/f16) |
| 🧠 aac-board-generator-moe-636m-ptbr | MoE language model for generating board labels, 636M total / ~212M active |
| 📊 aac-pictogram-retrieval-ptbr | Evaluation benchmark (corpus / queries / qrels) |
| 🏋️ aac-pictogram-retrieval-ptbr-training | Training data (retrieval pairs + graded reranking) |
| 🌱 colibri-embed-ptbr | Base pt-BR embedding model |
What it's for
In AAC, a child or therapist searches for a word (e.g. "escovar os dentes", "quero água") and the app must surface the pictogram that best represents it, so the child can point to it to communicate. This is a short-query, closed-domain, Brazilian-Portuguese retrieval problem where general-purpose embedders and leaderboard rankings do not transfer well. This model is tuned specifically for it.
Intended use: semantic search and reranking of ARASAAC pictograms from pt-BR words/phrases, in AAC applications.
Not intended for: general-purpose sentence embeddings, languages other than Brazilian Portuguese, or domains outside pictogram/AAC search.
Quick start with llama.cpp
The GGUF serves the full pipeline (pooling + dense projections). Load in ~190 MB at Q8:
# Download Q8_0 (recommended — near-lossless vs. fp16)
# Keep tokenizer.model next to the .gguf file
llama-server -m aac-Q8_0.gguf --embedding --pooling mean --host 127.0.0.1 --port 8080
Then POST to /v1/embeddings:
curl http://127.0.0.1:8080/v1/embeddings \
-H "Content-Type: application/json" \
-d '{"input": "task: search result | query: escovar os dentes"}'
Always use the asymmetric prompts:
- Query:
task: search result | query: <text> - Document:
title: none | text: <pictogram text>
Then normalize embeddings and take cosine similarity.
Quantization quality
Cosine similarity vs. the fp16 reference:
| Quant | Cosine vs. fp16 | RAM (~) |
|---|---|---|
| Q8_0 | 0.9998 | ~190 MB |
| Q6_K | 0.9991 | ~145 MB |
| Q4_K_M | 0.9926 | ~105 MB |
| f16 | 1.0000 | ~320 MB |
Evaluation
Evaluated on the aac-pictogram-retrieval-ptbr benchmark — a held-out set of genuinely unseen, non-canonical pt-BR queries against the full ~14k-pictogram catalog.
| # | System | R@1 | R@5 | R@10 | Size / type |
|---|---|---|---|---|---|
| 1 | Papuguinho/aac-pictogram-retriever-ptbr (this model) | 0.546 🥇 | 0.786 | 0.827 | 157M · CPU |
| 2 | google/gemini-embedding-001 | 0.542 | 0.797 | 0.864 | cloud API |
| 3 | Qwen/qwen3-embedding-4b | 0.480 | 0.745 | 0.812 | 4B |
| 4 | openai/text-embedding-3-large | 0.472 | 0.756 | 0.845 | cloud API |
| 5 | voyageai/voyage-4 | 0.447 | 0.716 | 0.823 | cloud API |
| 6 | voyageai/voyage-4-lite | 0.354 | 0.583 | 0.712 | cloud API |
| 7 | openai/text-embedding-3-small | 0.347 | 0.594 | 0.675 | cloud API |
| 8 | intfloat/e5-base-v2 | 0.236 | 0.406 | 0.528 | 110M |
| 9 | thenlper/gte-large | 0.229 | 0.424 | 0.505 | 335M |
| 10 | thenlper/gte-base | 0.207 | 0.391 | 0.502 | 110M |
| 11 | sentence-transformers/all-MiniLM-L12-v2 | 0.126 | 0.336 | 0.406 | 33M |
| 12 | sentence-transformers/paraphrase-MiniLM-L6-v2 | 0.096 | 0.258 | 0.354 | 22M |
Best R@1 of all 12 systems (including cloud APIs). Only gemini-embedding-001 edges it by ~1 pt of R@5. Fully self-hostable, open source, no GPU required.
Limitations & responsible use
- Domain-specific. Tuned for ARASAAC pictogram search in Brazilian Portuguese. Not a general-purpose embedder.
- LLM-distilled supervision and evaluation. Training labels and benchmark use LLM-judged relevance, not human gold annotations. Validate against human judgments for clinical or high-stakes deployments.
- AAC is assistive technology used by vulnerable users (often non-verbal children). Keep a human in the loop: present pictograms for a person to confirm, and prefer omitting an item over showing a wrong one.
License & attribution
- Released under the Gemma license, inherited from the EmbeddingGemma base.
- ARASAAC pictograms are authored by the Government of Aragón under CC BY-NC-SA. If distributing pictogram content, follow ARASAAC's attribution and non-commercial terms.
Citation
Developed for and used in Papuguinho — www.papuguinho.com.
@software{aac_pictogram_retriever_ptbr,
title = {AAC Pictogram Retriever (pt-BR)},
author = {Stekel, Tardelli R. C. and Antonelli, Manuela and Baroni, Gabriel P. and {Carvalho Neto}, José A. and Souza, Marcela J. V.},
year = {2026},
url = {https://huggingface.co/Papuguinho/aac-pictogram-retriever-ptbr-GGUF},
doi = {10.57967/hf/9658},
publisher = {Hugging Face},
note = {GGUF quantizations of the CPU-friendly Brazilian-Portuguese embedding model for ARASAAC pictogram retrieval and reranking, used in Papuguinho (www.papuguinho.com)}
}