<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Hacker News: ckarani</title><link>https://news.ycombinator.com/user?id=ckarani</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Sat, 13 Jun 2026 02:25:42 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=ckarani" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by ckarani in "Sub-Millisecond RAG on Apple Silicon. No Server. No API. One File"]]></title><description><![CDATA[
<p>working on it</p>
]]></description><pubDate>Wed, 18 Feb 2026 07:13:24 +0000</pubDate><link>https://news.ycombinator.com/item?id=47058182</link><dc:creator>ckarani</dc:creator><comments>https://news.ycombinator.com/item?id=47058182</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47058182</guid></item><item><title><![CDATA[New comment by ckarani in "Sub-Millisecond RAG on Apple Silicon. No Server. No API. One File"]]></title><description><![CDATA[
<p>Going to get a cli app in the coming hours stay tuned!</p>
]]></description><pubDate>Wed, 18 Feb 2026 07:13:15 +0000</pubDate><link>https://news.ycombinator.com/item?id=47058181</link><dc:creator>ckarani</dc:creator><comments>https://news.ycombinator.com/item?id=47058181</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47058181</guid></item><item><title><![CDATA[New comment by ckarani in "Sub-Millisecond RAG on Apple Silicon. No Server. No API. One File"]]></title><description><![CDATA[
<p>Putting out a cli interface in the coming days, 
linux support is coming for WaxCore by Next week
works on macOS, iOS, vision os, watch os
In addition were working on a port to python and kotlin</p>
]]></description><pubDate>Wed, 18 Feb 2026 07:12:54 +0000</pubDate><link>https://news.ycombinator.com/item?id=47058178</link><dc:creator>ckarani</dc:creator><comments>https://news.ycombinator.com/item?id=47058178</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47058178</guid></item><item><title><![CDATA[New comment by ckarani in "Sub-Millisecond RAG on Apple Silicon. No Server. No API. One File"]]></title><description><![CDATA[
<p>WAL/checkpointing is about control over durability and crash behavior, not “better vectors.”<p><pre><code>  sqlite-vec and Qdrant are storage engines first; their durability is mostly “under the hood.” If your goal is a clean
  local RAG system, owning that layer can be better when you want:

  1. deterministic ingest semantics (append-only event log of chunks, then materialize state),
  2. fast recovery from partial writes (replay only WAL since last checkpoint),
  3. precise checkpoint boundaries tuned to your app (e.g., after every batch/conv/session ingest),
  4. a single-file, dependency-light artifact you can own end-to-end.

  That’s why it can be better than sqlite-vec/Qdrant in this specific case: not for raw ANN quality, but for operational
  predictability + composability of ingestion, retrieval, and memory lifecycle in one library.
  If you don’t care about that control and are fine with a managed server/extension model, built-ins are usually the
  simpler and smarter choice.</code></pre></p>
]]></description><pubDate>Tue, 17 Feb 2026 23:38:47 +0000</pubDate><link>https://news.ycombinator.com/item?id=47055056</link><dc:creator>ckarani</dc:creator><comments>https://news.ycombinator.com/item?id=47055056</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47055056</guid></item><item><title><![CDATA[New comment by ckarani in "Sub-Millisecond RAG on Apple Silicon. No Server. No API. One File"]]></title><description><![CDATA[
<p>Excellent Idea, already working on it, thanks for the feedback</p>
]]></description><pubDate>Tue, 17 Feb 2026 23:34:39 +0000</pubDate><link>https://news.ycombinator.com/item?id=47055015</link><dc:creator>ckarani</dc:creator><comments>https://news.ycombinator.com/item?id=47055015</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47055015</guid></item><item><title><![CDATA[New comment by ckarani in "Sub-Millisecond RAG on Apple Silicon. No Server. No API. One File"]]></title><description><![CDATA[
<p>It is Not a layer over sqlite_vec</p>
]]></description><pubDate>Tue, 17 Feb 2026 21:56:59 +0000</pubDate><link>https://news.ycombinator.com/item?id=47053994</link><dc:creator>ckarani</dc:creator><comments>https://news.ycombinator.com/item?id=47053994</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47053994</guid></item><item><title><![CDATA[New comment by ckarani in "Sub-Millisecond RAG on Apple Silicon. No Server. No API. One File"]]></title><description><![CDATA[
<p>sqlite-vec is a great vector index — Wax actually uses SQLite under the hood too.<p>The difference is the layer. sqlite-vec gives you vec_distance_cosine() in SQL. Wax gives you: hand it a .mov file, get
back token-budgeted, LLM-ready context from keyframes and transcripts, with EXIF-accurate timestamps and hybrid
BM25+vector search via RRF fusion — all on-device.<p>It's the difference between a B-tree and an ORM. You'd still need to write the entire ingestion pipeline, media parsing,
frame hierarchy, token counting, and context assembly on top of sqlite-vec. That's what Wax is.</p>
]]></description><pubDate>Tue, 17 Feb 2026 19:37:40 +0000</pubDate><link>https://news.ycombinator.com/item?id=47052048</link><dc:creator>ckarani</dc:creator><comments>https://news.ycombinator.com/item?id=47052048</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47052048</guid></item><item><title><![CDATA[New comment by ckarani in "Sub-Millisecond RAG on Apple Silicon. No Server. No API. One File"]]></title><description><![CDATA[
<p>Yes—Wax can absolutely be used as a general hybrid search layer, not just an
  “agent memory” feature.<p><pre><code>  It already combines text + vector retrieval and reranking, so you can treat
  remember(...) as ingestion and recall(query:) as search for any document
  corpus.

  It does not natively do “recency decay” (newer beats older) out of the box in
  the core call signature. If you want recency weighting, add timestamps in
  metadata and apply post-retrieval re-scoring or filtering in your app logic
  (or query-time preprocessing).
