AI Agents & Automation

AI Knowledge Assistant (RAG) Setup

An AI that actually knows your stuff, not the generic internet - a blueprint matched to your documents and audience. Just enter documents, audience, use case.

Free to previewNo signupYou get: A setup blueprint
What you'll get
A setup blueprint
Knowledge Assistant (RAG) Setup - scroll to preview

How to Use This Template

Answer the questions in each section. Replace every `[[Token]]` with your real value. Where you see a table, add or remove rows to match your actual document library. The result is a working RAG architecture plan you can hand to a developer, run through a no-code platform yourself, or use to configure an AI agent.

---

Section 1 - Use Case Definition

Before touching any tooling, define what your assistant must do and for whom. Vague inputs produce vague retrieval.

Audience: [[Who will query this assistant - e.g., "Internal support team", "Customers on a public portal", "Analysts in a data team"]]

Primary use case: [[One sentence - e.g., "Answer customer support questions about our product using our help docs and policy PDFs"]]

Query style: [[How users will ask - e.g., "Short keyword questions", "Long conversational questions", "SQL-style structured requests"]]

Languages supported: [[e.g., "English only" / "English + Spanish"]]

Acceptable answer format: [[e.g., "2–4 sentence summaries with a source link" / "Step-by-step instructions" / "Bullet list with page references"]]

Out-of-scope topics (the assistant should refuse): [[e.g., "Legal advice", "Medical diagnosis", "Competitor comparisons"]]

---

Section 2 - Document Inventory and Ingestion Strategy

List every document type in scope. This drives chunking, metadata design, and re-index cadence.

Document typeFormatSource locationVolumeUpdate frequencySensitivity
[[e.g., Product help docs]][[PDF / HTML / Markdown]][[e.g., Notion, Confluence, S3]][[e.g., 120 pages]][[e.g., Weekly]][[Public / Internal / Confidential]]
[[e.g., Policy documents]][[PDF]][[e.g., Google Drive folder]][[e.g., 40 documents]][[e.g., Quarterly]][[Internal]]
[[e.g., FAQ database]][[CSV / JSON]][[e.g., CRM export]][[e.g., 500 Q&A pairs]][[e.g., Monthly]][[Public]]
[[e.g., Training manuals]][[DOCX / PDF]][[e.g., SharePoint]][[e.g., 15 files]][[e.g., Annual]][[Confidential]]
[[e.g., Legal contracts]][[PDF]][[e.g., DocuSign archive]][[e.g., 300 files]][[e.g., Per-event]][[Confidential]]

Total estimated document count: [[e.g., "~1,000 pages across 150 files"]]

Languages in the corpus: [[e.g., "English only" / "English + French"]]

Documents to exclude from indexing: [[e.g., "Draft files, files marked CONFIDENTIAL-LEGAL, files older than 3 years"]]

Ingestion pipeline

The ingestion pipeline runs before any query reaches the assistant. Define it once, automate it.

Step 1 - Extract: Convert raw files to clean text.

  • PDF: use a PDF parser (PyMuPDF, AWS Textract for scanned docs, or Unstructured.io for mixed-format batches). Do not rely on copy-paste - OCR quality matters for retrieval.
  • HTML/Web pages: strip nav, footer, ads; keep body text and headings.
  • DOCX/Slides: extract text + speaker notes; discard decorative images unless they contain text.
  • CSV/JSON: flatten structured rows into prose snippets or keep as structured chunks (see Section 3).

Step 2 - Clean: Remove boilerplate that adds noise without adding meaning - page numbers, headers/footers repeated on every page, legal fine print that appears in every contract, watermarks.

Step 3 - Metadata tagging: Tag every document at ingest with at minimum:

Metadata fieldPurposeExample value
`source_title`Show in citations"Return Policy v3.2"
`sourceurl` or `filepath`Deep-link citations`https://docs.example.com/returns`
`document_type`Filter retrieval by type"policy" / "faq" / "manual"
`date_published`Freshness ranking`2025-11-01`
`access_tier`Row-level security"public" / "internal" / "confidential"
`department`Audience scoping"HR" / "Legal" / "Product"

