<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>AI &amp; Machine Learning on vo.rs</title><link>https://vo.rs/categories/ai--machine-learning/</link><description>Recent content in AI &amp; Machine Learning on vo.rs</description><generator>Hugo</generator><language>en</language><copyright>This work is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.</copyright><lastBuildDate>Tue, 09 Jun 2026 12:00:00 +0000</lastBuildDate><atom:link href="https://vo.rs/categories/ai--machine-learning/index.xml" rel="self" type="application/rss+xml"/><item><title>Fine-Tuning vs Prompting vs RAG: Picking the Right Tool Without Wasting GPU Hours</title><link>https://vo.rs/story/fine-tuning-vs-prompting-vs-rag-picking-the-right-tool/</link><pubDate>Tue, 09 Jun 2026 12:00:00 +0000</pubDate><guid>https://vo.rs/story/fine-tuning-vs-prompting-vs-rag-picking-the-right-tool/</guid><description>&lt;p&gt;I once watched someone spend the better part of a weekend, and roughly £40 of rented A100 time, fine-tuning a 7B model to &amp;ldquo;answer questions about our internal wiki.&amp;rdquo; The result was a model that confidently invented policy numbers that had never existed. The fix took twenty minutes: paste the relevant wiki page into the prompt. That was a retrieval problem the whole time, and no amount of training was ever going to solve it. It is the single most common and most expensive mistake I see people make with local LLMs, and it comes from a simple confusion about what each tool actually does.&lt;/p&gt;</description></item><item><title>Talking to Your Documents: A Practical RAG Pipeline with Open-Source Tools</title><link>https://vo.rs/story/talking-to-your-documents-a-practical-rag-pipeline/</link><pubDate>Wed, 27 May 2026 09:00:00 +0000</pubDate><guid>https://vo.rs/story/talking-to-your-documents-a-practical-rag-pipeline/</guid><description>&lt;p&gt;There is a particular kind of frustration in knowing that the answer you need is somewhere in a forty-page PDF, and that finding it means reading all forty pages. Retrieval-Augmented Generation turns that pile of documents into something you can simply talk to. Ask a question in plain English, and the system finds the relevant passages and answers from them. The very best part is that you can build a working version yourself, on your own machine, using only open-source tools and a modest Python script. This guide walks through exactly that — a small but complete RAG pipeline that lets you interrogate your own documents.&lt;/p&gt;</description></item><item><title>Prompt Injection: The SQL Injection of the AI Era</title><link>https://vo.rs/story/prompt-injection-the-sql-injection-of-the-ai-era/</link><pubDate>Wed, 20 May 2026 10:30:00 +0000</pubDate><guid>https://vo.rs/story/prompt-injection-the-sql-injection-of-the-ai-era/</guid><description>&lt;p&gt;Every generation of software gets the vulnerability it deserves. The web era handed us SQL injection, a flaw so persistent it still tops vulnerability lists decades after the fix was well understood. The large language model era has produced its own signature weakness, and it rhymes almost perfectly with the old one. It is called prompt injection, and if you are building anything that lets a model read untrusted text, you need to understand it.&lt;/p&gt;</description></item><item><title>What Is Agentic AI, and Why Is Everyone Suddenly Talking About It?</title><link>https://vo.rs/story/what-is-agentic-ai-and-why-is-everyone-talking-about-it/</link><pubDate>Wed, 13 May 2026 16:30:00 +0000</pubDate><guid>https://vo.rs/story/what-is-agentic-ai-and-why-is-everyone-talking-about-it/</guid><description>&lt;p&gt;If you have spent any time near the technology press recently, you will have noticed that the word &amp;ldquo;agentic&amp;rdquo; has quietly taken over. Where last year everyone wanted a chatbot, this year everyone wants an agent. The shift is real, but the hype has run well ahead of the substance, and it is worth slowing down to ask what agentic AI actually means, what it can genuinely do today, and where the marketing outpaces reality.&lt;/p&gt;</description></item><item><title>Your First Local AI Coding Assistant: Wiring Ollama into Your Editor</title><link>https://vo.rs/story/your-first-local-ai-coding-assistant-ollama-in-your-editor/</link><pubDate>Wed, 29 Apr 2026 14:30:00 +0000</pubDate><guid>https://vo.rs/story/your-first-local-ai-coding-assistant-ollama-in-your-editor/</guid><description>&lt;p&gt;Cloud coding assistants are wonderful right up until you remember where your code is going. Every keystroke, every half-finished function, every comment grumbling about a colleague&amp;rsquo;s API design is shipped off to someone else&amp;rsquo;s server. For a side project that scarcely matters; for proprietary code under a strict NDA it can be a genuine problem. The good news is that you can run a capable coding assistant entirely on your own machine, with no network round-trips and no data leaving the building. If you have already met Ollama in our introductory piece, this guide takes the next step: wiring a local model directly into your editor so it suggests code as you type.&lt;/p&gt;</description></item><item><title>When Your AI Agent Goes Rogue: Securing Autonomous Agents in Production</title><link>https://vo.rs/story/when-your-ai-agent-goes-rogue-securing-autonomous-agents/</link><pubDate>Tue, 21 Apr 2026 12:00:00 +0000</pubDate><guid>https://vo.rs/story/when-your-ai-agent-goes-rogue-securing-autonomous-agents/</guid><description>&lt;p&gt;A chatbot answers a question and goes quiet. An agent reads the question, decides on a plan, calls a few tools, checks the result, and tries again until it considers the job done. That loop is enormously useful, and it is also exactly why a misbehaving agent can do real damage before anyone notices. When software can act on its own, securing it stops being a matter of sanitising inputs and becomes a question of bounding behaviour.&lt;/p&gt;</description></item><item><title>RAG Explained: How AI Stops Making Things Up</title><link>https://vo.rs/story/rag-explained-how-ai-stops-making-things-up/</link><pubDate>Tue, 07 Apr 2026 11:30:00 +0000</pubDate><guid>https://vo.rs/story/rag-explained-how-ai-stops-making-things-up/</guid><description>&lt;p&gt;Imagine a brilliant colleague who has read most of the internet, speaks with unshakeable confidence, and occasionally invents a fact so smoothly that you only catch it because you happen to know the truth. That is a large language model on a bad day. It is not lying, exactly; it simply does not know what it does not know. Retrieval-Augmented Generation, or RAG, is the technique that hands that colleague a library card and a quiet instruction: before you answer, go and look it up. The result is an AI that grounds its words in real documents rather than in the foggy recollections of its training data.&lt;/p&gt;</description></item><item><title>What Is an AI Agent, and Should You Trust It with Your Inbox?</title><link>https://vo.rs/story/what-is-an-ai-agent-trust-it-with-your-inbox/</link><pubDate>Sat, 28 Mar 2026 09:30:00 +0000</pubDate><guid>https://vo.rs/story/what-is-an-ai-agent-trust-it-with-your-inbox/</guid><description>&lt;p&gt;&amp;ldquo;AI agent&amp;rdquo; is the phrase of the moment, and like most phrases of the moment it is doing a lot of work for a term few people can define. The simplest way to understand it is by contrast: a chatbot talks, an agent acts. One answers your question; the other goes off and tries to get the job done. That difference sounds small and turns out to be enormous, especially once the job in question is something as personal and consequential as managing your email. Let us unpack what an agent really is, and then ask the question in the title properly.&lt;/p&gt;</description></item><item><title>What Is a Token, Really? How LLMs Read, Reason, and Bill You</title><link>https://vo.rs/story/what-is-a-token-how-llms-read-reason-and-bill-you/</link><pubDate>Fri, 13 Mar 2026 16:00:00 +0000</pubDate><guid>https://vo.rs/story/what-is-a-token-how-llms-read-reason-and-bill-you/</guid><description>&lt;p&gt;Every conversation you have with a language model is quietly measured, chopped, and counted in a unit you almost never see. It is not the word, nor quite the letter. It is the token: the atom of AI text, the thing the model actually reads, the thing your bill is calculated from, and the reason your carefully crafted prompt sometimes behaves in ways that feel slightly arbitrary. Understand tokens and a great deal about how these systems read, reason, and charge suddenly clicks into place.&lt;/p&gt;</description></item><item><title>Local AI on Your Own Metal: Running LLMs Offline with Ollama</title><link>https://vo.rs/story/local-ai-on-your-own-metal-running-llms-with-ollama/</link><pubDate>Tue, 24 Feb 2026 11:00:00 +0000</pubDate><guid>https://vo.rs/story/local-ai-on-your-own-metal-running-llms-with-ollama/</guid><description>&lt;p&gt;Not so long ago the idea of a capable language model running on the computer under your desk, with no internet connection and no monthly bill, sounded faintly absurd. The assumption baked into the whole industry was that the clever part lived in someone else&amp;rsquo;s datacentre, reachable only through an API and a credit card. That assumption no longer holds. A tool called Ollama has made running open-weight language models on your own hardware about as difficult as installing a music player. This guide shows you how to do it, what to expect from the machine you already own, and where the honest limits lie.&lt;/p&gt;</description></item><item><title>Label Studio: Self-Hosted Data Annotation for Training Your Own Models</title><link>https://vo.rs/story/label-studio-self-hosted-data-annotation-for-training-your-own-models/</link><pubDate>Thu, 25 Dec 2025 10:00:00 +0000</pubDate><guid>https://vo.rs/story/label-studio-self-hosted-data-annotation-for-training-your-own-models/</guid><description>&lt;p&gt;There&amp;rsquo;s a comforting lie in machine learning circles that the model is the hard part. It isn&amp;rsquo;t. The model is the bit with the nice papers and the GitHub stars. The hard part — the part that determines whether your classifier works or quietly humiliates you in production — is the labels. Garbage labels, garbage model, no exceptions. And labelling is tedious, error-prone, and almost always done in some horror of a spreadsheet that loses your work when the browser crashes.&lt;/p&gt;</description></item><item><title>Semantic Search on Your Own Documents: Embeddings, Vector DBs, and Practical Limits</title><link>https://vo.rs/story/semantic-search-on-your-own-documents-embeddings-vector-dbs-and-practical-limits/</link><pubDate>Sat, 28 Jun 2025 10:00:00 +0000</pubDate><guid>https://vo.rs/story/semantic-search-on-your-own-documents-embeddings-vector-dbs-and-practical-limits/</guid><description>&lt;p&gt;I once spent twenty minutes hunting for a note I &lt;em&gt;knew&lt;/em&gt; I had written about backing up a database. I searched &amp;ldquo;how to back up the database&amp;rdquo; and got nothing, because the note was titled &amp;ldquo;nightly Postgres dump cron&amp;rdquo; and shared not a single word with my query. Keyword search has that glaring weakness baked in: it only finds documents that literally contain the words you typed. Semantic search fixes this by matching on &lt;em&gt;meaning&lt;/em&gt; rather than spelling, and — this is the part that surprised me — you can run the whole stack on your own hardware over your own documents, with no cloud API in sight. I built exactly that over a few thousand markdown notes on a modest home server, and it has genuinely changed how I find things. It has also taught me, painfully and repeatedly, where the approach quietly breaks.&lt;/p&gt;</description></item><item><title>Running Gemma 3 Locally: Google's Small Model on Consumer Hardware</title><link>https://vo.rs/story/running-gemma-3-locally-googles-small-model-on-consumer-hardware/</link><pubDate>Wed, 25 Jun 2025 11:00:00 +0000</pubDate><guid>https://vo.rs/story/running-gemma-3-locally-googles-small-model-on-consumer-hardware/</guid><description>&lt;p&gt;Every few months a new open-weights model lands and the homelab forums fill with breathless claims that this one finally dethrones the cloud. Most of the time it&amp;rsquo;s hype. Gemma 3, which Google released on 12 March 2025, is one of the rare cases where the claims are roughly fair — not because it beats the frontier models, but because it&amp;rsquo;s the first small model I&amp;rsquo;ve run that I actually leave switched on.&lt;/p&gt;</description></item><item><title>AI-Powered Git Commit Messages: Useful or Just Annoying</title><link>https://vo.rs/story/ai-powered-git-commit-messages-useful-or-just-annoying/</link><pubDate>Sat, 14 Jun 2025 14:00:00 +0000</pubDate><guid>https://vo.rs/story/ai-powered-git-commit-messages-useful-or-just-annoying/</guid><description>&lt;p&gt;There&amp;rsquo;s a particular flavour of laziness that git commit messages bring out in people. You&amp;rsquo;ve just spent an hour on a fiddly change, the work is done, and now a text editor opens demanding you explain yourself. So you type &amp;ldquo;fix stuff&amp;rdquo; and move on, and three months later you&amp;rsquo;re spelunking through &lt;code&gt;git log&lt;/code&gt; cursing your past self. We&amp;rsquo;ve all done it, and we&amp;rsquo;ve all been on the receiving end of someone else&amp;rsquo;s — the commit that touches forty files and explains itself with a single shrug of a word. The promise of offloading that drudgery to a model is genuinely appealing precisely because the task is one humans reliably do badly when tired. The pitch for AI commit messages is simple: feed the staged diff to a model, get back a tidy conventional-commit summary, accept it, done. I&amp;rsquo;ve been running this on my own repos for a while. It&amp;rsquo;s genuinely useful and quietly dangerous, and which one depends entirely on how you wire it up.&lt;/p&gt;</description></item><item><title>Open WebUI Pipelines: Chaining Local Models with Tools and RAG</title><link>https://vo.rs/story/open-webui-pipelines-chaining-local-models-with-tools-and-rag/</link><pubDate>Thu, 05 Jun 2025 16:00:00 +0000</pubDate><guid>https://vo.rs/story/open-webui-pipelines-chaining-local-models-with-tools-and-rag/</guid><description>&lt;p&gt;Open WebUI is the front end most people slap in front of Ollama and call it a day — a tidy ChatGPT-alike that talks to local models. That&amp;rsquo;s fine right up until you want the model to &lt;em&gt;do&lt;/em&gt; something: hit your internal docs, call an API, run a query, or chain a couple of models together. I hit that wall the week I wanted my local assistant to answer from a folder of PDFs instead of making things up. The built-in RAG and function features cover some of this, but the real escape hatch is &lt;strong&gt;Pipelines&lt;/strong&gt;: a mechanism that lets you insert arbitrary Python into the request flow. It&amp;rsquo;s the difference between &amp;ldquo;chat with a model&amp;rdquo; and &amp;ldquo;wire a model into your systems.&amp;rdquo;&lt;/p&gt;</description></item><item><title>Stable Diffusion Workflows: Turning ComfyUI into an Image API</title><link>https://vo.rs/story/stable-diffusion-workflows-turning-comfyui-into-an-image-api/</link><pubDate>Mon, 02 Jun 2025 08:00:00 +0000</pubDate><guid>https://vo.rs/story/stable-diffusion-workflows-turning-comfyui-into-an-image-api/</guid><description>&lt;p&gt;ComfyUI is usually sold as a node editor — a sprawling graph of boxes and wires you drag around to build a Stable Diffusion pipeline. That&amp;rsquo;s how most people meet it, and it&amp;rsquo;s genuinely the most flexible front end for local image generation. But the canvas is the boring part. The interesting part is that everything you build on it is just a JSON document, and ComfyUI happily executes that JSON over an HTTP API. Once you realise that, ComfyUI stops being a toy you click and becomes an image-generation service you can call from anything — a cron job, a build pipeline, a webhook handler.&lt;/p&gt;</description></item><item><title>Building Psychological Safety in DevOps: Lessons from Flight Decks and Firefighting</title><link>https://vo.rs/story/building-psychological-safety-in-devops-lessons-from-flight-decks-and-firefighting/</link><pubDate>Mon, 26 May 2025 16:30:00 +0000</pubDate><guid>https://vo.rs/story/building-psychological-safety-in-devops-lessons-from-flight-decks-and-firefighting/</guid><description>&lt;p&gt;On 28 December 1978, United Airlines Flight 173 ran out of fuel and crashed into a Portland suburb while the crew was preoccupied with a landing-gear light. The flight engineer knew the fuel was critically low. He mentioned it. He did not push, because the captain outranked him and the cockpit culture of the era did not encourage a junior officer to insist. Ten people died within sight of the runway. That accident, more than any management theory, is why modern aviation drilled into itself a discipline called crew resource management — the deliberate construction of a cockpit where the most junior person can say &amp;ldquo;we are about to crash&amp;rdquo; and be heard.&lt;/p&gt;</description></item><item><title>AI-Driven Incident Response: Can Machine Learning Beat Human Intuition?</title><link>https://vo.rs/story/ai-driven-incident-response-can-machine-learning-beat-human-intuition/</link><pubDate>Thu, 22 May 2025 12:45:00 +0000</pubDate><guid>https://vo.rs/story/ai-driven-incident-response-can-machine-learning-beat-human-intuition/</guid><description>&lt;p&gt;At 03:14 one night my monitoring stack lit up: a burst of failed SSH logins against a box that has no business accepting SSH from outside, followed by one success. A correlation rule had already fired, opened a ticket, and — because I&amp;rsquo;d wired it that way — pulled the host&amp;rsquo;s recent auth log into the alert. The &amp;ldquo;AI&amp;rdquo; part flagged it as a credential-stuffing pattern with 0.91 confidence. The &lt;em&gt;human&lt;/em&gt; part (me, bleary, on the sofa) took one look and realised it was my own laptop on a flaky VPN reconnecting forty times before the password manager filled in correctly. The model was right about the pattern and wrong about the world. That gap is the whole subject of this post: machine learning is genuinely good at parts of incident response and confidently useless at others, and the engineering question is where you draw the line.&lt;/p&gt;</description></item><item><title>The Hidden Compliance Risks in Generative AI—and How to Mitigate Them</title><link>https://vo.rs/story/the-hidden-compliance-risks-in-generative-ai-and-how-to-mitigate-them/</link><pubDate>Fri, 21 Mar 2025 11:15:00 +0000</pubDate><guid>https://vo.rs/story/the-hidden-compliance-risks-in-generative-ai-and-how-to-mitigate-them/</guid><description>&lt;p&gt;In June 2024 the Italian data-protection authority, the Garante, told OpenAI it had breached the GDPR by training ChatGPT on personal data without a valid legal basis and without telling anyone. The fine, confirmed in December 2024, was €15 million. What makes that number worth remembering is not its size — it is small by the standards of the regulation, which tops out at 4% of global annual turnover — but how ordinary the underlying mistake was. Nobody set out to break the law. They scraped the web, trained a model, and shipped it, exactly the way most teams now bolt a generative feature onto a product. The compliance risk did not arrive as a dramatic event. It was baked in from the first training run and nobody noticed until a regulator did.&lt;/p&gt;</description></item><item><title>Self-Hosted AI Search: Replacing Google with Perplexica and a Local Model</title><link>https://vo.rs/story/self-hosted-ai-search-replacing-google-with-perplexica-and-a-local-model/</link><pubDate>Wed, 19 Mar 2025 09:00:00 +0000</pubDate><guid>https://vo.rs/story/self-hosted-ai-search-replacing-google-with-perplexica-and-a-local-model/</guid><description>&lt;p&gt;Searching the web has become a chore. You type a question, scroll past a screen of ads, then past four articles that are themselves just AI-generated SEO sludge, and somewhere on the second page you find the actual answer — if it&amp;rsquo;s there at all. The cloud &amp;ldquo;answer engines&amp;rdquo; fix the experience but trade away your privacy: every query goes to someone else&amp;rsquo;s server to be logged, profiled, and monetised, which for the kind of questions I actually search (health, finances, half-formed project ideas) is not a trade I want to make. I wanted the good bit — a model that reads the web and answers the question with sources — without the surveillance. That&amp;rsquo;s where Perplexica comes in.&lt;/p&gt;</description></item><item><title>MCP Servers: Giving Language Models Hands and Eyes</title><link>https://vo.rs/story/mcp-servers-giving-language-models-hands-and-eyes/</link><pubDate>Tue, 18 Feb 2025 09:00:00 +0000</pubDate><guid>https://vo.rs/story/mcp-servers-giving-language-models-hands-and-eyes/</guid><description>&lt;p&gt;A language model on its own is a brain in a jar. It can reason, summarise, and write you a sonnet about your firewall rules, but it cannot read a file, query a database, or check whether your website is actually up. It only knows what was in its training data and whatever you paste into the chat window. The first time I asked a local model to &amp;ldquo;check my backups ran last night&amp;rdquo; and it confidently invented a plausible-sounding answer with fabricated timestamps, the problem crystallised: the gap between &lt;em&gt;knowing&lt;/em&gt; things and &lt;em&gt;doing&lt;/em&gt; things is the most interesting problem in applied AI right now, and the Model Context Protocol — MCP — is the most sensible attempt I&amp;rsquo;ve seen at closing it.&lt;/p&gt;</description></item><item><title>Running AI Inference on Kubernetes: GPU Scheduling, Ollama, and Resource Sharing</title><link>https://vo.rs/story/running-ai-inference-on-kubernetes-gpu-scheduling-ollama-and-resource-sharing/</link><pubDate>Thu, 09 Jan 2025 09:00:00 +0000</pubDate><guid>https://vo.rs/story/running-ai-inference-on-kubernetes-gpu-scheduling-ollama-and-resource-sharing/</guid><description>&lt;p&gt;Kubernetes was designed for a world of stateless web services you could scale by adding more identical replicas. GPUs are the opposite of that: scarce, expensive, and absolutely not interchangeable with CPU. So the moment you decide to run model inference on your cluster, you discover that Kubernetes treats your graphics card as a curious unknown — it doesn&amp;rsquo;t schedule on it, it can&amp;rsquo;t see it, and your pods come up GPU-less and confused.&lt;/p&gt;</description></item><item><title>Local LLMs: A Practical Comparison of Llama, Mistral, and Gemma for Real Work</title><link>https://vo.rs/story/local-llms-a-practical-comparison-of-llama-mistral-and-gemma-for-real-work/</link><pubDate>Tue, 24 Sep 2024 09:00:00 +0000</pubDate><guid>https://vo.rs/story/local-llms-a-practical-comparison-of-llama-mistral-and-gemma-for-real-work/</guid><description>&lt;p&gt;There is a particular flavour of disappointment unique to running a local LLM for the first time. You&amp;rsquo;ve read the benchmarks, you&amp;rsquo;ve stared at the leaderboard, you spin a model up on your own GPU, ask it something real — and it produces confidently structured nonsense. Then you try a different model and it nails the same task on the first go. The benchmarks didn&amp;rsquo;t lie, exactly. They just don&amp;rsquo;t tell you which model is good at &lt;em&gt;your&lt;/em&gt; work, on &lt;em&gt;your&lt;/em&gt; prompts, in &lt;em&gt;your&lt;/em&gt; format. I&amp;rsquo;ve spent well over a year now using all three of the big open families as everyday tools rather than toys, and this is what I&amp;rsquo;ve learned about Llama, Mistral and Gemma once the novelty has thoroughly worn off.&lt;/p&gt;</description></item><item><title>LoRA Fine-Tuning on Consumer Hardware: Adding Skills to a Model Without Retraining It</title><link>https://vo.rs/story/lora-fine-tuning-on-consumer-hardware-adding-skills-to-a-model-without-retraining-it/</link><pubDate>Tue, 16 Jul 2024 09:00:00 +0000</pubDate><guid>https://vo.rs/story/lora-fine-tuning-on-consumer-hardware-adding-skills-to-a-model-without-retraining-it/</guid><description>&lt;p&gt;&amp;ldquo;Fine-tuning&amp;rdquo; used to be a word that came with a server room attached. Retraining a multi-billion-parameter model meant a rack of data-centre GPUs, weeks of compute, and a budget that no homelab tinkerer was ever going to get signed off. Then a technique called LoRA quietly rewrote the maths, and now you can teach a large model a genuinely new skill on the same graphics card you otherwise use to render explosions. I&amp;rsquo;ve done it on a single 24GB GPU over one long evening — the fans loud, a pot of coffee going cold — and the result was good enough to actually put to work the next morning.&lt;/p&gt;</description></item><item><title>ComfyUI: Node-Based Image Generation for People Who Want Control</title><link>https://vo.rs/story/comfyui-node-based-image-generation-for-people-who-want-control/</link><pubDate>Tue, 21 May 2024 09:00:00 +0000</pubDate><guid>https://vo.rs/story/comfyui-node-based-image-generation-for-people-who-want-control/</guid><description>&lt;p&gt;The first time you open ComfyUI, you will hate it. There&amp;rsquo;s no friendly prompt box waiting for your words, no big orange Generate button — just a tangle of boxes connected by coloured spaghetti, like someone wired up a modular synthesiser and walked off. I closed it the first time too, went back to the form-based UI I&amp;rsquo;d been using, and got on with my evening. Then I went back, a week later, because the people producing the most consistent, repeatable, genuinely controllable images locally were all using it, and there&amp;rsquo;s usually a reason a difficult tool refuses to die. The reason, it turned out, was worth the friction. This is the post I wish I&amp;rsquo;d read before I closed the tab.&lt;/p&gt;</description></item><item><title>LangChain vs LlamaIndex: Orchestrating LLMs Without Going Mad</title><link>https://vo.rs/story/langchain-vs-llamaindex-orchestrating-llms-without-going-mad/</link><pubDate>Tue, 30 Apr 2024 09:00:00 +0000</pubDate><guid>https://vo.rs/story/langchain-vs-llamaindex-orchestrating-llms-without-going-mad/</guid><description>&lt;p&gt;The moment you try to build anything real with a language model, you discover the hard part isn&amp;rsquo;t the model. It&amp;rsquo;s everything around it: loading documents, splitting them sensibly, embedding them, stuffing the right context into a prompt, calling a tool, parsing the reply, and doing it all again. You can write this yourself — I did, twice, badly — or you can reach for a framework. The two that dominate are &lt;strong&gt;LangChain&lt;/strong&gt; and &lt;strong&gt;LlamaIndex&lt;/strong&gt;, and the internet will cheerfully tell you to use both, neither, or that one is bloated and the other is a toy. Here&amp;rsquo;s what I actually think after building with each.&lt;/p&gt;</description></item><item><title>Whisper: Self-Hosted Speech-to-Text That Runs on a Raspberry Pi</title><link>https://vo.rs/story/whisper-self-hosted-speech-to-text-that-runs-on-a-raspberry-pi/</link><pubDate>Tue, 26 Mar 2024 09:00:00 +0000</pubDate><guid>https://vo.rs/story/whisper-self-hosted-speech-to-text-that-runs-on-a-raspberry-pi/</guid><description>&lt;p&gt;I have a drawer full of Raspberry Pis that I bought with grand plans and then quietly retired. So when OpenAI released Whisper as an open model — actual weights, MIT licence, no API key required — my first thought was not &amp;ldquo;this will revolutionise transcription&amp;rdquo;. It was &amp;ldquo;can I make the saddest Pi in the drawer earn its keep&amp;rdquo;. The answer, with some caveats I&amp;rsquo;ll be honest about, is yes.&lt;/p&gt;</description></item><item><title>Running Stable Diffusion on a Budget GPU: What Actually Works Below 8GB VRAM</title><link>https://vo.rs/story/running-stable-diffusion-on-a-budget-gpu-what-actually-works-below-8gb-vram/</link><pubDate>Tue, 27 Feb 2024 09:00:00 +0000</pubDate><guid>https://vo.rs/story/running-stable-diffusion-on-a-budget-gpu-what-actually-works-below-8gb-vram/</guid><description>&lt;p&gt;Every thread about running Stable Diffusion locally eventually arrives at the same smug conclusion: just buy a 4090. This is wonderful advice if you have a spare grand and a power supply that doesn&amp;rsquo;t sound like a hairdryer. The rest of us are sitting on a 6GB laptop card, an old GTX 1060, or a 4GB GPU that the internet has decided is e-waste. Good news: the internet is wrong, and I have spent enough late nights proving it to write this down.&lt;/p&gt;</description></item><item><title>Harnessing the Power of ChatGPT to Generate Stunning Images with DALL-E 2</title><link>https://vo.rs/story/harnessing-the-power-of-chatgpt-to-generate-stunning-images-with-dall-e-2/</link><pubDate>Tue, 28 Mar 2023 15:14:16 +0000</pubDate><guid>https://vo.rs/story/harnessing-the-power-of-chatgpt-to-generate-stunning-images-with-dall-e-2/</guid><description>&lt;p&gt;I want to be straight with you up front: as of May 2026, OpenAI has retired both DALL-E 2 and DALL-E 3 from its API, and ChatGPT moved its built-in image generation onto the newer &lt;code&gt;gpt-image&lt;/code&gt; models back in late 2025. So this post is partly a period piece. But the &lt;em&gt;workflow&lt;/em&gt; it describes — using a language model to write prompts for an image model, then iterating — has not died at all. It has become the default way everyone generates images, baked so deeply into the tools that most people no longer notice they&amp;rsquo;re doing it. Understanding the loop on its own terms, separate from whichever model is currently fashionable, is the durable skill. The model names change every eighteen months; the technique does not.&lt;/p&gt;</description></item><item><title>Why ChatGPT Can't Pick Stocks: The Limits of LLMs for Market Predictions</title><link>https://vo.rs/story/the-limitations-of-chatgpt-4-for-stock-market-predictions-and-investments-introduction/</link><pubDate>Wed, 15 Mar 2023 16:32:05 +0000</pubDate><guid>https://vo.rs/story/the-limitations-of-chatgpt-4-for-stock-market-predictions-and-investments-introduction/</guid><description>&lt;p&gt;I asked a large language model, in a moment of weakness, which stock it would buy tomorrow. It gave me a confident, well-structured, thoroughly-reasoned answer complete with a target price and a neat paragraph on the company&amp;rsquo;s &amp;ldquo;strong fundamentals&amp;rdquo;. It was also, I am fairly sure, drawing on financial data that was over a year out of date, had no idea what the share had done that morning, and would have produced an equally confident answer if I had asked about a company that went bankrupt in 2019. That is the whole problem in one anecdote: the fluency is real, and it is precisely what makes the model dangerous as a trading tool.&lt;/p&gt;</description></item><item><title>Is ChatGPT at a tipping point on the hype scale?</title><link>https://vo.rs/story/is-chatgpt-is-at-tipping-point-on-the-hype-scale/</link><pubDate>Thu, 22 Dec 2022 16:46:52 +0000</pubDate><guid>https://vo.rs/story/is-chatgpt-is-at-tipping-point-on-the-hype-scale/</guid><description>&lt;p&gt;ChatGPT went public on 30 November 2022 and crossed a million users in five days — faster than Instagram, faster than Spotify, faster than anything I can remember watching. By the time I sat down to write this, three weeks later, half my feed was either declaring the end of Google or declaring the whole thing a parlour trick. Both camps are wrong in the same way: they&amp;rsquo;re reacting to the demo instead of the mechanism. So let me try to do the unfashionable thing and ask what&amp;rsquo;s actually in the box, where it earns its keep, and where the hype is writing cheques the model can&amp;rsquo;t cash.&lt;/p&gt;</description></item><item><title>Brexit</title><link>https://vo.rs/story/brexit/</link><pubDate>Sun, 10 Apr 2022 11:57:56 +0000</pubDate><guid>https://vo.rs/story/brexit/</guid><description>&lt;p&gt;Back in 2019, OpenAI released GPT-2, and for a few weeks it felt like the most exciting and faintly alarming thing on the internet. The largest model, 1.5 billion parameters, was held back at first — OpenAI staged the release across the year, citing worries about mass-produced misinformation, and only published the full weights on 5 November 2019. So naturally, the moment I could run it, I gave it the most misinformation-friendly prompt I could think of: a couple of sentences about Brexit, and a request to keep going.&lt;/p&gt;</description></item><item><title>Ibex: anatomy of a GPT-2 hallucination</title><link>https://vo.rs/story/ibex/</link><pubDate>Wed, 16 Mar 2022 11:24:03 +0000</pubDate><guid>https://vo.rs/story/ibex/</guid><description>&lt;p&gt;A few years ago I fed the word &amp;ldquo;ibex&amp;rdquo; to a GPT-2 model and let it run. What came back was a few hundred words of confident, grammatically immaculate prose claiming, among other things, that the ibex is &amp;ldquo;the most common wild goat in North America&amp;rdquo;, that it was &amp;ldquo;primarily introduced by the Romans during the fourth century&amp;rdquo;, and that it can weigh &amp;ldquo;roughly 400 pounds&amp;rdquo;. Every one of those is false. The animal it described does not exist. And yet it reads like an encyclopaedia entry, which is precisely the problem worth dwelling on — because the failure mode that produced it is the same one sitting underneath today&amp;rsquo;s far larger models.&lt;/p&gt;</description></item><item><title>Playing around with GPT-2 - the sequel</title><link>https://vo.rs/story/playing-around-with-gpt-2-sequel/</link><pubDate>Tue, 04 Jan 2022 08:24:06 +0000</pubDate><guid>https://vo.rs/story/playing-around-with-gpt-2-sequel/</guid><description>&lt;p&gt;When I &lt;a href="https://vo.rs/story/playing-around-with-gtp-2/"&gt;played with the smaller GPT-2 models&lt;/a&gt;, the output was fun but obviously a machine talking to itself — grammatical, topically vague, and prone to collapsing into nonsense after a sentence or two. OpenAI had deliberately held back the full model, worried it was too good and too easy to abuse for spam and fake news. On 5 November 2019 they changed their minds and released the lot: the full 1.5-billion-parameter model, &lt;code&gt;1558M&lt;/code&gt;, having &amp;ldquo;seen no strong evidence of misuse so far&amp;rdquo;. So of course I ran it against exactly the same prompts, to see how much the extra parameters actually buy you.&lt;/p&gt;</description></item><item><title>Playing around with GTP-2</title><link>https://vo.rs/story/playing-around-with-gtp-2/</link><pubDate>Wed, 06 Oct 2021 11:40:42 +0000</pubDate><guid>https://vo.rs/story/playing-around-with-gtp-2/</guid><description>&lt;p&gt;In early 2019 OpenAI announced a language model good enough that they were, they said, too nervous to release it: GPT-2, described in their paper &lt;em&gt;Language Models are Unsupervised Multitask Learners&lt;/em&gt;. The worry was that a text generator this fluent would be a gift to spammers and fake-news mills. Rather than ship the full 1.5-billion-parameter model, they staged the release, starting with a much smaller subset. That smaller model is the toy I got my hands on, and this is what happened when I actually ran it.&lt;/p&gt;</description></item><item><title>Mediterranean Diet</title><link>https://vo.rs/story/mediterranean-diet/</link><pubDate>Wed, 09 Jun 2021 16:28:00 +0000</pubDate><guid>https://vo.rs/story/mediterranean-diet/</guid><description>&lt;p&gt;A confession about this page, because the honesty matters more than the tidiness. The article that used to sit here was generated by GPT-2, an early language model, as a deliberate experiment in machine-written text back in 2021. It read plausibly and it was almost entirely wrong — a smooth cascade of invented citations, garbled biochemistry, and confident nonsense about &amp;ldquo;meat-lover&amp;rsquo;s fries&amp;rdquo; and cancers of the &amp;ldquo;colon, colon, liver.&amp;rdquo; I&amp;rsquo;ve kept the URL and rewritten the substance from real sources, partly because the diet deserves an accurate write-up and partly because that old text is a perfect, preserved specimen of why you cannot trust fluent prose to be true prose. If you want the longer version of that lesson, I wrote about the practical limits of running your own models in &lt;a href="https://vo.rs/story/local-llms-a-practical-comparison-of-llama-mistral-and-gemma-for-real-work/"&gt;a comparison of Llama, Mistral and Gemma for real work&lt;/a&gt;; the short version is that a model&amp;rsquo;s confidence and a model&amp;rsquo;s correctness are entirely unrelated quantities. So here is the actual Mediterranean diet, with names, dates and studies you can check.&lt;/p&gt;</description></item></channel></rss>