[{"data":1,"prerenderedAt":178},["ShallowReactive",2],{"blog-rag-knowledge-bases":3,"blog-related-\u002Fblog\u002Frag-knowledge-bases":146},{"id":4,"title":5,"author":6,"authorRole":7,"body":8,"cover":129,"coverAlt":130,"date":131,"description":132,"draft":133,"extension":134,"meta":135,"navigation":136,"path":137,"readingTime":138,"seo":139,"stem":140,"tags":141,"updated":144,"__hash__":145},"blog\u002Fblog\u002Frag-knowledge-bases.md","RAG knowledge bases: a field guide","William Ali","Founder & AI Specialist",{"type":9,"value":10,"toc":121},"minimark",[11,20,25,66,70,103,107,114,118],[12,13,14,15,19],"p",{},"Retrieval-augmented generation is the pattern behind most useful \"chat with your documents\" systems. The idea is simple: search first, then let a language model write an answer ",[16,17,18],"em",{},"from the search results, with citations",". Getting it production-grade is where the work is.",[21,22,24],"h2",{"id":23},"the-pipeline","The pipeline",[26,27,28,36,42,48,54,60],"ol",{},[29,30,31,35],"li",{},[32,33,34],"strong",{},"Ingest:"," pull documents from SharePoint, Confluence, Drive, ticketing systems, databases. Preserve permissions and metadata.",[29,37,38,41],{},[32,39,40],{},"Chunk:"," split into passages that carry meaning on their own (headings help; fixed 500-token windows do not).",[29,43,44,47],{},[32,45,46],{},"Embed & index:"," vector index for semantic similarity, keyword index for exact terms; hybrid retrieval beats either alone.",[29,49,50,53],{},[32,51,52],{},"Retrieve & re-rank:"," fetch candidates, re-rank with a cross-encoder, filter by the user's access rights.",[29,55,56,59],{},[32,57,58],{},"Generate:"," answer with citations, or decline if the evidence is thin.",[29,61,62,65],{},[32,63,64],{},"Evaluate:"," retrieval recall and answer faithfulness on a labelled set, every release.",[21,67,69],{"id":68},"where-rag-systems-break","Where RAG systems break",[71,72,73,79,85,91,97],"ul",{},[29,74,75,78],{},[32,76,77],{},"Bad chunks:"," tables and multi-column PDFs mangled at ingestion. Fix ingestion before touching prompts.",[29,80,81,84],{},[32,82,83],{},"Stale content:"," nightly incremental re-indexing is the minimum.",[29,86,87,90],{},[32,88,89],{},"Permission leaks:"," filter at retrieval time, not in the prompt.",[29,92,93,96],{},[32,94,95],{},"Overconfident answers:"," enforce \"cite or decline\".",[29,98,99,102],{},[32,100,101],{},"No feedback loop:"," thumbs-up\u002Fdown feeding an evaluation set is the cheapest quality lever you have.",[21,104,106],{"id":105},"what-good-looks-like","What \"good\" looks like",[12,108,109,110,113],{},"In an enterprise deployment we ran, common policy and process questions were answered around 70% faster than the previous \"ask a colleague\" route, every answer carried a source, and the content-gap report became the documentation team's backlog. That last effect, RAG revealing what your docs ",[16,111,112],{},"don't"," say, is often the biggest long-term win.",[21,115,117],{"id":116},"build-or-buy","Build or buy?",[12,119,120],{},"Off-the-shelf tools are fine for a single, low-risk source. Build (or heavily customise) when you need access control, multiple sources, actions, or evaluation you can defend to auditors.",{"title":122,"searchDepth":123,"depth":123,"links":124},"",2,[125,126,127,128],{"id":23,"depth":123,"text":24},{"id":68,"depth":123,"text":69},{"id":105,"depth":123,"text":106},{"id":116,"depth":123,"text":117},"\u002Fcovers\u002Fblog\u002Frag-knowledge-bases.svg","Line-art illustration of books on a shelf, a magnifier searching them and an answer bubble with a citation mark.","2025-06-10","Retrieval-augmented generation explained for decision-makers: how it works, where it breaks, and how to make it production-grade.",false,"md",{},true,"\u002Fblog\u002Frag-knowledge-bases",9,{"title":5,"description":132},"blog\u002Frag-knowledge-bases",[142,143],"RAG","LLMs",null,"yo6CSnsFwN9ubF9cHn30H7CVQak352BvcOhZLa939PE",[147,158,168],{"path":148,"title":149,"description":150,"date":151,"tags":152,"cover":155,"coverAlt":156,"readingTime":157},"\u002Fblog\u002Fmeasuring-ai-roi-honestly","Measuring AI ROI honestly: a method that survives the finance review","How to measure the return on an AI project without fooling yourself: baselines, full costs, holdout attribution, leading indicators and inflated-ROI red flags.","2026-08-11",[153,154],"Strategy","Analytics","\u002Fcovers\u002Fblog\u002Fmeasuring-ai-roi-honestly.svg","Line-art illustration of a ruler measuring a stack of coins beside a rising bar.",7,{"path":159,"title":160,"description":161,"date":162,"tags":163,"cover":166,"coverAlt":167,"readingTime":157},"\u002Fblog\u002Fmultimodal-ai-business-workflows","Multimodal AI in real business workflows: where it earns its place","Vision-language and audio models now read forms, photos, screenshots and calls directly. Where multimodal AI beats OCR-then-LLM, with examples, limits and cost.","2026-06-30",[164,143,165],"Computer Vision","Automation","\u002Fcovers\u002Fblog\u002Fmultimodal-ai-business-workflows.svg","Line-art illustration of an eye, an ear and a speech bubble converging into a single processing node.",{"path":169,"title":170,"description":171,"date":172,"tags":173,"cover":176,"coverAlt":177,"readingTime":157},"\u002Fblog\u002Fmlops-basics-first-model","MLOps basics for teams shipping their first model","The minimum MLOps a team needs to put a first model into production safely: versioning, reproducible training, a registry, serving, monitoring and rollback.","2026-05-19",[174,175],"MLOps","Product","\u002Fcovers\u002Fblog\u002Fmlops-basics-first-model.svg","Line-art illustration of a looping pipeline with gauges, from data to model to monitoring and back.",1792973685659]