---

Section 3 - Chunking Strategy

Chunking is the highest-leverage decision in RAG. Too large → irrelevant context floods the LLM. Too small → answers lose context and coherence.

Recommended chunk sizes by document type

Document typeRecommended chunk sizeOverlapReasoning
Long-form prose (manuals, reports)512–800 tokens15–20%Enough context per chunk; overlap preserves sentence continuity at boundaries
FAQ / Q&A pairsOne Q+A pair per chunkNoneEach pair is already a complete unit; splitting breaks the answer
Policy / legal clausesOne clause or section per chunk10%Clauses are logical units; overlap catches references to prior definitions
Structured data (CSV rows)3–5 rows per chunkNoneGroup related rows; keep column headers in each chunk
Code snippetsFunction or block per chunkNoneSplitting functions breaks executability

Your primary document type: [[Select from table above]]

Your target chunk size: [[e.g., "600 tokens with 100-token overlap"]]

Chunking method

Recursive text splitting (default for mixed content): split first on double-newline (paragraphs), then on single newline, then on sentence boundaries, then on space - never mid-word. This preserves natural reading units better than fixed-size splitting.

Semantic chunking (higher quality, higher compute): split when embedding similarity drops below a threshold between consecutive sentences. Produces more coherent chunks but requires an extra embedding pass at index time. Recommended for high-value knowledge bases where retrieval precision matters.

Agentic chunking (for very dense technical content): pass each section to an LLM and ask it to produce one proposition per chunk. Expensive - use only for high-value domains (e.g., legal contracts, scientific papers).

Your chosen chunking method: [[Recursive text splitting / Semantic / Agentic]]

Chunk metadata injection

Prepend a context header to every chunk so the embedding captures document-level context, not just local text:

```
[Source: [[Document Title]] | Type: [[Document Type]] | Date: [[Date Published]]]
[[Full chunk text here]]
```

This dramatically improves retrieval accuracy for queries that reference a specific document type or time period.

---

Section 4 - Embedding Model and Vector Store

Embedding model selection

ModelProviderDimBest forCost
`text-embedding-3-small`OpenAI1,536General English; best cost/quality balance$0.02 / 1M tokens
`text-embedding-3-large`OpenAI3,072High-precision retrieval; worth the cost for ≤1M docs$0.13 / 1M tokens
`embed-english-v3.0`Cohere1,024Optimized for retrieval; strong reranking companion$0.10 / 1M tokens
`multilingual-e5-large`Open-source / HuggingFace1,024Multilingual corpora; self-hosted for data privacyFree self-hosted
`nomic-embed-text`Nomic / Ollama768Fully local; zero data egressFree self-hosted

Your embedding model: [[Select from table above]]

Reason for choice: [[e.g., "English-only corpus, cost-sensitive → text-embedding-3-small"]]

Vector store selection

Vector storeDeploymentBest forManaged tierMax scale
PineconeCloud (managed)Fastest setup; serverless tier for small corporaYesBillions of vectors
WeaviateCloud or self-hostedHybrid search built-in; GraphQL APIYesHundreds of millions
QdrantCloud or self-hostedHigh performance; rich filtering; Rust-basedYesHundreds of millions
pgvector (PostgreSQL)Self-hosted / managedAlready use Postgres; simplest stackVia Supabase, NeonMillions (HNSW index)
ChromaLocal / self-hostedPrototyping; dev environmentNoMillions
FAISSLocal (library)Batch offline search; no serverNoBillions (with sharding)

Your vector store: [[Select from table above]]

Deployment model: [[Managed cloud / Self-hosted / Local (dev only)]]

Index type: Use HNSW (Hierarchical Navigable Small World) for all production deployments - it gives near-exact nearest-neighbor search at sub-millisecond latency without scanning the full index.

