<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
  <title>ReLU.chat Blog</title>
  <link>https://relu.chat/blog/</link>
  <description>Technical articles about on-device AI, browser-based chatbots, NLP, and privacy-first machine learning.</description>
  <language>en</language>
  <lastBuildDate>Thu, 06 Aug 2026 13:16:22 GMT</lastBuildDate>
  <atom:link href="https://relu.chat/blog/feed.xml" rel="self" type="application/rss+xml"/>
  <image>
    <url>https://relu.chat/assets/logo.png</url>
    <title>ReLU.chat</title>
    <link>https://relu.chat</link>
  </image>
  <item>
    <title>Measuring Retrieval Quality: Precision, Recall, MRR and NDCG</title>
    <link>https://relu.chat/blog/retrieval-metrics-precision-recall-mrr/</link>
    <guid isPermaLink="true">https://relu.chat/blog/retrieval-metrics-precision-recall-mrr/</guid>
    <pubDate>Thu, 06 Aug 2026 17:30:00 GMT</pubDate>
    <description>How to evaluate a knowledge-base retriever with precision, recall, MRR, and NDCG: definitions, worked examples, and a tuning loop for dense/sparse ensembles.</description>
    <author>ReLU.chat</author>
    <category>retrieval</category>
    <category>ndcg</category>
    <category>mrr</category>
    <category>evaluation</category>
  </item>
  <item>
    <title>Chunking Strategies for Knowledge Bases: Splitting Text for Retrieval</title>
    <link>https://relu.chat/blog/chunking-strategies-knowledge-base/</link>
    <guid isPermaLink="true">https://relu.chat/blog/chunking-strategies-knowledge-base/</guid>
    <pubDate>Thu, 06 Aug 2026 16:45:00 GMT</pubDate>
    <description>How chunk size, boundaries, and overlap decide what a knowledge base retriever can find — fixed, overlapping, and structure-aware chunking compared.</description>
    <author>ReLU.chat</author>
    <category>chunking</category>
    <category>retrieval</category>
    <category>knowledge-base</category>
    <category>embeddings</category>
    <category>bm25</category>
  </item>
  <item>
    <title>Query Expansion Without an LLM: Synonyms, Spelling and Boosting</title>
    <link>https://relu.chat/blog/query-expansion-without-llm/</link>
    <guid isPermaLink="true">https://relu.chat/blog/query-expansion-without-llm/</guid>
    <pubDate>Thu, 06 Aug 2026 15:30:00 GMT</pubDate>
    <description>Improve retrieval without an LLM: index-time alias weighting, query-side synonym expansion, edit-distance spelling correction, and boosting before re-ranking.</description>
    <author>ReLU.chat</author>
    <category>query-expansion</category>
    <category>bm25</category>
    <category>spelling-correction</category>
    <category>retrieval</category>
  </item>
  <item>
    <title>How Knowledge Bases Are Structured: Fragments, Fields and Metadata</title>
    <link>https://relu.chat/blog/knowledge-base-fragments-fields-metadata/</link>
    <guid isPermaLink="true">https://relu.chat/blog/knowledge-base-fragments-fields-metadata/</guid>
    <pubDate>Thu, 06 Aug 2026 14:00:00 GMT</pubDate>
    <description>Knowledge base entries built from categorized fragments, weighted fields, and confidence metadata — and why structure decides retrieval quality.</description>
    <author>ReLU.chat</author>
    <category>knowledge-base</category>
    <category>retrieval</category>
    <category>metadata</category>
    <category>bm25</category>
    <category>rag</category>
  </item>
  <item>
    <title>IndexedDB for On-Device AI: Storing Embeddings and Session State Locally</title>
    <link>https://relu.chat/blog/indexeddb-client-storage/</link>
    <guid isPermaLink="true">https://relu.chat/blog/indexeddb-client-storage/</guid>
    <pubDate>Thu, 06 Aug 2026 13:00:00 GMT</pubDate>
    <description>Store embeddings as binary and session state as records with IndexedDB: schema design, vector search, transactions, and local-first privacy.</description>
    <author>ReLU.chat</author>
    <category>indexeddb</category>
    <category>storage</category>
    <category>embeddings</category>
    <category>local-first</category>
    <category>privacy</category>
  </item>
  <item>
    <title>Float32 vs Float64: Precision Trade-Offs for In-Browser ML</title>
    <link>https://relu.chat/blog/float32-vs-float64-precision/</link>
    <guid isPermaLink="true">https://relu.chat/blog/float32-vs-float64-precision/</guid>
    <pubDate>Thu, 06 Aug 2026 12:30:00 GMT</pubDate>
    <description>When to use float32 versus float64 in browser ML: tensors stay float32, accumulators like EMA summaries deserve float64, and int8 quantization shrinks weights.</description>
    <author>ReLU.chat</author>
    <category>float32</category>
    <category>float64</category>
    <category>precision</category>
    <category>quantization</category>
  </item>
  <item>
    <title>The Real Cost of Cosine Similarity: Optimizing Vector Math in JavaScript</title>
    <link>https://relu.chat/blog/browser-vector-math-optimization/</link>
    <guid isPermaLink="true">https://relu.chat/blog/browser-vector-math-optimization/</guid>
    <pubDate>Thu, 06 Aug 2026 11:15:00 GMT</pubDate>
    <description>What cosine similarity actually costs in the browser, and how precomputed norms, typed arrays, bounded top-k, and memoization cut that cost.</description>
    <author>ReLU.chat</author>
    <category>performance</category>
    <category>javascript</category>
    <category>vectors</category>
    <category>embeddings</category>
    <category>retrieval</category>
  </item>
  <item>
    <title>Offline-First Chat Architecture: Queues, Retries and Sync-Free Design</title>
    <link>https://relu.chat/blog/offline-first-chat-architecture/</link>
    <guid isPermaLink="true">https://relu.chat/blog/offline-first-chat-architecture/</guid>
    <pubDate>Thu, 06 Aug 2026 10:00:00 GMT</pubDate>
    <description>Designing browser chat that works offline: persisted work queues, retries with backoff and idempotency, and sync-free design with one local copy of state.</description>
    <author>ReLU.chat</author>
    <category>offline-first</category>
    <category>service-worker</category>
    <category>indexeddb</category>
    <category>chat-architecture</category>
  </item>
  <item>
    <title>Model Size vs Quality: Why a Small Distilled Model Can Beat a Big One on Edge Devices</title>
    <link>https://relu.chat/blog/model-size-vs-quality/</link>
    <guid isPermaLink="true">https://relu.chat/blog/model-size-vs-quality/</guid>
    <pubDate>Thu, 06 Aug 2026 09:30:00 GMT</pubDate>
    <description>Smaller can be better: distillation, quantization, and domain fit explain when a 22 MB model beats a much larger one on edge devices.</description>
    <author>ReLU.chat</author>
    <category>model-size</category>
    <category>distillation</category>
    <category>quantization</category>
    <category>edge-ai</category>
    <category>on-device</category>
  </item>
  <item>
    <title>Conversation State Machines: Modes, Intents and Follow-Up Routing</title>
    <link>https://relu.chat/blog/conversation-state-machines/</link>
    <guid isPermaLink="true">https://relu.chat/blog/conversation-state-machines/</guid>
    <pubDate>Thu, 06 Aug 2026 08:45:00 GMT</pubDate>
    <description>How modes, intents, and follow-up routing fit together in a conversation state machine, with JavaScript examples and a look at ReLU.chat&#39;s policy.</description>
    <author>ReLU.chat</author>
    <category>conversation</category>
    <category>state-machine</category>
    <category>intents</category>
    <category>routing</category>
    <category>chatbots</category>
  </item>
  <item>
    <title>Debugging In-Browser ML: Profiling, Logging and Graceful Fallbacks</title>
    <link>https://relu.chat/blog/debugging-browser-ml/</link>
    <guid isPermaLink="true">https://relu.chat/blog/debugging-browser-ml/</guid>
    <pubDate>Thu, 06 Aug 2026 07:30:00 GMT</pubDate>
    <description>Practical techniques for debugging browser-based ML: profiling inference stages, structured on-device logging, and graceful fallback paths.</description>
    <author>ReLU.chat</author>
    <category>debugging</category>
    <category>browser-ml</category>
    <category>profiling</category>
    <category>fallbacks</category>
  </item>
  <item>
    <title>Bias in Retrieval Chatbots: Where It Comes From and How to Audit It</title>
    <link>https://relu.chat/blog/bias-in-retrieval-chatbots/</link>
    <guid isPermaLink="true">https://relu.chat/blog/bias-in-retrieval-chatbots/</guid>
    <pubDate>Thu, 06 Aug 2026 06:15:00 GMT</pubDate>
    <description>Where bias enters retrieval chatbots — corpus, embeddings, term weighting, ranking — and a practical audit procedure for each stage.</description>
    <author>ReLU.chat</author>
    <category>bias</category>
    <category>retrieval</category>
    <category>evaluation</category>
    <category>nlp</category>
    <category>chatbots</category>
  </item>
  <item>
    <title>Privacy Checklist for Browser-Based AI: What Actually Leaves Your Device</title>
    <link>https://relu.chat/blog/privacy-checklist-browser-ai/</link>
    <guid isPermaLink="true">https://relu.chat/blog/privacy-checklist-browser-ai/</guid>
    <pubDate>Wed, 05 Aug 2026 11:30:00 GMT</pubDate>
    <description>What actually leaves your device when AI runs in the browser? A six-step audit: network, offline test, storage, and source.</description>
    <author>ReLU.chat</author>
    <category>privacy</category>
    <category>security</category>
    <category>checklist</category>
    <category>browser</category>
    <category>on-device</category>
  </item>
  <item>
    <title>Named Entity Recognition Without an LLM: Regex, Fuzzy Matching, and Knowledge Bases</title>
    <link>https://relu.chat/blog/named-entity-recognition-no-llm/</link>
    <guid isPermaLink="true">https://relu.chat/blog/named-entity-recognition-no-llm/</guid>
    <pubDate>Tue, 04 Aug 2026 12:00:00 GMT</pubDate>
    <description>Gazetteers, regex, Levenshtein fuzzy matching, and knowledge bases deliver solid entity extraction in the browser — no LLM required.</description>
    <author>ReLU.chat</author>
    <category>ner</category>
    <category>nlp</category>
    <category>regex</category>
    <category>fuzzy-matching</category>
    <category>on-device</category>
  </item>
  <item>
    <title>The Math of BM25: A Worked Example of Sparse Retrieval</title>
    <link>https://relu.chat/blog/bm25-math-worked-example/</link>
    <guid isPermaLink="true">https://relu.chat/blog/bm25-math-worked-example/</guid>
    <pubDate>Tue, 04 Aug 2026 11:00:00 GMT</pubDate>
    <description>Step-by-step BM25 ranking: smoothed IDF, term-frequency saturation (k1), length normalization (b), and field weighting.</description>
    <author>ReLU.chat</author>
    <category>bm25</category>
    <category>retrieval</category>
    <category>search</category>
    <category>sparse</category>
    <category>ranking</category>
  </item>
  <item>
    <title>WebAssembly and On-Device ML: Why WASM Makes Browser AI Fast</title>
    <link>https://relu.chat/blog/webassembly-browser-ml/</link>
    <guid isPermaLink="true">https://relu.chat/blog/webassembly-browser-ml/</guid>
    <pubDate>Tue, 04 Aug 2026 11:00:00 GMT</pubDate>
    <description>What WebAssembly is, why compiled numeric kernels beat JavaScript for ML, and how runtimes like ONNX Runtime run models entirely in the browser.</description>
    <author>ReLU.chat</author>
    <category>webassembly</category>
    <category>wasm</category>
    <category>onnx-runtime</category>
    <category>inference</category>
    <category>browser</category>
  </item>
  <item>
    <title>Latency Budgets for Conversational UI: The 400ms Response Rule</title>
    <link>https://relu.chat/blog/latency-budgets-conversational-ui/</link>
    <guid isPermaLink="true">https://relu.chat/blog/latency-budgets-conversational-ui/</guid>
    <pubDate>Mon, 03 Aug 2026 11:00:00 GMT</pubDate>
    <description>First-token latency under 400 ms keeps a conversation feeling instant. Budgets, streaming, and progressive loading for conversational UI.</description>
    <author>ReLU.chat</author>
    <category>latency</category>
    <category>performance</category>
    <category>conversational-ui</category>
    <category>streaming</category>
    <category>ux</category>
  </item>
  <item>
    <title>KaTeX vs MathJax: Rendering Math in the Browser</title>
    <link>https://relu.chat/blog/katex-vs-mathjax-math-rendering/</link>
    <guid isPermaLink="true">https://relu.chat/blog/katex-vs-mathjax-math-rendering/</guid>
    <pubDate>Mon, 03 Aug 2026 10:30:00 GMT</pubDate>
    <description>KaTeX vs MathJax for in-browser math: speed, bundle size, TeX coverage, accessibility, and streaming chat output.</description>
    <author>ReLU.chat</author>
    <category>katex</category>
    <category>mathjax</category>
    <category>math</category>
    <category>rendering</category>
    <category>latex</category>
  </item>
  <item>
    <title>INT8 Quantization Explained: From FP32 to 8-Bit Without Losing Accuracy</title>
    <link>https://relu.chat/blog/int8-quantization-explained/</link>
    <guid isPermaLink="true">https://relu.chat/blog/int8-quantization-explained/</guid>
    <pubDate>Mon, 03 Aug 2026 09:30:00 GMT</pubDate>
    <description>How INT8 quantization maps FP32 weights and activations to 256 buckets, why accuracy usually survives, and how calibration keeps it that way.</description>
    <author>ReLU.chat</author>
    <category>quantization</category>
    <category>int8</category>
    <category>onnx</category>
    <category>optimization</category>
    <category>browser</category>
  </item>
  <item>
    <title>Cosine Similarity and Vector Search: The Math Behind Semantic Retrieval</title>
    <link>https://relu.chat/blog/cosine-similarity-vector-search/</link>
    <guid isPermaLink="true">https://relu.chat/blog/cosine-similarity-vector-search/</guid>
    <pubDate>Sun, 02 Aug 2026 10:00:00 GMT</pubDate>
    <description>The math of cosine similarity and vector search: dot products, normalization, brute-force top-k in the browser, and hybrid dense-sparse ranking.</description>
    <author>ReLU.chat</author>
    <category>vector-search</category>
    <category>cosine-similarity</category>
    <category>embeddings</category>
    <category>retrieval</category>
    <category>browser</category>
  </item>
</channel>
</rss>