This needs JavaScript. Every possible answer is shown below.
You may not need to build anything
If it answers from general knowledge with no private data and no actions, you're describing a wrapper around a model that already exists. The honest question is what your product adds beyond the API — because a system prompt and a chat box is a weekend, not a company.
Watch out: If the answer is "our interface is nicer," that's a real answer, but price it accordingly. The model is not your moat and neither is the wrapper.
Prompt with the documents included
It fits in the window and it doesn't move. Put the material in the prompt, use caching for the stable prefix, and skip the entire retrieval pipeline. This is a day of work and it beats a month of RAG plumbing for this shape of problem.
Watch out: The moment your corpus outgrows the window or starts updating weekly, revisit. Until then, machinery you don't have can't break.
RAG, and spend your time on retrieval
Large or changing corpus is exactly what retrieval is for. Fetch at query time, cite the source, update by editing a document.
Watch out: Retrieval quality is your product quality. Test it separately — thirty real questions, check whether the answer is in the passages that come back. That number is your ceiling, and no model raises it.
Tool use, read-only
Give the model functions that fetch — an order lookup, a status check. Your code executes; the model only asks. Read-only credentials mean the worst case is a wrong answer rather than a wrong action.
Watch out: Keep the tool count low. Selection accuracy drops past roughly a dozen, and every definition costs context on every call.
An agent — and treat it as a serious build
Taking actions is a different product from answering questions. You need permission boundaries, confirmation on anything irreversible, and an answer to what happens when it's wrong at 2am.
Watch out: The strongest guardrail is not granting the capability. A system that physically cannot issue a refund cannot be talked into issuing one — and prompt injection through retrieved content is unsolved in the general case.