> ## Documentation Index
> Fetch the complete documentation index at: https://docs-eos.fpt.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Knowledge bases

> What agents actually search and the unit access is granted on - Create, configure, review and connect a KB.

A **Knowledge base** groups one or more sources into something agents can search. All reading, chunking and embedding happen here, so one source can feed several KBs processed differently. Each KB has its own MCP / REST endpoints, so you can give it to each agent and revoke access independently.

## KB list screen

| Area | Content |
| - | - |
| Header | **Create knowledge base** button |
| Filters | *All* · *Mine*; **Search knowledge bases** box |
| View | **Table** or **Cards** |
| KB table | Columns below; click a row to open the KB |

| Column | Meaning |
| - | - |
| Knowledge base | Name, description or number of sources; *External index* label if the KB is managed by an external pipeline |
| Index | Index status: *Active*, *Needs review* |
| Documents | Number of documents in the KB |
| Avg. score | Average retrieval score |
| Needs review | Number of documents with errors or needing action |
| Updated | Most recent change |
| Actions | **⋯** menu with **Delete knowledge base** |

## Creating a knowledge base

The wizard has four steps: **Select data** → **Processing pipeline** → **Name & access** → **Review & create**.

**1. Select data**

Tick one or more sources; expand the folder tree to pick individual folders or files. The table shows file count and how many KBs use each source. Under **System sources** there is a ready-made *Legal documents* - An external index updated automatically every day. If data is missing, click **Create new source →**.

**2. Processing pipeline**

Choose a ready-made pipeline for each source - **Automatic per file** is recommended. The screen lists file counts by type and how each type is processed. The workspace default embedding model is used and locked once the KB is created.

**3. Name & access**

Enter the **KB name** and **Description for the agent** (agents read this line to decide when to call the KB; editable later in the Connect tab). Add **KB managers** - People who edit settings, review chunks and issue API keys.

**4. Review & create**

Check everything and create the KB. The system starts processing and indexing.

| File type | How the *Automatic per file* pipeline processes it |
| - | - |
| DOCX | Split by headings |
| PDF | Extract text directly; OCR automatically for scans |
| XLSX / CSV | Split by rows, keep column headers |
| HTML | Strip menus, keep content |

## KB detail screen

The header summarizes document count, chunk count, owner and documents needing review, with the **Retrieval test** and **Add data to KB** buttons and the **Data taken from** block (which sources, all or part, **Edit scope** button).

### Documents tab

A document table with columns *Document*, *Source*, *Status* (*Processed*, *Processing error*), *Chunks*. Filter *All* / *Needs review* / *Disabled*, choose **Visible columns**, **Filter by metadata**.

Click a document to open the **chunk viewer**:

| Element | Used to |
| - | - |
| Original file and chunk list | Side by side; **Sync scroll** keeps both sides moving together; zoom in / out on the original file |
| Chunk filter | *All* · *Original ingestion* · *Manually edited*; view *By page* |
| Each chunk | Chunk ID, **On** / off switch (disabled chunks are not retrieved), *manually edited* label |
| **Edit chunk** | Manually edit a chunk's content when it was split incorrectly |
| **Metadata** | Status, source, chunk count, retrievals in the last 30 days, metadata values, effective from / to dates, creation time, document ID |

### Needs review tab

A queue of work to handle, grouped by cause:

| Group | When it appears |
| - | - |
| Detected during ingestion | OCR below the 0.80 threshold, or uncertain table detection |
| Could not ingest | Password-protected PDF, image too blurry, unknown format - Already retried 3 times |
| Reported by end users | 2 or more "not helpful" ratings on the same chunk, sent via `submit_feedback` |
| Missing required metadata | Grouped by field; click to filter, then go to the source to fix in bulk |
| Invalid metadata value | Outside the allowed list, wrong date / number format |
| New file in a partially selected folder | A folder where individual files were picked has a new file - Add it to the KB or ignore |
| Conflict with source | A chunk was edited manually but the original passage just changed in the source |

Each item has a **Fix in source** button; use **Bulk edit** and **Approve fixed items** when handling many items.

### Settings tab

| Block | Content |
| - | - |
| Pipeline per source | Scope and pipeline of each source; **Change pipeline** button |
| Index & retrieval | Embedding model; retrieval method; Top-K before rerank, Top-K returned, score threshold, vector / keyword weights |
| Retrieval options | **Expand to parent chunk** (return the whole Article), **Only return documents in effect**, **Automatic metadata filtering** |
| Metadata fields used in the KB | Turn each field on / off and choose **Use as MCP filter** |
| Automatic rules | Turn on the rules that create *Needs review* items |
| Where metadata comes from | Which fields are managed by the source (read-only), which by the platform |
| Metadata coverage | Share of documents that have a value for each field |

| Retrieval method | Best for |
| - | - |
| Vector only | Free-form questions; fastest |
| Full-text (BM25) | Document numbers, names, codes |
| Hybrid + rerank | Both combined, then reranked; default 70% vector, 30% BM25 |

### Connect tab

| Item | Content |
| - | - |
| KB MCP endpoint | Status *Running*, **Test** button |
| URL | MCP URL `https://<domain>/api/mcp/kb/<kb-id>` and REST URL `.../api/v1/kb/<kb-id>/retrieve` - Unchanged when the KB is renamed |
| OAuth sign-in for MCP | The client opens a browser for the user to sign in and click *Allow*; **MCP accepts OAuth only** switch |
| Tools exposed to agents | `search_<kb_name>`, `get_document`, `submit_feedback` - Turn each tool on / off, see call counts for 7 days |
| Tool name & description for the model | Edit the name (only while the KB has no API keys) and description; **View parameter schema (inputSchema)** |
| KB API keys | **Issue new key for this KB**, key list, revoke |
| Sample config snippets | OAuth / API key for generic MCP, Claude Code, VS Code, Cursor - **Copy** button |
| Authorized apps | Which users have allowed which apps via OAuth; revoke |
| Call log | Every MCP / REST call (questions masked), filter by key and channel |

> [!WARNING]
>
> **Note:** There are no document-level permissions yet - Anyone with a KB's API key can query every document in it.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.