---

Section 5 - Retrieval Approach

Top-k retrieval baseline

The simplest retrieval: embed the query, find the `k` most similar chunks, pass them to the LLM.

Your top-k value: [[e.g., "k=5 for fast responses; k=10 for complex multi-part questions"]]

A top-k of 5–8 covers most use cases. Larger k means more context for the LLM but higher cost and risk of irrelevant chunks diluting the answer.

Hybrid retrieval (recommended for production)

Pure semantic search misses exact keyword matches (product codes, names, dates, technical terms). Hybrid combines:

  • Semantic (vector) search - finds conceptually similar chunks even when phrasing differs.
  • Keyword (BM25/full-text) search - finds exact term matches; critical for model numbers, proper nouns, dates.

Merge results using Reciprocal Rank Fusion (RRF): assign rank scores to results from each method independently, then combine them. No manual weight-tuning required.

Hybrid retrieval enabled: [[Yes / No - if No, state why semantic-only is sufficient]]

Keyword search method: [[BM25 / Elasticsearch / Typesense / pgvector full-text]]

Metadata filtering (pre-retrieval)

Before semantic search runs, filter by metadata to narrow the candidate pool:

FilterWhen to applyExample
`document_type`Query mentions a specific doc type"Show me policies on X" → filter `document_type = "policy"`
`access_tier`Per-user access levelOnly return chunks where `access_tier` ≤ user's tier
`department`Role-based scopingHR user → filter `department = "HR"` OR `department = "all"`
`date_published`Freshness required"Latest guidance on Y" → filter `date_published ≥ 2 years ago`

Reranking (strongly recommended)

Top-k retrieval returns the most *similar* chunks, not necessarily the most *relevant*. A reranker is a cross-encoder model that scores each (query, chunk) pair directly - far more accurate than cosine similarity alone, but too slow to run on the full corpus.

Reranking pipeline:

1. Retrieve top-20 candidates from hybrid search.

2. Pass all 20 (query + chunk) pairs to the reranker.

3. Reranker scores each pair; keep the top-5.

4. Pass top-5 to the LLM for generation.

RerankerProviderNotes
`rerank-english-v3.0`CohereBest quality for English; API call
`bge-reranker-large`HuggingFace (open-source)Self-hosted; strong quality
`flashrank`Open-sourceLightweight; runs locally; good for cost-sensitive setups

Your reranker: [[Select from table above / None - explain tradeoff]]

Retrieve top-N before reranking: [[e.g., "20"]]

Final top-k passed to LLM after reranking: [[e.g., "5"]]

---

Section 6 - LLM / Generation Layer with Grounding and Citations

Model selection for generation

ModelProviderBest forContext windowApprox. cost per query
GPT-5OpenAIHighest quality; large context128K tokens~$0.01–0.05
GPT-5 InstantOpenAICost-efficient; good quality128K tokens~$0.001–0.005
Claude Sonnet 5AnthropicInstruction-following; citations200K tokens~$0.01–0.04
Gemini 3.5 FlashGoogleFast; large context; multimodal1M tokens~$0.001–0.01
Llama 3 70BMeta / self-hostedPrivacy-first; zero data egress128K tokensInfrastructure cost only

Your generation model: [[Select from table above]]

System prompt for grounding

The system prompt is the primary hallucination control. Use this template:

```
You are [[Assistant Name]], a knowledge assistant for [[Organization Name]].
Answer ONLY using the context passages provided below.
If the answer is not in the context, say: "I don't have that information in my knowledge base."
Do NOT make up facts, statistics, or policy details.
Always cite the source of your answer using the format: [Source: [[Document Title]], [[Page or Section]]].
Keep answers concise - 2–4 sentences unless the user asks for more detail.
Today's date is [[Current Date]].
```

Your assistant name: [[e.g., "AskAcme" / "HR Helper" / "PolicyBot"]]

Tone: [[e.g., "Professional and concise" / "Friendly and plain-language" / "Technical"]]

