Build1 distinct publisher3 min readUpdated
A residency policy that barred even embedding calls from leaving the building forced a full local RAG stack. The hardware math turns out to be the easy part.
The Engineer · Build desk

Compiled by The EngineerSomething wrong?How this is made
A residency rule converts into a VRAM budget, and that is where this build gets interesting. The rule of thumb in the write-up is roughly as much VRAM as the model weights, putting a 7-8B model at 4-bit quantisation on a single 16 GB card such as an RTX 4090 or an A10 [8], and a 70B on two or four 24 GB cards depending on quantisation [9]. The two 24 GB 3090s in the bank's stack come to 48 GB, which is exactly the floor quoted for that 70B tier [1]. They ran a 13B on it for about thirty users [10]. So the ceiling on answer quality here was a latency and concurrency decision, not a silicon one, and the author is explicit that buying up to A6000-class hardware for frontier reasoning means asking whether the quality gap justifies four times the cost [16].
Divide the spend by the seats and the capital argument thins out further: under four thousand dollars across roughly thirty users is about $133 of hardware per seat, one time [2]. Worth noting that the account is internally inconsistent about what that money bought. The server room is described as already holding two half-idle GPU boxes running dashboards and a transcoding job [3], while the shipped spec is listed as two used 3090s bought cheap [10], and those are different starting positions for anyone budgeting from zero [3].
The software substitutions are where the API removal actually shows. Embeddings come off the GPU entirely: bge-m3 or e5 on an eight-core CPU will chew through a 1,000-page corpus overnight and a few hundred chunks per second at query time [7]. The vectors go into pgvector, Qdrant, LanceDB or Milvus that you operate [11], and generation is served locally through vLLM or Ollama [12]. The author's position on frameworks is that they create a second source of truth for prompts and chunking that you end up owning anyway, and recommends FastAPI, an ingestion scheduler, and functions for embed, retrieve and generate [13]. Defaults given are 700-token chunks with 100 tokens of overlap [14].
The failure mode is the part that has no hardware fix. The bank's compliance team edits documents constantly, and an index that is not idempotent and versioned on ingest will quietly answer from retired policy [15]. That was the risk the project was commissioned to remove in the first place [15], and once the hosted endpoint is gone there is no vendor sharing the consequence of a stale retrieval.
One caveat on all of it: this is a single first-person build account published on dev.to [18], seven weeks from start to live [4], with no independent confirmation of the spend or the user count. The parts that generalise are the ordering. Decide whether generation must be local before buying anything, because self-hosting retrieval while calling a hosted LLM still sends the queries out [6], and that configuration fails the stated policy [1].
Follow any of these and your For You feed starts watching them — no settings page required.
Ranked by verification strength, evidence, and original report placement.
Embedding models bge-m3 and e5 run comfortably on CPU; a modern 8-core server can embed a 1,000-page corpus overnight and handle a few hundred chunks per second at query time, so no GPU is needed for embeddings.
The author argues against building on a RAG framework's abstractions, recommending FastAPI, a scheduler for ingestion and a few functions for embed, retrieve and generate, on the grounds that every framework evaluated added a second source of truth for prompts and chunking.
For frontier-level reasoning quality on owned hardware the author points to two 4090s or an A6000-class card, and says teams should ask whether that quality gap is worth four times the hardware cost.
Self-hosted RAG as defined in the piece means the embedding model, the vector store and the generation LLM all run on infrastructure you control rather than via cloud API calls.
The author notes teams routinely self-host the retrieval half while still calling a hosted LLM for generation, which is a valid configuration but still ships queries to a third party.
The author's rule of thumb is roughly as much VRAM as the model weights: a 7-8B parameter model such as Llama 3.1 8B or Qwen 2.5 7B needs 16 GB of VRAM at 4-bit quantization, fitting a single RTX 4090 or an A10.
Evidence-backed comparisons of source perspectives and observed adoption signals. Read the methodology
Which Builder, Operator, and Investor concerns the observed source mix emphasized—not a truth score.
Evidence, demonstrated adoption, hype gap, incentives, and confidence are assessed independently, each on its own current evidence. How these are measured.
Detailed but wholly self-reported
The technical content is specific and internally coherent — named models, VRAM thresholds, chunk sizes, a code snippet — but every factual assertion traces to one first-person dev.to post about an unnamed client. There is no benchmark, latency measurement, eval result, repository, invoice or second publisher, and the piece contradicts itself on whether the GPUs were bought or already owned.
One unverified internal deployment
Exactly one deployment is disclosed: an unnamed Gulf bank running a 13B model for roughly thirty internal users. That is a real production claim rather than a demo, but it is a single anonymous instance with no independent confirmation, no usage telemetry, and no evidence of the pattern spreading beyond this engagement.
Blueprint framing outruns the proof
The piece presents itself as "the entire blueprint" and the cluster headline reduces the engagement to a clean $133-per-seat figure, but the underlying support is one anonymous anecdote with no quality or latency measurement and no operating cost. The per-seat number also excludes power, maintenance and engineering, and the source cannot decide whether the hardware was purchased or already idle — so the economic claim is presented more firmly than the evidence allows. The component-level engineering guidance is comparatively modest and closer to aligned.
Practitioner promoting a reusable blueprint
The author writes in the first person as the consultant who delivered the engagement and explicitly offers "the same blueprint I would hand to any team facing a data-residency constraint," which is a credibility- and practice-building posture on a developer publishing platform. No vendor sponsorship, affiliate relationship or commercial disclosure appears in the source, and no product of the author's is being sold, so the incentive is reputational rather than transactional.
Low — one voice, one anecdote, one contradiction
Confidence is constrained by single-source, single-publisher provenance, an unnamed client, absent measurements, and an unresolved internal inconsistency about the hardware. The engineering guidance is plausible and specific enough to act on with local verification; the deployment and cost outcomes should not be treated as established.
build
DuckDB's vss extension removes a database from your RAG stack, then names the price1 distinct publisher
build
Dual 3090s, no NVLink: the serving stack broke long before the model did1 distinct publisher
build
A RAG stack lived seven hours before a hosted embedding endpoint returned 4041 distinct publisher
build
45 or 793 tok/s: the same model, and only one of those numbers sizes your box1 distinct publisher
Distinct publishers with included, body-backed reporting in this cluster.
dev.to
1 article · August 22, 2026