Skip to content

Knowledge

How collections group your sources into retrievable, cited answers.

Knowledge turns your content into passages a model can quote. A source is one document; a collection is a named group of them. Attach a collection to a chatbot or an agent and its answers become grounded and citable.

Collections

A collection is a logical grouping, not a folder. It holds no retrieval settings and no embedding configuration — those belong to the document and to the agent doing the retrieving. What a collection decides is scope: an agent answers from the collections it has been given and from nothing else, which is how “this bot can only answer from HR Policies” becomes a fact about the data rather than a line in a prompt.

How knowledge is organized
Workspace
└── Knowledge
      ├── Collection ── Source, Source, Source
      ├── Collection ── Source
      └── Unorganized ── Source, Source

A source belongs to at most one collection. Moving it between collections is a metadata change: nothing is re-fetched, re-chunked or re-embedded, so filing your library is cheap no matter how large it is.

Unorganized

A source added without a collection lands in Unorganized. It is fully ingested, chunked, embedded and searchable in the app — but no agent can retrieve from it until you file it. Unorganized is a staging area, deliberately outside every retrieval scope, so nothing becomes answerable by accident just because somebody uploaded it.

Deleting a collection keeps its sources

Deleting a collection removes the grouping and its chatbot and agent attachments. The sources in it, and every passage indexed from them, move to Unorganized intact. Deleting a source is the separate, explicit action that destroys content.

The lifecycle

Source to answer
Source → Ingestion → Processing → Chunking → Embedding → Indexing → Retrieval → Answer

Each stage is recorded on the source, so a stuck or failed import tells you exactly where it stopped and why.

Source types

TypeNotes
TextPaste content directly. The most predictable option.
URLThe page is fetched server-side, stripped to readable text, with a timeout and a size cap. Private, loopback and link-local addresses are refused.
File.txt, .md, .csv, .json and .html up to 5 MB, read as UTF-8. PDF and DOCX are not supported yet.

Retrieval

On each turn the question is matched against indexed chunks using PostgreSQL full-text ranking, restricted to the collections the assistant is attached to, and the best passages are passed to the model with their titles, so it can cite them as [1], [2] and so on. A source that is not yet chunked falls back to its own text rather than returning nothing.

Embeddings today

Retrieval currently ranks with full-text search, and embeddings are generated by a deterministic local provider so the pipeline is exercised end to end without an external dependency. The retrieval boundary is provider-agnostic, so a vector store can be introduced without changing any caller.

Test retrieval

The Test tab runs a query against one collection and shows the ranked passages with their scores. It runs exactly the retrieval the chat pipeline runs, so what you see is what the model would be given. Use it to check coverage before attaching the collection to an assistant.