Citation format

Every answer must include one or more citations. Define the format:

Citation template: [[e.g., `[Source: {documenttitle}, {sectionname}, p.{pagenumber}]` / `[Ref: {sourceurl}]`]]

Source link behavior: [[Always show source URL / Show URL on request / Show document title only]]

"I don't know" trigger: The LLM must say "I don't have that information" - never guess - when retrieved chunks don't contain a clear answer. Include this instruction verbatim in the system prompt.

Context window management

When multiple chunks are passed, order matters:

1. Place the most relevant chunk (top reranker score) first.

2. Place the second-most relevant chunk last (the "lost in the middle" effect - LLMs weight beginning and end of context more than the middle).

3. Separate chunks with a clear delimiter: `--- [Source: {title}] ---`

Max chunks passed to LLM: [[e.g., "5"]]

Estimated tokens per chunk: [[e.g., "600 tokens"]]

Estimated system prompt tokens: [[e.g., "300 tokens"]]

Total context per query: [[Calculate: (maxchunks × tokensperchunk) + systemprompt + user_query ≤ model context window]]

---

Section 7 - Chat Interface and Source Links

UI / tool options

OptionBest forSetup complexitySource linksCost
ChatGPT (custom GPT + retrieval plugin)Non-technical; OpenAI usersLowManualFree / ChatGPT Plus
Dify.aiNo-code RAG builder; full pipeline GUILowBuilt-inFree tier; $59/mo Pro
FlowiseOpen-source; self-hosted no-codeMediumBuilt-inFree self-hosted
LangChain + Chainlit (UI)Developer; full controlHighCustomInfrastructure cost
Vercel AI SDK + Next.jsDeveloper; production web appHighCustomInfrastructure cost
Slack/Teams bot (via middleware)Internal teams already in Slack/TeamsMediumBuilt-inMiddleware cost
Embedded widget (iframe/JS)External website or portalMedium-HighCustomInfrastructure cost

Your chosen interface: [[Select from table above]]

Source link format: [[Show as clickable URL / Show as "Document: title" text / Show in a collapsible references panel]]

Feedback button (thumbs up/down): [[Yes - feeds eval loop / No]]

---

Section 8 - Access Control and Data Privacy

Access control in RAG has two layers: who can query the assistant, and which documents a user is allowed to see in retrieval results.

Query-level access control

MethodHow it worksBest for
Auth wall (login required)All users authenticate before any queryInternal tools; any confidential corpus
API key per integrationEach calling system has a scoped keyService-to-service; embedded widgets
SSO / SAMLFederate identity from your IdP (Okta, Azure AD)Enterprise with existing SSO
Public (no auth)Open access; retrieval limited to public docs onlyCustomer-facing public FAQ bots

Your access control method: [[Select from table above]]

Document-level access control (row-level security)

When different users should see different subsets of documents, enforce it at retrieval time - not at the UI level.

Implementation: Store `accesstier` (or `usergroups`) as metadata on every chunk. At query time, pass the authenticated user's access level as a metadata filter. The vector store applies the filter before returning any results.

Your user tiers: [[e.g., "public / employee / manager / hr-only / legal-only"]]

Filter field name: [[e.g., `access_tier`]]

User group mapping:

User roleCan see document typesFilter value
[[e.g., Public visitor]][[e.g., FAQs, product docs]][[e.g., `access_tier = "public"`]]
[[e.g., Employee]][[e.g., + Internal policies, manuals]][[e.g., `access_tier in ["public","internal"]`]]
[[e.g., HR team]][[e.g., + HR-restricted docs]][[e.g., `access_tier in ["public","internal","hr-only"]`]]
[[e.g., Legal team]][[e.g., + Contracts, legal memos]][[e.g., `access_tier in ["public","internal","legal-only"]`]]

Data privacy rules

Does your corpus contain PII (names, emails, employee records)? [[Yes / No]]

If yes:

