AI Knowledge

Generate structured JSON exports from documentation for LLM consumption and RAG pipelines.

Overview

The knowledge system transforms MDX documentation into two JSON exports:

  • sections.json — Header-scoped sections for RAG pipelines and semantic search
  • pages.json — Full page content for LLM context windows and OpenWebUI upload

Content processing includes:

  • Replacing <TypeDocProps /> components with JSON property documentation
  • Inlining demo source code from referenced demo files
  • Converting theme tables to JSON data
  • Resolving relative imports and links

Generation runs automatically during buildStart (production builds) and configureServer (dev server initialization). The knowledge field on QuiDocsConfig enables generation — no enabled flag is required.

Configuration

Define the knowledge field in your qui-docs.config.ts:

import type {QuiDocsConfig} from "@qualcomm-ui/mdx-vite"
import {readFileSync} from "node:fs"
import {resolve} from "node:path"

export default {
  knowledge: {
    baseUrl: "https://docs.example.com",
    exclude: ["**/internal/**", "*guide+/swagger*"],
    extraFiles: [
      {
        contents: readFileSync(
          resolve(__dirname, "../some-package/CHANGELOG.md"),
          "utf-8",
        ),
        id: "changelog",
      },
    ],
  },
} satisfies QuiDocsConfig

KnowledgeConfig

Knowledge generation configuration for LLM integrations. Presence of this config enables knowledge generation.
PropTypeDefault
Base URL for documentation links in the generated output.
string
Glob patterns to exclude, relative to the resolved page directory. Supports full glob syntax via minimatch.
string[]
Extra files to include in knowledge output beyond the generated page content.
KnowledgeExtraFile[]
Configuration for which frontmatter fields to include in the generated Markdown output. Uses glob patterns for flexible field selection.
Platform-specific integration configurations for uploading generated knowledge to external services.
{
openWebUi?: Array<{
envFile?: string
id: string
}>
}
Output directory for generated knowledge files, relative to the public dir.
string
'exports'
Prefix to use for page IDs. Used to generate unique page IDs for knowledgebases that span multiple QUI Docs sites with potentially overlapping routes.
string
Configuration for whole-page JSON exports.
Configuration for header-scoped section exports.
Type
string
Description
Base URL for documentation links in the generated output.
Type
string[]
Description
Glob patterns to exclude, relative to the resolved page directory. Supports full glob syntax via minimatch.
Type
KnowledgeExtraFile[]
Description
Extra files to include in knowledge output beyond the generated page content.
Description
Configuration for which frontmatter fields to include in the generated Markdown output. Uses glob patterns for flexible field selection.
Type
{
openWebUi?: Array<{
envFile?: string
id: string
}>
}
Description
Platform-specific integration configurations for uploading generated knowledge to external services.
Type
string
Description
Output directory for generated knowledge files, relative to the public dir.
Type
string
Description
Prefix to use for page IDs. Used to generate unique page IDs for knowledgebases that span multiple QUI Docs sites with potentially overlapping routes.
Description
Configuration for whole-page JSON exports.
Description
Configuration for header-scoped section exports.

KnowledgeExtraFile

Extra content to include in knowledge output. Assumed to be Markdown.
PropType
The Markdown content for this file.
string
Unique identifier for this file, used for the output filename.
string
Whether to process this file as MDX content, replacing relative URLs, and applying other transformations as if the file were authored as mdx documentation.
boolean
Display title for this content.
string
Type
string
Description
The Markdown content for this file.
Type
string
Description
Unique identifier for this file, used for the output filename.
Type
boolean
Description
Whether to process this file as MDX content, replacing relative URLs, and applying other transformations as if the file were authored as mdx documentation.
Type
string
Description
Display title for this content.

KnowledgeFrontmatterConfig

PropType
Glob patterns for frontmatter fields to exclude (applied after include).
string[]
Glob patterns for frontmatter fields to include in output. Use ["*"] to include all fields.
string[]
Type
string[]
Description
Glob patterns for frontmatter fields to exclude (applied after include).
Type
string[]
Description
Glob patterns for frontmatter fields to include in output. Use ["*"] to include all fields.

SectionExportConfig

Configuration for header-scoped section exports.
PropTypeDefault
Header depths that define section boundaries.
number[]
[1, 2, 3]
Minimum content length to create a section entry.
number
0
Output path for sections.json, relative to the public directory.
string
'sections.json'
Type
number[]
Description
Header depths that define section boundaries.
Type
number
Description
Minimum content length to create a section entry.
Type
string
Description
Output path for sections.json, relative to the public directory.

PagesExportConfig

Configuration for whole-page exports.
PropTypeDefault
Output path for pages.json, relative to the public directory.
string
'pages.json'
Type
string
Description
Output path for pages.json, relative to the public directory.

Output Structure

Generated files are written to {publicDir}/{outputPath}/. The default output path is exports.

public

sections.json

Contains header-scoped section entries extracted from each documentation page. Each section includes a breadcrumb header path, prose content, code examples, and an MD5 hash for change detection.

Intended for RAG pipelines and semantic search. Sections are scoped by heading depth (default: h1, h2, h3), producing granular chunks suitable for embedding and retrieval.

KnowledgeSections