</code></pre>
Ive add this to the backlog, It comes in handy when dealing with time sensitive data. expect a pr this week</p>
]]></description><pubDate>Tue, 17 Feb 2026 19:22:06 +0000</pubDate><link>https://news.ycombinator.com/item?id=47051811</link><dc:creator>ckarani</dc:creator><comments>https://news.ycombinator.com/item?id=47051811</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47051811</guid></item><item><title><![CDATA[New comment by ckarani in "Sub-Millisecond RAG on Apple Silicon. No Server. No API. One File"]]></title><description><![CDATA[
<p>I built Wax because every RAG solution required either Pinecone/Weaviate in the cloud or ChromaDB/Qdrant running locally. I wanted the SQLite of RAG -- import a library, open a file, query. Except for multimodal content at GPU speed.<p>The architecture that makes this work:
Metal-accelerated vector search -- Embeddings live directly in unified memory (MTLBuffer). Zero CPU-GPU copy overhead. Adaptive SIMD4/SIMD8 kernels + GPU-side bitonic sort = sub-millisecond search on 10K+ vectors (vs ~100ms CPU). This isn't just "faster" -- it enables interactive search UX that wasn't possible before.<p>Atomic single-file storage (.mv2s) -- Everything in one crash-safe binary: embeddings, BM25 index, metadata, compressed payloads. Dual-header writes with generation counters = kill -9 safe. Sync via iCloud, email it, commit to git. The file format is deterministic -- identical input produces byte-identical output.<p>Query-adaptive hybrid fusion -- Four parallel search lanes (BM25, vector, timeline, structured memory). Lightweight classifier detects intent ("when did I..." → boost timeline, "find documentation about..." → boost BM25). Reciprocal Rank Fusion with deterministic tie-breaking = identical queries always return identical results.<p>Photo/Video RAG -- Index your photo library with OCR, captions, GPS binning, per-region embeddings. Query "find that receipt from the restaurant" searches text, visual similarity, and location simultaneously. Videos get segmented with keyframe embeddings + transcript mapping. Results include timecodes for jump-to-moment navigation. All offline -- iCloud-only photos get metadata-only indexing.
Swift 6.2 strict concurrency -- Every orchestrator is an actor. Thread safety proven at compile time, not runtime. Zero data races, zero @unchecked Sendable, zero escape hatches.<p>Deterministic context assembly -- Same query + same data = byte-identical context every time. Three-tier surrogate compression (full/gist/micro) adapts based on memory age. Bundled cl100k_base tokenizer = no network, no nondeterminism.<p>import Wax<p>let brain = try await MemoryOrchestrator(at: URL(fileURLWithPath: "brain.mv2s"))<p>// Index
try await brain.remember("User prefers dark mode, gets headaches from bright screens")<p>// Retrieve
let context = try await brain.recall(query: "user display preferences")
// Returns relevant memories with source attribution, ready for LLM context<p>What makes this different:<p>Zero dependencies on cloud infrastructure -- No API keys, no vendor lock-in, no telemetry
Production-grade concurrency -- Not "it works in my tests," but compile-time proven thread safety
Multimodal from the ground up -- Text, photos, videos indexed with shared semantics
Performance that unlocks new UX -- Sub-millisecond latency enables real-time RAG workflows<p>## Wax Performance (Apple Silicon, as of Feb 17, 2026)<p><pre><code>  - 0.84ms vector search at 10K docs (Metal, warm cache)
  - 9.2ms first-query after cold-open for vector search
  - ~125x faster than CPU (105ms) and ~178x faster than SQLite FTS5 (150ms) in
    the same 10K benchmark
  - 17ms cold-open → first query overall
  - 10K ingest in 7.756s (~1289 docs/s) with hybrid batched ingest
  - 0.103s hybrid search on 10K docs
  - Recall path: 0.101–0.103s (smoke/standard workloads)
</code></pre>
Built for: Developers shipping AI-native apps who want RAG without the infrastructure overhead. Your data stays local, your users stay private, your app stays fast.<p>The storage format and search pipeline are stable. The API surface is early but functional. If you're building RAG into Swift apps, I'd love your feedback.<p>GitHub: <a href="https://github.com/christopherkarani/Wax" rel="nofollow">https://github.com/christopherkarani/Wax</a><p>Star it if you're tired of spinning up vector databases for what should be a library call.</p>
]]></description><pubDate>Tue, 17 Feb 2026 15:43:37 +0000</pubDate><link>https://news.ycombinator.com/item?id=47048732</link><dc:creator>ckarani</dc:creator><comments>https://news.ycombinator.com/item?id=47048732</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47048732</guid></item><item><title><![CDATA[Sub-Millisecond RAG on Apple Silicon. No Server. No API. One File]]></title><description><![CDATA[
<p>Article URL: <a href="https://github.com/christopherkarani/Wax">https://github.com/christopherkarani/Wax</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=47048731">https://news.ycombinator.com/item?id=47048731</a></p>
<p>Points: 130</p>
<p># Comments: 39</p>
]]></description><pubDate>Tue, 17 Feb 2026 15:43:37 +0000</pubDate><link>https://github.com/christopherkarani/Wax</link><dc:creator>ckarani</dc:creator><comments>https://news.ycombinator.com/item?id=47048731</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47048731</guid></item></channel></rss>