RAG Indexing, Part 2: Embeddings and the Chroma Vector Store
Embeddings turn text into coordinates and a vector store makes them searchable. This post builds the store, persists it, and shows exactly what Chroma holds inside.
Tech Blog · Insights & Experiments
Deep dives into code, design, and system architecture. From frontend to backend, from performance tricks to developer experience — practical notes for building better technology.
Embeddings turn text into coordinates and a vector store makes them searchable. This post builds the store, persists it, and shows exactly what Chroma holds inside.
Loading a PDF is easy; splitting it well is where RAG quality is decided. This post covers loaders, chunk size and overlap, and a splitter that silently does nothing.
A model cannot answer from documents it was never trained on. This post explains what RAG is, how its two paths work, and when fine-tuning is the wrong answer to it.
A straight line is the easy case. This post covers piping chains together, fanning out with RunnableParallel, wrapping your own functions, and drawing what you built.
A single pipe operator turns three objects into a pipeline that batches, streams and runs async for free. Here is how, plus the step that silently breaks streaming.
Free text is unusable in a pipeline. This post covers getting validated objects back with Pydantic, and the narrower cases where an output parser is still the right tool.
Embeddings turn text into coordinates and a vector store makes them searchable. This post builds the store, persists it, and shows exactly what Chroma holds inside.
Loading a PDF is easy; splitting it well is where RAG quality is decided. This post covers loaders, chunk size and overlap, and a splitter that silently does nothing.
A model cannot answer from documents it was never trained on. This post explains what RAG is, how its two paths work, and when fine-tuning is the wrong answer to it.
A straight line is the easy case. This post covers piping chains together, fanning out with RunnableParallel, wrapping your own functions, and drawing what you built.
A single pipe operator turns three objects into a pipeline that batches, streams and runs async for free. Here is how, plus the step that silently breaks streaming.
Free text is unusable in a pipeline. This post covers getting validated objects back with Pydantic, and the narrower cases where an output parser is still the right tool.
Eight posts taking LangChain from first principles to a working RAG pipeline — token costs, the raw OpenAI API, messages, prompt templates, structured output and LCEL.
Master the 6 data structures that appear in 80% of technical interviews. Each post goes deep on one structure — how it works under the hood, every interview pattern it unlocks, and the exact templates that win offers.
Learn how to structure routing, master custom hooks, and optimize React builds using Vite and Webpack for production-grade apps.
Build a rock-solid foundation in HTML, CSS, JavaScript, and modern tooling to prepare for a professional full-stack journey using React, NestJS, and PostgreSQL.
Results