1. PII fields are metadata - do not include raw PII inside embeddable chunk text unless the user querying that chunk is authorized to see it.

2. Confirm your embedding provider's data processing agreement (DPA) covers your data type. OpenAI, Cohere, and Anthropic all have DPAs - check their trust pages.

3. For GDPR / HIPAA / CCPA: use a self-hosted embedding model and vector store to keep data on-premises.

4. Audit log: log every query with timestamp, user ID, and chunks retrieved (not the chunk text) - keep logs for [[30 / 90 / 365]] days per your compliance policy.

Self-hosted required for compliance? [[Yes - list reason / No]]

Your embedding and vector store deployment: [[Managed cloud / Self-hosted / Hybrid]]

---

Section 9 - Evaluation Framework

Evaluation is not optional - it is the only way to know if the assistant is reliable enough to deploy and whether it degrades over time.

The four metrics to track

MetricWhat it measuresTargetHow to measure
Retrieval recallDoes the correct chunk appear in the top-k results?≥ 85%Label 50 test queries with ground-truth chunk; check hit rate
Answer faithfulnessDoes the answer stick to the retrieved context (no hallucinations)?≥ 90%RAGAS library; LLM-as-judge scoring
Answer relevanceIs the answer actually responsive to the question?≥ 85%Human review or LLM-as-judge
Citation accuracyAre source citations correct and traceable?100%Spot-check: click every citation in 20 test answers

Evaluation tooling

ToolWhat it testsSetup effort
RAGASFaithfulness, relevance, context recall, answer completenessLow - pip install, pass context+answer+ground-truth
TruLensEnd-to-end RAG pipeline tracing + scoringMedium
LangfuseObservability, prompt version tracking, human annotationMedium
Manual human reviewGold standard for domain-specific qualityHigh - requires subject-matter reviewers

Your primary eval tool: [[Select from table above]]

Test set construction

Build a test set of at least 50 question-answer pairs before launch:

1. Write 50 questions representative of real user queries.

2. For each question, identify the ground-truth chunk(s) that contain the correct answer.

3. For each question, write the correct answer as a human would.

4. Run the full RAG pipeline on each question and score against ground truth.

Test set size: [[e.g., "50 questions at launch; expand to 200 within 3 months"]]

Minimum threshold to go live: Retrieval recall ≥ [[85%]], faithfulness ≥ [[90%]], citation accuracy = 100%.

Ongoing monitoring

  • Run the full eval set after every corpus update.
  • Track faithfulness score weekly - a drop of more than [[5 percentage points]] triggers a prompt review.
  • Log user thumbs-down clicks and review them weekly; any thumbs-down cluster is a retrieval gap.
  • Review 10 random live answers per week against the source documents.

---

Section 10 - Refresh and Re-Index Cadence

A knowledge assistant is only as good as its index. Define when and how the index is updated.

Re-indexing triggers

TriggerActionWho owns it
New document added to [[Source Location]]Ingest + chunk + embed new doc; add to vector store[[Owner role]]
Existing document updatedDelete old chunks by `source_id`; re-ingest updated doc[[Owner role]]
Document deleted or supersededDelete all chunks with matching `source_id` from vector store[[Owner role]]
Scheduled full re-indexRe-process all docs to pick up metadata or chunking changesAutomation

Partial update method (preferred): Use the document `source_id` metadata field to delete and replace only the chunks from changed documents - do not re-index the entire corpus unless the chunking strategy or embedding model changes.

Full re-index triggers (do these rarely): Switching embedding models, changing chunk size, adding a new metadata field across all documents.

Re-index schedule

