RAG

Ingest documents

Before an agent can search your content, AXL needs to know where it lives and what it is called. That is a document set: a named directory of files, declared once and indexed whenever it changes.

Create a document set

Add this to axl-config/docs.toml:

[[docs]]
name = "product-guide"
path = "docs/product-guide"
tags = ["product"]

Then create the content directory:

axl-config/docs/product-guide/
├── content/
│   ├── getting-started.md
│   └── troubleshooting.md
├── keywords.txt       # optional trigger words
└── eval.jsonl         # optional retrieval checks

The path is relative to axl-config. Keep one coherent knowledge area per doc set; that makes it easier to choose sources and understand search results.

Ingest the set

# Incremental ingest; unchanged files are skipped
axl rag ingest -c /path/to/axl-config

# Rebuild the stored chunks when you need a full refresh
axl rag ingest -c /path/to/axl-config --reindex

# Check what was stored
axl rag status -c /path/to/axl-config

The default local embedder does not need an API key, but its model is downloaded on first use. PDF and office files require the Tika support used by your deployment; start with Markdown if you are validating the workflow.

Before connecting an agent

Use a representative question to inspect retrieval directly:

axl rag search "How do I configure product access?" -c /path/to/axl-config
axl rag inspect product-guide getting-started.md -c /path/to/axl-config

If results are empty, verify the file is under content/, rerun ingest, and check the document-set name and config path.

If search returns nothing useful here, the problem is in the index rather than the agent's prompt.

Next

On this page