13 October 2026
What a RAG assistant and semantic search really cost on Cloudflare's free plan: measured neurons, the account-wide limit and its 24-hour lockout, and the design decisions that followed.
13 October 2026
What a RAG assistant and semantic search really cost on Cloudflare's free plan: measured neurons, the account-wide limit and its 24-hour lockout, and the design decisions that followed.
10 October 2026
My site's AI assistant now links to the blog article or the homepage section an answer came from. Retrieval alone could not pick the section reliably, so the widget matches the answer against the page itself.
6 October 2026
A RAG chat assistant fully on Cloudflare (Workers AI, Vectorize, a Durable Object) where the contact offer has to be earned: the model only reports a judgment, code decides.
13 September 2026
Cache invalidation closes the loop from part 8's stale-cache workaround, proven live with a real hit-then-edit-then-miss test. Plus a small backend bug (an unprompted greeting mid-conversation) and a run of real mobile layout bugs on the widget interface.
13 September 2026
The chat widget goes live, and real use immediately surfaces a language rule the model ignored, a cross-partition retrieval sort bug that had been silently serving the worst-matching content since launch, a citation leak, and the stale-cache gotcha that makes the next part necessary.
13 September 2026
Securing the assistant Worker before it gets a public widget: per-IP rate limiting, wiring in a Turnstile check the site can't pass yet, a conversation-logging heuristic that turned out not to be a security boundary, and an older language-handling bug caught along the way.
13 September 2026
Backfilling the knowledge store for real: embedding all 93 blog articles, authoring personal and professional facts through an interview process (and catching a real factual error along the way), and refining the assistant's conversational manners for small talk, farewells, and off-topic questions.
12 September 2026
Building the assistant Worker itself: a public-facing least-privilege Cosmos role, querying a vector database with no SDK available, a generation model that turned out to already be deprecated, and a live test that correctly answered a Dutch question from English source content.
12 September 2026
Embedding real articles into the vector store: a silent Ollama context-window truncation bug, and real before/after evidence that paragraph-level chunking dramatically outperforms whole-article embeddings.
12 September 2026
Provisioning the Cosmos DB vector store: an immutable container policy, a database-level shared-throughput restriction that took three failed deployments to diagnose, and a missing executeQuery permission found only once a real query was attempted.
12 September 2026
Testing whether an embedding model run locally through Ollama produces the same vectors as the same model hosted on Cloudflare Workers AI, the result that decides whether this project's local-authoring/cloud-serving split actually works.
12 September 2026
Kicking off a new project and blog series: a RAG-based AI chat assistant that answers visitor questions about me, reusing the Cosmos DB + Cloudflare stack already running this blog.
25 January 2026
Fighting two broken Semantic Kernel 1.70.0-preview vector-store connectors (InMemoryVectorStore, SqliteVectorStore) while building a RAG-based word selector for Hangman — the fix was a manual raw-SQL upsert plus code-level category filtering, not the built-in abstractions.