<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Yunzhi Lin — Blog</title>
    <link>https://yunzhilin.itreliable.com/blog/</link>
    <description>Computer Systems Engineering undergraduate at the University of York specialising in AI. I build LLM data pipelines, hybrid retrieval engines and agent systems.</description>
    <language>en-gb</language>
    <lastBuildDate>Mon, 28 Sep 2026 00:00:00 GMT</lastBuildDate>
    <atom:link href="https://yunzhilin.itreliable.com/feed.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>BM25 + Vector Search with RRF: how I stopped guessing at retrieval quality</title>
      <link>https://yunzhilin.itreliable.com/blog/hybrid-retrieval-rrf/</link>
      <guid isPermaLink="true">https://yunzhilin.itreliable.com/blog/hybrid-retrieval-rrf/</guid>
      <description>Why hybrid retrieval beats either retriever alone, how Reciprocal Rank Fusion quietly does the hard part, and why I now refuse to tune RAG without an evaluation harness.</description>
      <pubDate>Mon, 28 Sep 2026 00:00:00 GMT</pubDate>
      <category>RAG</category>
      <category>Retrieval</category>
      <category>Python</category>
    </item>
    <item>
      <title>What producing 50 training items a day taught me about LLMs</title>
      <link>https://yunzhilin.itreliable.com/blog/sft-rlhf-data-notes/</link>
      <guid isPermaLink="true">https://yunzhilin.itreliable.com/blog/sft-rlhf-data-notes/</guid>
      <description>Notes from my SFT/RLHF data internship at Zhipu: how training data is really made, the error taxonomy that saved my sanity, and why data quality is an engineering discipline.</description>
      <pubDate>Wed, 12 Aug 2026 00:00:00 GMT</pubDate>
      <category>LLM</category>
      <category>Data</category>
      <category>SFT/RLHF</category>
    </item>
    <item>
      <title>From O(n²) to 60 FPS: spatial hashing in a survivor game</title>
      <link>https://yunzhilin.itreliable.com/blog/spatial-hash-grid/</link>
      <guid isPermaLink="true">https://yunzhilin.itreliable.com/blog/spatial-hash-grid/</guid>
      <description>How a hash grid rescued Endless Onslaught from its own particle system, why profiling beats intuition, and what game-loop optimisation taught me about retrieval indexes.</description>
      <pubDate>Tue, 30 Jun 2026 00:00:00 GMT</pubDate>
      <category>TypeScript</category>
      <category>Game Dev</category>
      <category>Performance</category>
    </item>
    <item>
      <title>Designing a tool-calling agent that survives going offline</title>
      <link>https://yunzhilin.itreliable.com/blog/offline-capable-agent/</link>
      <guid isPermaLink="true">https://yunzhilin.itreliable.com/blog/offline-capable-agent/</guid>
      <description>Lessons from EchoList: why tool calling beats JSON generation, how to build a graceful fallback ladder, and the unglamorous details that make an AI feature feel trustworthy.</description>
      <pubDate>Sat, 16 May 2026 00:00:00 GMT</pubDate>
      <category>Agents</category>
      <category>Android</category>
      <category>LLM</category>
    </item>
  </channel>
</rss>