Document typeRe-index frequencyMethodAutomation tool
[[e.g., Help docs (HTML)]][[e.g., Nightly]][[Partial - detect changed pages via sitemap diff]][[e.g., GitHub Actions cron / Airflow]]
[[e.g., Policy PDFs (Google Drive)]][[e.g., Weekly]][[Partial - watch Google Drive change events]][[e.g., Zapier / Cloud Functions]]
[[e.g., FAQ CSV]][[e.g., Daily]][[Full replace - small file, cheap to re-index]][[e.g., Scheduled Python script]]
[[e.g., Legal contracts]][[e.g., Per-event (on upload)]][[Partial - trigger on new file in S3 bucket]][[e.g., S3 event → Lambda]]

Re-index monitoring: Set an alert if the document count in the vector store drops by more than [[5%]] in a single run - this signals an accidental bulk delete.

---

Section 11 - No-Code vs. Build Options

Match the build path to the user's technical comfort and corpus size.

PathBest forToolsLimitationsMonthly cost range
No-code (fully managed)Non-technical; ≤500 documents; quick startDify.ai, Dante AI, Chatbase, CustomGPT.aiLimited customization; data leaves your infra$25–$150/mo
Low-code (visual pipeline)Somewhat technical; need custom logicFlowise, Langflow, n8n + AI nodesSome setup; self-host for privacy$0–$50/mo self-hosted
Full build (API + code)Developer; compliance requirements; large corpusLangChain / LlamaIndex + any vector store + any LLMEngineering time; maintenance burdenInfrastructure cost
Hybrid (no-code UI + API backend)Product teams; wants UI without backend codeDify.ai / Flowise frontend + OpenAI/Cohere APIMedium complexity$50–$200/mo
Fully self-hostedPrivacy-critical; air-gapped; HIPAA/GDPR strictOllama (LLM) + Qdrant + nomic-embed + FlowiseHardware required; no managed supportHardware + ops cost

Your technical comfort: [[Non-technical / Somewhat technical / Developer]]

Your recommended path: [[Select from table above based on comfort + corpus size]]

Why: [[One sentence explaining the match - e.g., "Developer comfort + 10,000 docs + compliance requirement → Full build with LlamaIndex + Qdrant self-hosted"]]

---

Section 12 - Cost Model

Per-query cost breakdown

Cost componentWhat drives itUnitEstimate
Embedding (query-time)1 embedding call per user queryPer 1M tokens[[e.g., "$0.0000015 per query at text-embedding-3-small"]]
Reranker1 reranker call per query × top-N chunksPer API call[[e.g., "$0.002 per query at Cohere rerank"]]
LLM generationPrompt tokens (chunks + system prompt) + output tokensPer 1M tokens[[e.g., "$0.005–0.05 per query depending on model"]]
Vector storeStorage + query requestsPer month[[e.g., "$0 Pinecone free tier / $70/mo Standard"]]
Automation / hostingIngestion pipelines, API serverPer month[[e.g., "$20–100/mo depending on infra"]]

Estimated queries per month: [[e.g., "500 / 5,000 / 50,000"]]

Estimated total monthly cost at that volume:

VolumeNo-code (Dify)Low-code (Flowise + API)Full build (self-managed API)
500 queries/mo~$25–50~$5–15~$10–30
5,000 queries/mo~$50–150~$20–80~$30–100
50,000 queries/mo~$150–500~$100–400~$200–600

Your estimated monthly cost: [[Fill in based on your volume + path]]

Cost-control levers

1. Use a smaller model (GPT-5 Instant, Gemini Flash) for routine questions; escalate to a larger model only when confidence is low.

2. Cache answers for high-frequency identical queries - the top 20% of queries are often the same 10 questions.

3. Set a hard spend cap in your LLM provider's dashboard before going live.

4. Reduce top-k - fewer chunks passed to the LLM lowers token cost per query with minimal quality loss if your reranker is tuned.

5. Batch re-index jobs during off-peak hours to avoid paying premium API rates.

---

Section 13 - Launch Checklist

Before the assistant goes live, verify every layer.

Pre-launch verification

1. Chunking audit: Manually inspect 20 random chunks. Confirm each is self-contained and includes the context header and metadata.

2. Retrieval spot-check: Run 10 known test queries. Confirm the correct source document appears in the top-5 retrieved chunks for every query.

