<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>rag on Saurabh Kumar</title><link>https://saurabh-kumar.com/tags/rag/</link><description>Recent content in rag on Saurabh Kumar</description><generator>Hugo</generator><language>en-US</language><copyright>Copyright © 2025, Saurabh Kumar.</copyright><lastBuildDate>Mon, 19 Oct 2026 12:00:00 +0000</lastBuildDate><atom:link href="https://saurabh-kumar.com/tags/rag/index.xml" rel="self" type="application/rss+xml"/><item><title>EmbeddingGemma 2</title><link>https://saurabh-kumar.com/til/1792411200/</link><pubDate>Mon, 19 Oct 2026 12:00:00 +0000</pubDate><guid>https://saurabh-kumar.com/til/1792411200/</guid><description>&lt;p&gt;&lt;a href="https://blog.google/innovation-and-ai/technology/developers-tools/embeddinggemma-2/" rel="noopener external"&gt;EmbeddingGemma 2&lt;/a&gt; puts text, code, images, video and audio (or a mix) into one 768-dimension vector, from a 740M open model under Apache 2.0. Image, video and audio tokens are spliced into the text sequence and run through one encoder, so a text query can find a video moment or a scanned PDF page without captioning or transcribing first.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;It&amp;rsquo;s not the quality leader. Text is flat against v1; the gain is code (MTEB Code 68.8 to 78.7). Audio (49) and video (51) scores are modest. All numbers are Google&amp;rsquo;s own.&lt;/li&gt;&#10;&lt;li&gt;Every major vendor ships one-space multimodal embeddings now: &lt;a href="https://www.amazon.science/publications/amazon-nova-multimodal-embeddings-technical-report-and-model-card" rel="noopener external"&gt;Amazon Nova&lt;/a&gt;, Gemini Embedding 2, Voyage, Cohere, and the open Qwen3-VL-Embedding, which reports higher image and document scores but has no audio. Pick by constraint. EmbeddingGemma 2&amp;rsquo;s niche is open weights plus audio.&lt;/li&gt;&#10;&lt;li&gt;Matryoshka truncation isn&amp;rsquo;t free: its MMEB score falls from 59.0 at 768 dimensions to 45.7 at 128.&lt;/li&gt;&#10;&lt;li&gt;The interesting part is the system around the model. &lt;a href="https://github.com/ARahim3/DigUp" rel="noopener external"&gt;DigUp&lt;/a&gt; is local file search on it: one vector per photo, PDF page, video shot and 30 s of audio, each pointing back to its page or second, next to an FTS5 keyword index, because no embedding holds an invoice number exactly.&lt;/li&gt;&#10;&lt;li&gt;DigUp fuses the two by turning cosine into a per-query z-score (how far a match stands out for this query), gating on it, and adding a word-coverage bonus. It beat reciprocal-rank fusion on their evals (R@1 0.88 vs 0.73) and can honestly say &amp;ldquo;nothing found&amp;rdquo;. Small, author-run eval.&lt;/li&gt;&#10;&lt;li&gt;It also pins llama.cpp, records the model version in the index, and checks every upgrade against stored reference vectors. Vectors from two runtimes don&amp;rsquo;t mix, and nothing errors when they do.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;</description></item><item><title>marcelroed/gigatoken</title><link>https://saurabh-kumar.com/til/1784894400/</link><pubDate>Fri, 24 Jul 2026 12:00:00 +0000</pubDate><guid>https://saurabh-kumar.com/til/1784894400/</guid><description>&lt;p&gt;Embedding pipelines do not feed whole documents straight into the model. They first use the embedding model&amp;rsquo;s tokenizer to measure and split text into token-bounded, overlapping chunks, then embed each chunk and store the vectors. Tokenizer must match the model. Tools like &lt;a href="https://github.com/marcelroed/gigatoken" rel="noopener external"&gt;marcelroed/gigatoken&lt;/a&gt; accelerate this preparation at corpus scale but do not create embeddings themselves.&lt;/p&gt;&#10;</description></item><item><title>Many asymmetric embedding models need task prefixes on inputs, and skipping…</title><link>https://saurabh-kumar.com/til/1782216000/</link><pubDate>Tue, 23 Jun 2026 12:00:00 +0000</pubDate><guid>https://saurabh-kumar.com/til/1782216000/</guid><description>&lt;p&gt;Many asymmetric embedding models need task prefixes on inputs, and skipping them quietly degrades relevance. Each model has its own scheme: nomic (&lt;code&gt;search_query:&lt;/code&gt;/&lt;code&gt;search_document:&lt;/code&gt;), E5 (&lt;code&gt;query:&lt;/code&gt;/&lt;code&gt;passage:&lt;/code&gt;), BGE (a query instruction sentence, bare docs) — not interchangeable. OpenAI &lt;code&gt;text-embedding-3-*&lt;/code&gt; and &lt;code&gt;all-MiniLM-L6-v2&lt;/code&gt; need none. Whether you add the prefix depends on the serving layer, not the model: raw endpoints (llama.cpp &lt;code&gt;/v1/embeddings&lt;/code&gt;, HF TEI, Ollama) send bare text so it&amp;rsquo;s on you, while sentence-transformers (&lt;code&gt;prompt_name=&amp;quot;query&amp;quot;&lt;/code&gt;) and vendor SDKs inject it for you. Adding &lt;code&gt;search_query:&lt;/code&gt;/&lt;code&gt;search_document:&lt;/code&gt; to a nomic-v1.5 call lifted cosine similarity on a real query/doc pair from 0.54 to 0.60 at zero cost.&lt;/p&gt;&#10;</description></item><item><title>pageindex</title><link>https://saurabh-kumar.com/til/1774353600/</link><pubDate>Tue, 24 Mar 2026 12:00:00 +0000</pubDate><guid>https://saurabh-kumar.com/til/1774353600/</guid><description>&lt;p&gt;&lt;a href="https://github.com/VectifyAI/PageIndex/" rel="noopener external"&gt;pageindex&lt;/a&gt; generates a semantic tree-like json index of a lengthy document to allow for reasoning based RAG without the need for vectordb.&lt;/p&gt;&#10;</description></item><item><title>For generating embedding locally</title><link>https://saurabh-kumar.com/til/1771156803/</link><pubDate>Sun, 15 Feb 2026 12:00:03 +0000</pubDate><guid>https://saurabh-kumar.com/til/1771156803/</guid><description>&lt;p&gt;For generating embedding locally,&#10;&lt;a href="https://ollama.com/library/nomic-embed-text" rel="noopener external"&gt;nomic-embed-text&lt;/a&gt; is a large&#10;context length text encoder that&#10;&lt;a href="https://www.nomic.ai/news/nomic-embed-text-v1" rel="noopener external"&gt;surpasses&lt;/a&gt; OpenAI&#10;text-embedding-ada-002 and text-embedding-3-small performance on short and&#10;long context tasks. It has a balance of speed, 8k context, and accuracy for&#10;English-centric apps. BGE-M3, Qwen3-Embedding and E5-Small are other&#10;alternatives.&lt;/p&gt;&#10;</description></item><item><title>alibaba/zvec</title><link>https://saurabh-kumar.com/til/1771156802/</link><pubDate>Sun, 15 Feb 2026 12:00:02 +0000</pubDate><guid>https://saurabh-kumar.com/til/1771156802/</guid><description>&lt;p&gt;&lt;a href="https://github.com/alibaba/zvec" rel="noopener external"&gt;alibaba/zvec&lt;/a&gt; by alibaba is an&#10;embedded vector database supports both spare and dense vectors, along with&#10;structured data. It can be considered the sqlite of vector databases.&lt;/p&gt;&#10;</description></item><item><title>yichuan-w/LEANN</title><link>https://saurabh-kumar.com/til/1771156801/</link><pubDate>Sun, 15 Feb 2026 12:00:01 +0000</pubDate><guid>https://saurabh-kumar.com/til/1771156801/</guid><description>&lt;p&gt;&lt;a href="https://github.com/yichuan-w/LEANN" rel="noopener external"&gt;yichuan-w/LEANN&lt;/a&gt; is a RAG focused framework focused on efficient storage with built-in chunking strategies embedding model management and MCP server. &lt;a href="https://gemini.google.com/app/c627885d0bf34a2d" rel="noopener external"&gt;gemini&lt;/a&gt;&lt;/p&gt;&#10;</description></item><item><title>Vortex</title><link>https://saurabh-kumar.com/til/1770292801/</link><pubDate>Thu, 05 Feb 2026 12:00:01 +0000</pubDate><guid>https://saurabh-kumar.com/til/1770292801/</guid><description>&lt;p&gt;&lt;a href="https://vortex.dev/" rel="noopener external"&gt;Vortex&lt;/a&gt; a newer format is supported by &lt;a href="https://duckdb.org/2026/01/23/duckdb-vortex-extension" rel="noopener external"&gt;duckdb&lt;/a&gt; promises to be faster for random access and has zero-copy metadata, with better compression. While the support across the board is limited but worth considering for LLM/RAG based uses over parquet.&lt;/p&gt;&#10;</description></item><item><title>github recommendor</title><link>https://saurabh-kumar.com/til/1768132800/</link><pubDate>Sun, 11 Jan 2026 12:00:00 +0000</pubDate><guid>https://saurabh-kumar.com/til/1768132800/</guid><description>&lt;p&gt;Puzer published a &lt;a href="https://puzer.github.io/github_recommender/" rel="noopener external"&gt;github recommendor&lt;/a&gt; that uses semantic embedding from user&amp;rsquo;s github stars all client side, I found some great recommendations which I plan to use:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://github.com/pamburus/hl" rel="noopener external"&gt;pamburus/hl&lt;/a&gt;: A fast and powerful log viewer and processor that converts JSON logs or logfmt logs into a clear human-readable format. (⭐2657)&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://github.com/samwho/spacer" rel="noopener external"&gt;samwho/spacer&lt;/a&gt;: CLI tool to insert spacers when command output stops (⭐1663)&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://github.com/darrenburns/posting" rel="noopener external"&gt;darrenburns/posting&lt;/a&gt;: The modern API client that lives in your terminal. (⭐11134)&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://github.com/plutov/oq" rel="noopener external"&gt;plutov/oq&lt;/a&gt;: Terminal OpenAPI Spec viewer (⭐943)&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://github.com/wey-gu/py-pglite" rel="noopener external"&gt;wey-gu/py-pglite&lt;/a&gt;: PGlite wrapper in Python for testing. Test your app with Postgres just as lite as SQLite. (⭐577)&lt;/li&gt;&#10;&lt;/ul&gt;&#10;</description></item><item><title>VectorChord</title><link>https://saurabh-kumar.com/til/1766145600/</link><pubDate>Fri, 19 Dec 2025 12:00:00 +0000</pubDate><guid>https://saurabh-kumar.com/til/1766145600/</guid><description>&lt;p&gt;&lt;a href="https://github.com/tensorchord/VectorChord/" rel="noopener external"&gt;VectorChord&lt;/a&gt; is a faster pgvector alternative.&lt;/p&gt;&#10;</description></item></channel></rss>