How I built Trix
Trix is dumb, but it's my dumb LLM and I love it because I made it from scratch. It's not just another OpenAI wrapper, trust.
Where the data comes from
It's simple. I used my own documents like my resume, hackathon writeups, and personal project docs to create question and answer samples the model can train on. I also used questions people asked on this website as a real-world dataset, plus some synthetic prompts to fight against jailbreaking my LLM.
Personal Documents
Documents like my resume, hackathon projects, and personal projects were chunked and fed through the pipeline. These teach the model authentic details about my background.
Website Prompts
Real questions visitors have typed on this site, deduplicated to remove near-duplicates. These capture authentic interaction patterns and the kinds of things people actually ask.
Synthetic Prompts
LLM-generated prompts that have no context about me. These include jailbreak attempts and unrelated questions, teaching the model when to say "I don't know."
Teaching a dumb model to be less dumb and use context
A LFM-2.5-1.2B-Instruct base model is fine-tuned with QLoRA on the generated dataset. It learns to translate retrieved context into answers and to say "I don't know" when the context is missing.
Base Model
LFM-2.5
1.2B parameters, instruct variant
Trix
Fine-tuned
Context-aware, witty, knows limits
RunPod
Trained on an RTX A6000 for about 40 minutes.
QLoRA
Quantized Low-Rank Adaptation keeps training efficient with 4-bit quantization.
GGUF + Quantize
Converted and quantized for llama.cpp inference.
Self-hosted on my own homeserver
I host this on my own homeserver. It uses 1GB of memory for the LLM, plus a little overhead for the RAG pipeline.
Try Trix yourself
Ask a question on the home page and see the context-aware model in action.
Ask Trix