The Online Part of RAG
The second half of RAG: retrieve the right chunks, ground the prompt in them, and let DeepSeek answer - or honestly say 'I don't know' when the context is silent.
Tag
The second half of RAG: retrieve the right chunks, ground the prompt in them, and let DeepSeek answer - or honestly say 'I don't know' when the context is silent.
RAG has two halves, and only one uses a language model. A walkthrough of the other one - read, chunk, embed, index - built with Spring AI, pgvector and Ollama.
Security and privacy, in practice
I put an MCP server on the public internet so an AI client could file todos onto my private kanban board. The interesting part wasn't the protocol — it was making the dangerous call unrepresentable.
Shipping an AI feature into my own product · Part 3
I added job-description matching to the AI concierge on my career site. It shipped with no new bean, no new table, and no migration — because the leverage was in a seam I'd already built. A design note on shared streaming cores, streamable structured output, and treating a pasted JD as hostile.
Shipping an AI feature into my own product · Part 2
My site has an 'Ask Zakaria' AI box that answers untrusted recruiter input. So I spent an afternoon trying to break it — prompt leaks, tool-call injection, XSS, a cross-language jailbreak. Here's what held, and why the real defense isn't a clever prompt.
The Model Context Protocol, hands on
How I turned Apache Kafka into a set of tools an AI client can call — using Spring AI's MCP server, a handful of @Tool methods, and one ugly-but-necessary servlet filter.