# Support Knowledge Base RAG Assistant — AI Workflow export
# https://invitationbuddy.com/workflows/support-knowledge-base-rag-assistant
schema_version: "1.0"
exported_at: "2026-08-16T10:11:28+00:00"
source: "https://invitationbuddy.com/workflows/support-knowledge-base-rag-assistant"
workflow:
  name: Support Knowledge Base RAG Assistant
  slug: "support-knowledge-base-rag-assistant"
  version: "1.0.0"
  tagline: "Answer support questions from your own documentation, with citations"
  summary: "Indexes your help centre and internal runbooks, retrieves the relevant passages per question, and answers with links back to the source — refusing when the answer is not in the corpus."
  description: |-
    A support assistant that only answers from your documentation. Questions are embedded, the relevant passages retrieved and re-ranked, and the answer composed strictly from what was retrieved — with citations the user can click.
    
    The important behaviour is the refusal: when the corpus does not contain the answer, it says so and escalates rather than inventing one.
  category: Customer Support
  type: Agentic Workflow
  difficulty: advanced
  automation_level: mostly_automated
  pricing: paid
  language: en
  trigger:
    type: chat
    detail: null
  input_types:
    - text
    - document
    - pdf
    - api
  output_types:
    - summary
    - email
    - dashboard
  author: null
  company: null
  last_updated: "2026-07-11"
overview:
  purpose: |-
    A support assistant that only answers from your documentation. Questions are embedded, the relevant passages retrieved and re-ranked, and the answer composed strictly from what was retrieved — with citations the user can click.
    
    The important behaviour is the refusal: when the corpus does not contain the answer, it says so and escalates rather than inventing one.
  business_value: "Deflects routine questions with answers staff can audit, instead of a chatbot that guesses."
  expected_outcome: "Cited answers drawn only from your corpus, with unanswerable questions escalated rather than guessed."
  problems_solved:
    - Documentation exists but nobody can find the right page
    - "Generic chatbots answer from training data, not your docs"
    - No audit trail for what the assistant told a customer
    - Documentation drift goes unnoticed until someone complains
  ideal_users:
    - Support teams with substantial documentation
    - Internal helpdesks
    - Regulated organisations that need auditable answers
  benefits:
    - Every answer cites the document it came from
    - Refuses rather than inventing when the corpus is silent
    - "Re-indexes as documentation changes — no retraining"
    - "Retrieval respects the asking user's permissions"
  limitations:
    - "Answer quality is capped by retrieval quality — bad chunks, bad answers"
    - Chunking strategy needs tuning per corpus
    - "Multi-hop questions spanning several documents remain hard"
    - Keeping the index in sync with the source of truth is ongoing work
  success_metrics:
    - Deflection rate
    - Groundedness (answers fully supported by citations)
    - Escalation rate and its accuracy
    - Documentation gaps surfaced per week
metrics:
  estimated_minutes: 15
  estimated_cost: 0.35
  cost_currency: USD
  estimated_tokens: 18000
  success_rate: 86
  automation_percent: 82
  human_review_percent: 18
industries:
  - SaaS
  - Finance
  - Healthcare
  - Government
tags:
  - RAG
  - Enterprise Ready
  - Self Hosted
  - GDPR Aware
ai_skills:
  - RAG
  - Summarization
  - Text Generation
tools:
  -
    name: ChatGPT
    role: primary
    required: true
    url: "https://invitationbuddy.com/ai-directory/chatgpt"
  -
    name: Claude
    role: supporting
    required: true
    url: "https://invitationbuddy.com/ai-directory/claude"
models: []
integrations:
  -
    name: OpenAI
    kind: ai_provider
    auth_type: api_key
    required: true
  -
    name: Anthropic
    kind: ai_provider
    auth_type: api_key
    required: true
  -
    name: Notion
    kind: productivity
    auth_type: oauth
    required: false
  -
    name: REST API
    kind: protocol
    auth_type: api_key
    required: false
  -
    name: MCP
    kind: protocol
    auth_type: token
    required: false
prerequisites:
  -
    kind: api_key
    label: LLM API key
    detail: For embeddings and generation.
    required: true
  -
    kind: account
    label: Vector database
    detail: "Pinecone, Weaviate, Qdrant or pgvector."
    required: true
  -
    kind: software
    label: Document corpus
    detail: "Help centre, runbooks or policy documents in a machine-readable form."
    required: true
  -
    kind: permission
    label: "Access-control mapping"
    detail: Which documents each user role may retrieve from.
    required: true