Output structure for the sections.json export.
PropType
string
string
SectionEntry[]
number
1
Type
string
Type
string
Type
SectionEntry[]
Description
Type
number
Type
1

SectionEntry

A single section entry extracted from documentation.
PropType
Code examples extracted from this section.
Array<{
code: string
language: string
}>
Prose content with code blocks removed. Used for formatted output.
string
Hash of this section's contents. Includes codeExamples, metadata, headerPath, and rawContent.
string
Breadcrumb path of headers leading to this section.
string[]
Depth of this section's heading (1-6). Matches the heading that starts this section (e.g. an h2 section has headingLevel 2).
number
Frontmatter from the source page.
Record<
string,
unknown
>
Source page identifier.
string
Raw markdown content from the AST, including code blocks.
string
Generated section ID for anchor links.
string
Search terms extracted from ::: terms ::: blocks within this section.
string[]
Name of the types or interfaces described by typeDocProps in this section.
Array<{
props: Array<{
defaultValue?: string
description: string
name: string
propType?:
| 'input'
| 'output'
required: boolean
type: string
}>
type: string
}>
URL with anchor to this specific section.
string
Type
Array<{
code: string
language: string
}>
Description
Code examples extracted from this section.
Type
string
Description
Prose content with code blocks removed. Used for formatted output.
Type
string
Description
Hash of this section's contents. Includes codeExamples, metadata, headerPath, and rawContent.
Type
string[]
Description
Breadcrumb path of headers leading to this section.
Type
number
Description
Depth of this section's heading (1-6). Matches the heading that starts this section (e.g. an h2 section has headingLevel 2).
Type
Record<
string,
unknown
>
Description
Frontmatter from the source page.
Type
string
Description
Source page identifier.
Type
string
Description
Raw markdown content from the AST, including code blocks.
Type
string
Description
Generated section ID for anchor links.
Type
string[]
Description
Search terms extracted from ::: terms ::: blocks within this section.
Type
Array<{
props: Array<{
defaultValue?: string
description: string
name: string
propType?:
| 'input'
| 'output'
required: boolean
type: string
}>
type: string
}>
Description
Name of the types or interfaces described by typeDocProps in this section.
Type
string
Description
URL with anchor to this specific section.

pages.json

Contains the full rendered markdown content of each documentation page. Each entry includes the page title, route pathname, and an MD5 hash.

Used by the page header UI for copy/download actions and by the upload-knowledge CLI for OpenWebUI uploads.

KnowledgePages

Output structure for the pages.json export.
PropType
string
string
PageEntry[]
number
1
Type
string
Type
string
Type
PageEntry[]
Description
Type
number
Type
1

PageEntry

A single page entry containing the full raw markdown content.
PropType
Full raw markdown content of the page.
string
MD5 hash for change detection.
string
Source page identifier.
string
Route pathname.
string
Page title.
string
Type
string
Description
Full raw markdown content of the page.
Type
string
Description
MD5 hash for change detection.
Type
string
Description
Source page identifier.
Type
string
Description
Route pathname.
Type
string
Description
Page title.

Page Header UI

When knowledge is configured, each documentation page displays two actions in the page header:

  • Copy Page — Copies the page content as Markdown to the clipboard
  • Download Page — Downloads the page as a .md file

Both actions fetch content from pages.json at runtime. They only appear on pages that have a corresponding entry in the generated output.

OpenWebUI Integration

Upload generated knowledge to OpenWebUI instances. The upload command auto-detects pages.json in the output directory and uploads each page as an individual file.

Configuration

Define integrations in the knowledge.integrations.openWebUi array:

export default {
  knowledge: {
    baseUrl: "https://docs.example.com",
    integrations: {
      openWebUi: [{id: "production"}, {id: "staging", envFile: ".env.staging"}],
    },
  },
} satisfies QuiDocsConfig

Each integration loads credentials from an env file. By convention, an integration with id: "production" loads .env.production. Override this with the envFile property.

OpenWebUiIntegration

OpenWebUI integration configuration.
PropType
Path to env file containing OPEN_WEB_UI_* variables. Defaults to .env.{id} by convention.
string
Unique identifier for this integration.
string
Type
string
Description
Path to env file containing OPEN_WEB_UI_* variables. Defaults to .env.{id} by convention.
Type
string
Description
Unique identifier for this integration.

Credential Environment Variables

Required variables in each env file:

VariableFallbackDescription
OPEN_WEB_UI_URLWEB_UI_URLOpenWebUI instance URL
OPEN_WEB_UI_API_KEYWEB_UI_KEYAPI key for authentication
OPEN_WEB_UI_KNOWLEDGE_IDKNOWLEDGE_IDTarget knowledge base ID

Upload Command

# Upload to all configured integrations
qui-mdx-vite upload-knowledge

# Upload to specific integrations
qui-mdx-vite upload-knowledge -i production,staging

# Override the knowledge file path
qui-mdx-vite upload-knowledge -p ./custom/exports

# Force upload even if content unchanged
qui-mdx-vite upload-knowledge --force

CLI Options

OptionDescription
-p, --path <path>Override knowledge file path
-i, --integration <names>Comma-separated integrations to upload to
--forceForce upload even if content unchanged

When no integrations are configured, the upload command falls back to credentials from OPEN_WEB_UI_* environment variables.

Last updated on by Ryan Bower