3. Reranker validation: Compare ranked vs. unranked top-5 for 10 queries. Confirm reranking moves the correct chunk to position 1 or 2 in at least 8 of 10 cases.

4. Hallucination test: Run 5 queries where the answer is NOT in the corpus. Confirm the assistant says "I don't have that information" rather than inventing an answer.

5. Citation check: Verify every citation in 10 answers is a real, clickable source that contains the stated fact.

6. Access control test: Log in as a restricted-access user and confirm confidential-tier documents do not appear in answers.

7. PII audit: Run a query that should surface a document containing PII. Confirm PII is not exposed to unauthorized users.

8. Eval baseline: Run the full evaluation test set. Confirm retrieval recall ≥ [[85%]] and faithfulness ≥ [[90%]] before go-live.

9. Cost-per-query check: Run 50 test queries; calculate actual average cost per query; compare to estimate.

10. Fallback behavior: Confirm the system degrades gracefully if the vector store is unreachable - returns a clear error message, does not hallucinate.

Sign-off

CheckPassed?Tested byDate
Chunking audit (20 chunks)[[Yes / No / Pending]][[Tester Name]][[Test Date]]
Retrieval spot-check (10 queries)[[Yes / No / Pending]][[Tester Name]][[Test Date]]
Reranker validation[[Yes / No / Pending]][[Tester Name]][[Test Date]]
Hallucination test (5 no-answer queries)[[Yes / No / Pending]][[Tester Name]][[Test Date]]
Citation accuracy (10 answers)[[Yes / No / Pending]][[Tester Name]][[Test Date]]
Access control test[[Yes / No / Pending]][[Tester Name]][[Test Date]]
PII audit[[Yes / No / Pending]][[Tester Name]][[Test Date]]
Eval baseline (RAGAS)[[Yes / No / Pending]][[Tester Name]][[Test Date]]
Cost-per-query verified[[Yes / No / Pending]][[Tester Name]][[Test Date]]
Fallback behavior[[Yes / No / Pending]][[Tester Name]][[Test Date]]

---

Worked Example

*A concrete fill-in showing what a completed plan looks like for a common scenario.*

Scenario: A 50-person SaaS company wants an internal assistant that answers employee questions about HR policies, the employee handbook, and benefits documents - without the HR team fielding the same 20 questions every week.

Use case definition:
- Audience: All employees (internal, login required)
- Primary use case: Answer HR policy questions using the employee handbook, benefits guide, and PTO policy
- Query style: Conversational questions - "How many sick days do I get?" / "What's the parental leave policy?"
- Acceptable format: 2–3 sentence answer + citation to source document

Document inventory:

DocumentFormatVolumeUpdate frequencySensitivity
Employee Handbook v4PDF85 pagesAnnualInternal
Benefits Guide 2025PDF40 pagesAnnualInternal
PTO PolicyGoogle Doc8 pagesQuarterlyInternal
FAQ databaseCSV120 Q&A pairsMonthlyInternal

Chunking: 600 tokens, 100-token overlap, recursive text splitting. Context header prepended to every chunk.

Embedding + vector store: `text-embedding-3-small` (cost-efficient, English-only) + Pinecone Serverless (managed, zero infra).

Retrieval: Hybrid (semantic + BM25 in Pinecone). Retrieve top-20, rerank with Cohere `rerank-english-v3.0`, pass top-5 to LLM.

Generation model: GPT-5 Instant - sufficient quality for HR Q&A, cost-efficient at ~2,000 queries/month.

Access control: Login required (Okta SSO). All documents are `access_tier = "internal"` - no row-level splitting needed for this corpus.

Evaluation: RAGAS baseline at launch - retrieval recall 91%, faithfulness 94%. Thumbs-down button feeding a weekly Notion review log.

Re-index schedule: PTO Policy re-indexed on every Google Doc change event (Zapier watch). Handbook and Benefits Guide re-indexed annually after new versions published. FAQ CSV re-indexed nightly.