steps:
  -
    number: 1
    title: Ingest and chunk the corpus
    description: "Split documents into passages that each stand alone, preserving headings and document identity."
    input: Help centre export
    output: Chunked passages
    estimated_minutes: 4
    difficulty: advanced
    automation: auto
    manual_review: false
    tips:
      - "Chunk on semantic boundaries, not fixed character counts — a passage cut mid-procedure retrieves badly"
  -
    number: 2
    title: Embed and index
    description: Generate embeddings and write them to the vector store with permission metadata attached.
    tool: Pinecone
    input: Chunked passages
    output: Vector index
    estimated_minutes: 3
    difficulty: advanced
    automation: auto
    manual_review: false
  -
    number: 3
    title: Retrieve for the question
    description: "Embed the incoming question and fetch the nearest passages, filtered by what this user is allowed to see."
    input: User question
    output: Candidate passages
    estimated_minutes: 1
    difficulty: advanced
    automation: auto
    manual_review: false
    warnings:
      - Filter by permission at retrieval time — never retrieve everything and rely on the model to decline
  -
    number: 4
    title: "Re-rank"
    description: "Re-score candidates for actual relevance to the question, not just embedding proximity."
    input: Candidates
    output: Top passages
    estimated_minutes: 1
    difficulty: advanced
    automation: auto
    manual_review: false
    tips:
      - "Re-ranking is the single highest-leverage upgrade to a mediocre RAG setup"
  -
    number: 5
    title: Compose a grounded answer
    description: "Answer strictly from the retrieved passages, citing each claim — or state that the answer is not in the documentation."
    model: Claude Sonnet
    prompt: |-
      Answer the question using ONLY the passages provided.
      
      Question: {{question}}
      
      Passages:
      {{passages}}
      
      Rules:
      - Every factual claim must cite the passage it came from, as [1], [2]…
      - If the passages do not contain the answer, reply exactly: NOT_IN_DOCS
      - Do not use knowledge from outside these passages, even if you are confident
      - Be direct. No preamble.
    input: Question + top passages
    output: Cited answer
    estimated_minutes: 2
    difficulty: advanced
    automation: auto
    manual_review: false
    warnings:
      - "The NOT_IN_DOCS path must be wired to escalation — a question that silently dead-ends is worse than no assistant"
  -
    number: 6
    title: Escalate or resolve
    description: Cited answers go to the user; NOT_IN_DOCS routes to a human and logs a documentation gap.
    input: Answer or refusal
    output: Resolution or escalation
    expected_result: Every question either answered with citations or escalated with context.
    estimated_minutes: 2
    difficulty: advanced
    automation: semi
    manual_review: false
  -
    number: 7
    title: Review gaps weekly
    description: The logged NOT_IN_DOCS questions become the documentation backlog.
    input: Gap log
    output: Documentation tasks
    expected_result: Documentation improves from real questions rather than guesses.
    estimated_minutes: 2
    difficulty: advanced
    automation: manual
    manual_review: true
prompts:
  -
    title: Compose a grounded answer
    kind: user
    body: |-
      Answer the question using ONLY the passages provided.
      
      Question: {{question}}
      
      Passages:
      {{passages}}
      
      Rules:
      - Every factual claim must cite the passage it came from, as [1], [2]…
      - If the passages do not contain the answer, reply exactly: NOT_IN_DOCS
      - Do not use knowledge from outside these passages, even if you are confident
      - Be direct. No preamble.
    variables:
      - question
      - passages
    model_hint: Claude Sonnet
use_cases:
  -
    title: "Customer-facing docs search"
    description: Let users ask questions of the documentation and get cited answers.
    industry: SaaS
    outcome: Reduced routine ticket volume
  -
    title: Internal helpdesk
    description: Answer staff questions from policies and runbooks with links to the source.
    industry: Government
    outcome: Faster internal answers
  -
    title: Regulated advice lookup
    description: Search policy sets and quote the governing clause rather than paraphrasing.
    industry: Finance
    outcome: Auditable answers
faq:
  -
    question: "Does RAG eliminate hallucination?"
    answer: "It reduces it substantially but does not eliminate it — the model can still misread a retrieved passage. Clickable citations are what let a user verify, which is why they are not optional here."
  -
    question: "Why is re-ranking a separate step?"
    answer: "Nearest-neighbour search returns passages that are semantically close, which is not the same as passages that answer the question. Re-ranking is usually the biggest single quality jump available."
  -
    question: "How do we keep the index current?"
    answer: "Re-index on document change rather than on a schedule. A weekly cron leaves up to a week of wrong answers after a policy update."
