<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1">
  <url>
    <loc>https://relu.chat/</loc>
    <changefreq>weekly</changefreq>
    <priority>1.0</priority>
  </url>
  <url>
    <loc>https://relu.chat/how-it-works.html</loc>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://relu.chat/blog/</loc>
    <changefreq>weekly</changefreq>
    <priority>0.9</priority>
  </url>
  <url>
    <loc>https://relu.chat/chat/data-science-chat/</loc>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <lastmod>2026-09-09</lastmod>
  </url>
  <url>
    <loc>https://relu.chat/chat/game-theory-chat/</loc>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <lastmod>2026-09-09</lastmod>
  </url>
  <url>
    <loc>https://relu.chat/chat/golden-age-inquiry/</loc>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <lastmod>2026-09-09</lastmod>
  </url>
  <url>
    <loc>https://relu.chat/tools/</loc>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://relu.chat/tools/neural-network/</loc>
    <changefreq>monthly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://relu.chat/tools/gradient-descent/</loc>
    <changefreq>monthly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://relu.chat/tools/backpropagation/</loc>
    <changefreq>monthly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://relu.chat/tools/activation-functions/</loc>
    <changefreq>monthly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://relu.chat/tools/k-means-clustering/</loc>
    <changefreq>monthly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://relu.chat/tools/decision-tree/</loc>
    <changefreq>monthly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://relu.chat/chat/</loc>
    <changefreq>monthly</changefreq>
    <priority>0.9</priority>
    <lastmod>2026-09-09</lastmod>
  </url>
  <url>
    <loc>https://relu.chat/chat/reinforcement-learning-chat/</loc>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <lastmod>2026-09-09</lastmod>
  </url>
  <url>
    <loc>https://relu.chat/chat/linear-algebra-chat/</loc>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <lastmod>2026-09-09</lastmod>
  </url>
  <url>
    <loc>https://relu.chat/chat/web-platform-chat/</loc>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <lastmod>2026-09-09</lastmod>
  </url>
  <url>
    <loc>https://relu.chat/blog/dot-product-cosine-worked-example/</loc>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <lastmod>2026-09-09</lastmod>
    <image:image>
      <image:loc>https://relu.chat/assets/blog/dot-product-cosine-worked-example.svg</image:loc>
      <image:caption>Dot Product and Cosine Similarity, Step by Step</image:caption>

    </image:image>
  </url>
  <url>
    <loc>https://relu.chat/blog/grouped-validation-leakage/</loc>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <lastmod>2026-09-09</lastmod>
    <image:image>
      <image:loc>https://relu.chat/assets/blog/grouped-validation-leakage.svg</image:loc>
      <image:caption>Data Leakage: Split by Entity Before You Train</image:caption>

    </image:image>
  </url>
  <url>
    <loc>https://relu.chat/blog/least-squares-without-inverse/</loc>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <lastmod>2026-09-09</lastmod>
    <image:image>
      <image:loc>https://relu.chat/assets/blog/least-squares-without-inverse.svg</image:loc>
      <image:caption>Least Squares Without Computing an Inverse</image:caption>

    </image:image>
  </url>
  <url>
    <loc>https://relu.chat/blog/local-chat-privacy-network/</loc>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <lastmod>2026-09-09</lastmod>
    <image:image>
      <image:loc>https://relu.chat/assets/blog/local-chat-privacy-network.svg</image:loc>
      <image:caption>Local Chat Privacy: What Still Uses the Network?</image:caption>

    </image:image>
  </url>
  <url>
    <loc>https://relu.chat/blog/nash-equilibrium-best-response-table/</loc>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <lastmod>2026-09-09</lastmod>
    <image:image>
      <image:loc>https://relu.chat/assets/blog/nash-equilibrium-best-response-table.svg</image:loc>
      <image:caption>Find a Nash Equilibrium with Best Responses</image:caption>

    </image:image>
  </url>
  <url>
    <loc>https://relu.chat/blog/precision-recall-small-example/</loc>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <lastmod>2026-09-09</lastmod>
    <image:image>
      <image:loc>https://relu.chat/assets/blog/precision-recall-small-example.svg</image:loc>
      <image:caption>Precision and Recall: A 100-Case Example</image:caption>

    </image:image>
  </url>
  <url>
    <loc>https://relu.chat/blog/q-learning-sarsa-worked-example/</loc>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <lastmod>2026-09-09</lastmod>
    <image:image>
      <image:loc>https://relu.chat/assets/blog/q-learning-sarsa-worked-example.svg</image:loc>
      <image:caption>Q-learning vs SARSA: One Update, Worked Through</image:caption>

    </image:image>
  </url>
  <url>
    <loc>https://relu.chat/blog/rank-svd-conditioning/</loc>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <lastmod>2026-09-09</lastmod>
    <image:image>
      <image:loc>https://relu.chat/assets/blog/rank-svd-conditioning.svg</image:loc>
      <image:caption>Rank, SVD, and Conditioning: Three Different Questions</image:caption>

    </image:image>
  </url>
  <url>
    <loc>https://relu.chat/blog/reading-islamic-science-sources/</loc>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <lastmod>2026-09-09</lastmod>
    <image:image>
      <image:loc>https://relu.chat/assets/blog/reading-islamic-science-sources.svg</image:loc>
      <image:caption>How to Read Claims About Medieval Islamic Science</image:caption>

    </image:image>
  </url>
  <url>
    <loc>https://relu.chat/blog/reward-design-small-chatbot/</loc>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <lastmod>2026-09-09</lastmod>
    <image:image>
      <image:loc>https://relu.chat/assets/blog/reward-design-small-chatbot.svg</image:loc>
      <image:caption>Reward Design for a Small Learning Chatbot</image:caption>

    </image:image>
  </url>
  <url>
    <loc>https://relu.chat/blog/rl-termination-truncation/</loc>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <lastmod>2026-09-09</lastmod>
    <image:image>
      <image:loc>https://relu.chat/assets/blog/rl-termination-truncation.svg</image:loc>
      <image:caption>Termination vs Truncation in RL Targets</image:caption>

    </image:image>
  </url>
  <url>
    <loc>https://relu.chat/blog/service-worker-model-updates/</loc>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <lastmod>2026-09-09</lastmod>
    <image:image>
      <image:loc>https://relu.chat/assets/blog/service-worker-model-updates.svg</image:loc>
      <image:caption>Service Worker Updates Without Stale Model Weights</image:caption>

    </image:image>
  </url>
  <url>
    <loc>https://relu.chat/blog/tiny-policy-training-cpu/</loc>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <lastmod>2026-09-09</lastmod>
    <image:image>
      <image:loc>https://relu.chat/assets/blog/tiny-policy-training-cpu.svg</image:loc>
      <image:caption>Training a Chatbot Policy on a Laptop</image:caption>

    </image:image>
  </url>
  <url>
    <loc>https://relu.chat/blog/wasm-javascript-policy-parity/</loc>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <lastmod>2026-09-09</lastmod>
    <image:image>
      <image:loc>https://relu.chat/assets/blog/wasm-javascript-policy-parity.svg</image:loc>
      <image:caption>WASM vs JavaScript: Verify the Same Model First</image:caption>

    </image:image>
  </url>
  <url>
    <loc>https://relu.chat/blog/retrieval-metrics-precision-recall-mrr/</loc>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <lastmod>2026-08-06</lastmod>
    <image:image>
      <image:loc>https://relu.chat/assets/blog/retrieval-metrics-precision-recall-mrr.svg</image:loc>
      <image:caption>Measuring Retrieval Quality: Precision, Recall, MRR and NDCG</image:caption>

    </image:image>
  </url>
  <url>
    <loc>https://relu.chat/blog/chunking-strategies-knowledge-base/</loc>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <lastmod>2026-08-06</lastmod>
    <image:image>
      <image:loc>https://relu.chat/assets/blog/chunking-strategies-knowledge-base.svg</image:loc>
      <image:caption>Chunking Strategies for Knowledge Bases: Splitting Text for Retrieval</image:caption>

    </image:image>
  </url>
  <url>
    <loc>https://relu.chat/blog/query-expansion-without-llm/</loc>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <lastmod>2026-08-06</lastmod>
    <image:image>
      <image:loc>https://relu.chat/assets/blog/query-expansion-without-llm.svg</image:loc>
      <image:caption>Query Expansion Without an LLM: Synonyms, Spelling and Boosting</image:caption>

    </image:image>
  </url>
  <url>
    <loc>https://relu.chat/blog/knowledge-base-fragments-fields-metadata/</loc>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <lastmod>2026-08-06</lastmod>
    <image:image>
      <image:loc>https://relu.chat/assets/blog/knowledge-base-fragments-fields-metadata.svg</image:loc>
      <image:caption>How Knowledge Bases Are Structured: Fragments, Fields and Metadata</image:caption>

    </image:image>
  </url>
  <url>
    <loc>https://relu.chat/blog/indexeddb-client-storage/</loc>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <lastmod>2026-09-09</lastmod>
    <image:image>
      <image:loc>https://relu.chat/assets/blog/indexeddb-client-storage.svg</image:loc>
      <image:caption>IndexedDB for On-Device AI: Storing Embeddings and Session State Locally</image:caption>

    </image:image>
  </url>
  <url>
    <loc>https://relu.chat/blog/float32-vs-float64-precision/</loc>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <lastmod>2026-08-06</lastmod>
    <image:image>
      <image:loc>https://relu.chat/assets/blog/float32-vs-float64-precision.svg</image:loc>
      <image:caption>Float32 vs Float64: Precision Trade-Offs for In-Browser ML</image:caption>

    </image:image>
  </url>
  <url>
    <loc>https://relu.chat/blog/browser-vector-math-optimization/</loc>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <lastmod>2026-08-06</lastmod>
    <image:image>
      <image:loc>https://relu.chat/assets/blog/browser-vector-math-optimization.svg</image:loc>
      <image:caption>The Real Cost of Cosine Similarity: Optimizing Vector Math in JavaScript</image:caption>

    </image:image>
  </url>
  <url>
    <loc>https://relu.chat/blog/offline-first-chat-architecture/</loc>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <lastmod>2026-08-06</lastmod>
    <image:image>
      <image:loc>https://relu.chat/assets/blog/offline-first-chat-architecture.svg</image:loc>
      <image:caption>Offline-First Chat Architecture: Queues, Retries and Sync-Free Design</image:caption>

    </image:image>
  </url>
  <url>
    <loc>https://relu.chat/blog/model-size-vs-quality/</loc>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <lastmod>2026-08-06</lastmod>
    <image:image>
      <image:loc>https://relu.chat/assets/blog/model-size-vs-quality.svg</image:loc>
      <image:caption>Model Size vs Quality: Why a Small Distilled Model Can Beat a Big One on Edge Devices</image:caption>

    </image:image>
  </url>
  <url>
    <loc>https://relu.chat/blog/conversation-state-machines/</loc>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <lastmod>2026-08-06</lastmod>
    <image:image>
      <image:loc>https://relu.chat/assets/blog/conversation-state-machines.svg</image:loc>
      <image:caption>Conversation State Machines: Modes, Intents and Follow-Up Routing</image:caption>

    </image:image>
  </url>
  <url>
    <loc>https://relu.chat/blog/debugging-browser-ml/</loc>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <lastmod>2026-08-06</lastmod>
    <image:image>
      <image:loc>https://relu.chat/assets/blog/debugging-browser-ml.svg</image:loc>
      <image:caption>Debugging In-Browser ML: Profiling, Logging and Graceful Fallbacks</image:caption>

    </image:image>
  </url>
  <url>
    <loc>https://relu.chat/blog/bias-in-retrieval-chatbots/</loc>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <lastmod>2026-08-06</lastmod>
    <image:image>
      <image:loc>https://relu.chat/assets/blog/bias-in-retrieval-chatbots.svg</image:loc>
      <image:caption>Bias in Retrieval Chatbots: Where It Comes From and How to Audit It</image:caption>

    </image:image>
  </url>
  <url>
    <loc>https://relu.chat/blog/privacy-checklist-browser-ai/</loc>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <lastmod>2026-08-05</lastmod>
    <image:image>
      <image:loc>https://relu.chat/assets/blog/privacy-checklist-browser-ai.svg</image:loc>
      <image:caption>Privacy Checklist for Browser-Based AI: What Actually Leaves Your Device</image:caption>

    </image:image>
  </url>
  <url>
    <loc>https://relu.chat/blog/named-entity-recognition-no-llm/</loc>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <lastmod>2026-08-04</lastmod>
    <image:image>
      <image:loc>https://relu.chat/assets/blog/named-entity-recognition-no-llm.svg</image:loc>
      <image:caption>Named Entity Recognition Without an LLM: Regex, Fuzzy Matching, and Knowledge Bases</image:caption>

    </image:image>
  </url>
  <url>
    <loc>https://relu.chat/blog/bm25-math-worked-example/</loc>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <lastmod>2026-08-04</lastmod>
    <image:image>
      <image:loc>https://relu.chat/assets/blog/bm25-math-worked-example.svg</image:loc>
      <image:caption>The Math of BM25: A Worked Example of Sparse Retrieval</image:caption>

    </image:image>
  </url>
  <url>
    <loc>https://relu.chat/blog/webassembly-browser-ml/</loc>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <lastmod>2026-08-04</lastmod>
    <image:image>
      <image:loc>https://relu.chat/assets/blog/webassembly-browser-ml.svg</image:loc>
      <image:caption>WebAssembly and On-Device ML: Why WASM Makes Browser AI Fast</image:caption>

    </image:image>
  </url>
  <url>
    <loc>https://relu.chat/blog/latency-budgets-conversational-ui/</loc>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <lastmod>2026-08-03</lastmod>
    <image:image>
      <image:loc>https://relu.chat/assets/blog/latency-budgets-conversational-ui.svg</image:loc>
      <image:caption>Latency Budgets for Conversational UI: The 400ms Response Rule</image:caption>

    </image:image>
  </url>
  <url>
    <loc>https://relu.chat/blog/katex-vs-mathjax-math-rendering/</loc>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <lastmod>2026-08-03</lastmod>
    <image:image>
      <image:loc>https://relu.chat/assets/blog/katex-vs-mathjax-math-rendering.svg</image:loc>
      <image:caption>KaTeX vs MathJax: Rendering Math in the Browser</image:caption>

    </image:image>
  </url>
  <url>
    <loc>https://relu.chat/blog/int8-quantization-explained/</loc>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <lastmod>2026-08-03</lastmod>
    <image:image>
      <image:loc>https://relu.chat/assets/blog/int8-quantization-explained.svg</image:loc>
      <image:caption>INT8 Quantization Explained: From FP32 to 8-Bit Without Losing Accuracy</image:caption>

    </image:image>
  </url>
  <url>
    <loc>https://relu.chat/blog/cosine-similarity-vector-search/</loc>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <lastmod>2026-08-02</lastmod>
    <image:image>
      <image:loc>https://relu.chat/assets/blog/cosine-similarity-vector-search.svg</image:loc>
      <image:caption>Cosine Similarity and Vector Search: The Math Behind Semantic Retrieval</image:caption>

    </image:image>
  </url>
  <url>
    <loc>https://relu.chat/blog/memory-leaks-long-chat-sessions/</loc>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <lastmod>2026-08-02</lastmod>
    <image:image>
      <image:loc>https://relu.chat/assets/blog/memory-leaks-long-chat-sessions.svg</image:loc>
      <image:caption>Memory Management in Long Browser Chat Sessions: Avoiding Leaks</image:caption>

    </image:image>
  </url>
  <url>
    <loc>https://relu.chat/blog/service-worker-caching-strategies/</loc>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <lastmod>2026-08-02</lastmod>
    <image:image>
      <image:loc>https://relu.chat/assets/blog/service-worker-caching-strategies.svg</image:loc>
      <image:caption>Service Worker Caching Strategies for ML Assets</image:caption>

    </image:image>
  </url>
  <url>
    <loc>https://relu.chat/blog/prototype-intent-classification/</loc>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <lastmod>2026-08-01</lastmod>
    <image:image>
      <image:loc>https://relu.chat/assets/blog/prototype-intent-classification.svg</image:loc>
      <image:caption>Intent Classification with Prototype Embeddings: Zero-Shot Style Without an LLM</image:caption>

    </image:image>
  </url>
  <url>
    <loc>https://relu.chat/blog/tokenization-subword-bpe-on-device/</loc>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <lastmod>2026-08-01</lastmod>
    <image:image>
      <image:loc>https://relu.chat/assets/blog/tokenization-subword-bpe-on-device.svg</image:loc>
      <image:caption>Subword Tokenization for On-Device NLP: How BPE Works</image:caption>

    </image:image>
  </url>
  <url>
    <loc>https://relu.chat/blog/web-workers-ui-thread/</loc>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <lastmod>2026-08-01</lastmod>
    <image:image>
      <image:loc>https://relu.chat/assets/blog/web-workers-ui-thread.svg</image:loc>
      <image:caption>Web Workers: Keeping the UI Thread Responsive During Inference</image:caption>

    </image:image>
  </url>
  <url>
    <loc>https://relu.chat/blog/accessibility-ai-chatbots-wcag/</loc>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <lastmod>2026-06-30</lastmod>
    <image:image>
      <image:loc>https://relu.chat/assets/blog/accessibility-ai-chatbots-wcag.svg</image:loc>
      <image:caption>Accessibility in AI Chatbots: WCAG Compliance for Conversational UI</image:caption>

    </image:image>
  </url>
  <url>
    <loc>https://relu.chat/blog/progressive-loading-bow-mlp-transformer/</loc>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <lastmod>2026-09-09</lastmod>
    <image:image>
      <image:loc>https://relu.chat/assets/blog/progressive-loading-bow-mlp-transformer.svg</image:loc>
      <image:caption>Progressive Loading: BOW to MLP to Transformer in 3 Stages</image:caption>

    </image:image>
  </url>
  <url>
    <loc>https://relu.chat/blog/dense-sparse-ensemble-ranking/</loc>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <lastmod>2026-06-30</lastmod>
    <image:image>
      <image:loc>https://relu.chat/assets/blog/dense-sparse-ensemble-ranking.svg</image:loc>
      <image:caption>Dense-Sparse Ensemble Ranking: Combining BM25 and Embeddings</image:caption>

    </image:image>
  </url>
  <url>
    <loc>https://relu.chat/blog/topic-correction-when-users-redirect/</loc>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <lastmod>2026-06-30</lastmod>
    <image:image>
      <image:loc>https://relu.chat/assets/blog/topic-correction-when-users-redirect.svg</image:loc>
      <image:caption>Topic Correction: When Users Say &#39;No, I Meant X&#39;</image:caption>

    </image:image>
  </url>
  <url>
    <loc>https://relu.chat/blog/follow-up-detection-20-patterns/</loc>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <lastmod>2026-06-30</lastmod>
    <image:image>
      <image:loc>https://relu.chat/assets/blog/follow-up-detection-20-patterns.svg</image:loc>
      <image:caption>Follow-Up Detection: 20 Patterns That Make Chatbots Conversational</image:caption>

    </image:image>
  </url>
  <url>
    <loc>https://relu.chat/blog/bm25-browser-field-weighted-retrieval/</loc>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <lastmod>2026-06-30</lastmod>
    <image:image>
      <image:loc>https://relu.chat/assets/blog/bm25-browser-field-weighted-retrieval.svg</image:loc>
      <image:caption>BM25 in the Browser: Field-Weighted Sparse Retrieval Without a Server</image:caption>

    </image:image>
  </url>
  <url>
    <loc>https://relu.chat/blog/service-worker-model-pre-caching/</loc>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <lastmod>2026-09-09</lastmod>
    <image:image>
      <image:loc>https://relu.chat/assets/blog/service-worker-model-pre-caching.svg</image:loc>
      <image:caption>Service Worker Model Pre-Caching: Zero-Wait Chatbot Loading</image:caption>

    </image:image>
  </url>
  <url>
    <loc>https://relu.chat/blog/session-memory-architecture-30-turns/</loc>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <lastmod>2026-06-30</lastmod>
    <image:image>
      <image:loc>https://relu.chat/assets/blog/session-memory-architecture-30-turns.svg</image:loc>
      <image:caption>Session Memory Architecture: 30 Turns of Context Without a Server</image:caption>

    </image:image>
  </url>
  <url>
    <loc>https://relu.chat/blog/progressive-streaming-rendering-chatbots/</loc>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <lastmod>2026-09-09</lastmod>
    <image:image>
      <image:loc>https://relu.chat/assets/blog/progressive-streaming-rendering-chatbots.svg</image:loc>
      <image:caption>Progressive Streaming Rendering: Making Chatbots Feel Native</image:caption>

    </image:image>
  </url>
  <url>
    <loc>https://relu.chat/blog/int8-quantization-browser-mlp/</loc>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <lastmod>2026-09-09</lastmod>
    <image:image>
      <image:loc>https://relu.chat/assets/blog/int8-quantization-browser-mlp.svg</image:loc>
      <image:caption>Int8 Quantization in the Browser: How We Made MLP Inference 4x Faster</image:caption>

    </image:image>
  </url>
  <url>
    <loc>https://relu.chat/blog/onnx-runtime-web-quantization/</loc>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <lastmod>2026-06-10</lastmod>
    <image:image>
      <image:loc>https://relu.chat/assets/blog/onnx-quantization.svg</image:loc>
      <image:caption>ONNX Runtime Web and INT8 Quantization: How 90MB Models Become 22MB</image:caption>

    </image:image>
  </url>
  <url>
    <loc>https://relu.chat/blog/bm25-vs-dense-retrieval/</loc>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <lastmod>2026-06-09</lastmod>
    <image:image>
      <image:loc>https://relu.chat/assets/blog/bm25-vs-dense.svg</image:loc>
      <image:caption>BM25 vs Dense Retrieval: Why We Use Both for Browser Chatbots</image:caption>

    </image:image>
  </url>
  <url>
    <loc>https://relu.chat/blog/service-workers-offline-ai/</loc>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <lastmod>2026-09-09</lastmod>
    <image:image>
      <image:loc>https://relu.chat/assets/blog/service-worker-pwa.svg</image:loc>
      <image:caption>Service Workers and PWA Caching for Offline AI Chatbots</image:caption>

    </image:image>
  </url>
  <url>
    <loc>https://relu.chat/blog/webgpu-future-browser-inference/</loc>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <lastmod>2026-06-07</lastmod>
    <image:image>
      <image:loc>https://relu.chat/assets/blog/webgpu-inference.svg</image:loc>
      <image:caption>WebGPU and the Future of In-Browser AI Inference</image:caption>

    </image:image>
  </url>
  <url>
    <loc>https://relu.chat/blog/knowledge-fragment-composition/</loc>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <lastmod>2026-06-06</lastmod>
    <image:image>
      <image:loc>https://relu.chat/assets/blog/fragment-composition.svg</image:loc>
      <image:caption>Knowledge Fragment Composition: Why We Ditched Generation for Retrieval</image:caption>

    </image:image>
  </url>
  <url>
    <loc>https://relu.chat/blog/sentence-embeddings-384-dim-minilm/</loc>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <lastmod>2026-06-05</lastmod>
    <image:image>
      <image:loc>https://relu.chat/assets/blog/sentence-embeddings.svg</image:loc>
      <image:caption>Sentence Embeddings Explained: Why 384 Dimensions and What They Mean</image:caption>

    </image:image>
  </url>
  <url>
    <loc>https://relu.chat/blog/ppo-reward-design-policy-network/</loc>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <lastmod>2026-09-09</lastmod>
    <image:image>
      <image:loc>https://relu.chat/assets/blog/ppo-reward-design.svg</image:loc>
      <image:caption>PPO and Reward Design: Training a Chatbot Policy Network That Actually Works</image:caption>

    </image:image>
  </url>
  <url>
    <loc>https://relu.chat/blog/heuristic-fallback-cold-start/</loc>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <lastmod>2026-09-09</lastmod>
    <image:image>
      <image:loc>https://relu.chat/assets/blog/heuristic-fallback.svg</image:loc>
      <image:caption>Heuristic Fallback for Cold Start: Graceful Degradation in Browser AI</image:caption>

    </image:image>
  </url>
  <url>
    <loc>https://relu.chat/blog/linguistic-connectors-naturalness/</loc>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <lastmod>2026-09-09</lastmod>
    <image:image>
      <image:loc>https://relu.chat/assets/blog/linguistic-connectors.svg</image:loc>
      <image:caption>Linguistic Connectors: The Small Detail That Makes Retrieval Bots Sound Human</image:caption>

    </image:image>
  </url>
  <url>
    <loc>https://relu.chat/blog/sentence-vs-word-embeddings/</loc>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <lastmod>2026-06-01</lastmod>
    <image:image>
      <image:loc>https://relu.chat/assets/blog/sentence-vs-word.svg</image:loc>
      <image:caption>Sentence Embeddings vs Word Embeddings: Why We Embed Whole Questions</image:caption>

    </image:image>
  </url>
  <url>
    <loc>https://relu.chat/blog/privacy-first-ai-browsers/</loc>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <lastmod>2026-09-09</lastmod>
    <image:image>
      <image:loc>https://relu.chat/assets/blog/privacy-ai.jpg</image:loc>
      <image:caption>Privacy-First AI: Why Browser-Based Machine Learning Matters</image:caption>

    </image:image>
  </url>
  <url>
    <loc>https://relu.chat/blog/reinforcement-learning-for-chatbots/</loc>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <lastmod>2026-09-09</lastmod>
    <image:image>
      <image:loc>https://relu.chat/assets/blog/rl-chatbots.png</image:loc>
      <image:caption>Training Chatbots with Reinforcement Learning: The ReLU.chat Approach</image:caption>

    </image:image>
  </url>
  <url>
    <loc>https://relu.chat/blog/how-browser-based-chatbots-work/</loc>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <lastmod>2026-09-09</lastmod>
    <image:image>
      <image:loc>https://relu.chat/assets/blog/browser-chatbots.png</image:loc>
      <image:caption>How Browser-Based Chatbots Work: A Deep Dive into On-Device NLP</image:caption>

    </image:image>
  </url>
</urlset>