Interface: Flowise chat widget embedded in the company intranet. Source links open the original PDF page.

Estimated monthly cost at 2,000 queries/month: Pinecone Serverless ($0/mo on free tier at this volume) + OpenAI API (~$4/mo) + Cohere reranker (~$1/mo) + Flowise self-hosted ($0) = ~$5/month total.

---

*This template is a planning guide, not a guarantee of specific tool behavior or pricing. Verify API terms, pricing, and data processing agreements directly with each vendor before processing customer data. Pricing figures are approximate as of mid-2025 and subject to change.*

Illustrative preview - your actual result is built from your inputs.

01

How it works.

Tell it your documents, audience, and use case - get a setup blueprint for an AI that actually knows your content. Free, no signup.

An analyst highlighting passages in a printed internal report next to a laptop showing a folder of source documents
It starts with an honest inventory of what the assistant is actually allowed to know.
Start now

Get your setup blueprint

Free. Downloads a fully-filled setup blueprint you can edit and paste into ChatGPT, Claude or Gemini.

A researcher typing a question into a chat interface on a laptop, with the cited source document open on a second monitor
02
Answers traced back to your own documents.
A grounded RAG blueprint with honest "I don't know" behavior, tested before rollout.
Format & standard
03

What good looks like.

Two people at a desk comparing a chatbot's answer against a highlighted passage in a source PDF
Source grounding

Every answer is checked against the exact document chunk it was retrieved from, not free recall.

An engineer looking at a usage dashboard on a monitor showing query volume charts, notebook open beside the keyboard
Cost tuning

Model choice is set against real query volume, not the biggest model available by default.

A small team running through a printed checklist of test questions in front of a laptop before a rollout
Pilot testing

A batch of real questions gets run through before any real user sees the assistant.

01

What it must include

Criteria
  • 01A retrieval setup grounded in your actual documents, not generic model knowledge
  • 02Model/cost tradeoffs matched to your actual query volume
  • 03Guardrails for when it doesn't know - no confident-sounding guesses
  • 04A test plan before rolling out to real users
02

Signals of expertise

Quality
  • Grounds every answer in your actual documents, not free-floating generation
  • Matches model choice to real cost/volume tradeoffs
  • Explicit about what happens when it doesn't know the answer
03

Common mistakes

Pitfalls
  • ×Letting it answer confidently when it doesn't actually know
  • ×Picking an expensive model without checking real query volume needs
  • ×Skipping testing before rolling out to real users
A cross-functional team in a meeting room reviewing a printed list of sample assistant answers together
Nothing goes live until someone has read the 'I don't know' answers, too.
FAQ

Frequently asked.

Is the Knowledge Assistant (RAG) Setup free to use?

Yes. You can generate a full a setup blueprint for free with no signup and no credit card. An account is only needed if you want to save the result or download it later.

What do I need to provide to knowledge assistant (rag) setup?

3 fields: Documents, Audience, Use case. Each field has an example placeholder shown in the form, so you always have a model answer to work from even if you're not sure what to type.

How long does it take?

Most people get a finished a setup blueprint in under five minutes: fill in the inputs, generate, then copy the result into ChatGPT, Claude, or Gemini. Most users reach an 80–90% ready result within 1–3 passes.

Which AI model does it work with?

The output is a portable prompt and template - it works with GPT, Claude, Gemini, or Perplexity. You paste it into whichever model you already use; nothing is locked to one vendor.

What makes a good a setup blueprint?

It should include: A retrieval setup grounded in your actual documents, not generic model knowledge; Model/cost tradeoffs matched to your actual query volume; Guardrails for when it doesn't know - no confident-sounding guesses; A test plan before rolling out to real users. The tool is pre-loaded with these criteria so the generated draft already covers them.

An office desk late in the evening, a laptop screen glowing with a document library open, city lights through the window

Get your setup blueprint in minutes.