Stores are the building blocks of a Knowledge Base. Each store represents a collection of related information that has been ingested, processed, and indexed for semantic search.
Open your Knowledge Base in FlowX Designer and select the Stores tab.
2
Open the upload dialog
Click the + button in the top-right of the Stores tab. A file picker opens.
3
Select file
Choose a PDF file from your computer and click Open. The Upload Store modal appears.
4
Set the store name
The Name field is pre-filled with the file name (without extension). Edit it if needed — the name must be unique within the Knowledge Base.
5
Review metadata (optional)
The Metadata section shows the metadata schema defined for this Knowledge Base. If no metadata is defined, a “No metadata defined” placeholder appears — click Go to Metadata Setup to configure a schema on the Metadata tab before uploading. See User-defined metadata for details.
6
Upload
Click Upload to start the ingestion process. The store appears in the list with status Processing, and transitions to Ready once chunking and indexing complete.
Maximum file size: 20 MB (can be changed using environment variables)
Future releases will support:
Images
PowerPoint presentations
Word documents
Excel spreadsheets
Each store operation takes one document or one payload. There is no multi-file selector and no folder-based ingestion, in the upload dialog or on the Update Knowledge Base node.To load a set of documents in one pass, see Ingesting many documents.
Available on SaaS with FlowX.AI . This feature is live on managed (SaaS) deployments now. Self-hosted deployments will receive it with the next LTS release family.
Besides uploading a file, you can add content to a store by pasting a payload — free text, Markdown, or JSON — directly into a code editor. This is useful for seeding or updating a store quickly without producing a file, for example pasting a documentation snippet, a block of guidelines, or a JSON blob.The store add flow has a Source toggle:
Document (default) — upload a file, as described above.
Payload — paste content into the editor.
Payload works for all three content operations — create, append, and replace — and is available both in the Knowledge Base admin (design time) and in the Data Sources Content view of a running app.
1
Switch Source to Payload
In the store’s add or update flow, set the Source toggle to Payload.
2
Paste the content
Enter text, Markdown, or JSON. JSON is not validated — content is accepted as-is.
3
Name the store (create only)
When creating a store, type a unique name. Append and replace derive the entry name automatically.
4
Submit
Content is processed and indexed asynchronously — the store shows Processing until Ready. Replacing a populated store asks for confirmation first, since it deletes existing content.
A payload is stored as plain text — wrapped into a text file and chunked like a document. JSON is kept as an opaque text blob, so it is not stored or queried field by field.
The store’s History distinguishes how each operation was performed — for example Append Content - Payload vs Append Content - Document.
Available on SaaS with FlowX.AI . This feature is live on managed (SaaS) deployments now. Self-hosted deployments will receive it with the next LTS release family.
Remove individual chunks and entries from a store by matching their metadata, without deleting the whole store. This is a workflow-driven operation on the Update Knowledge Base node, useful when you need to retire a subset of content (for example, entries for a region or a document version) while keeping the rest of the store intact.
1
Add an Update Knowledge Base node
In your workflow, add an Update Knowledge Base node and select the target Knowledge Base and store.
2
Choose Delete entries
Set the operation to Delete entries.
3
Build the metadata filter
Define a metadata filter that matches the entries you want to remove. The filter uses the same query builder as chunk search (field / operator / value, grouped with AND / OR). See Filtering by metadata for the operator list.
4
Confirm
Matching entries and their chunks are soft-deleted from the store. Removal from the vector database is asynchronous and may take a few moments to complete.
A Delete entries operation requires a non-empty metadata filter. An empty or match-all filter is rejected, so a mis-configured node cannot wipe an entire store or Knowledge Base by accident.
Use case: Removing entries for a specific document version, region, or department while keeping the rest of the store’s content available for retrieval.
Available on SaaS with FlowX.AI . This feature is live on managed (SaaS) deployments now. Self-hosted deployments will receive it with the next LTS release family.
When an Update Knowledge Base operation fails during a workflow run, the platform rolls back any partial changes and routes the node to its FAIL branch with a structured error payload. Nothing is left half-applied: the store returns to the state it was in before the operation started.The error payload is available on the FAIL branch (in paramValues) and in the workflow run console. It carries the following keys:
Key
Description
error
Human-readable message: “The operation [<operation>] on store [<store>] failed. Any partial changes were reversed.”
operation
The operation that failed: APPEND, REPLACE, DELETE, or DELETE_ENTRIES
storeName
The name of the store the operation targeted
errorReason
A machine-readable reason (see table below)
chunksRolledBack
The number of chunks reverted by the rollback
Use errorReason to branch your workflow’s error handling:
errorReason
Meaning
Automatically retried
size_exceeded
The content exceeded the allowed size
No
extraction_failed
Text could not be extracted from the document
Yes
chunking_failed
The content could not be chunked or embedded
Yes
timeout
The operation did not complete in time
No
unknown
The cause could not be determined
Yes
When an operation is automatically retried, the console shows a retry notification with the original error and a “Retrying [<operation>] on store [<store>].” message.
Retryable reasons (extraction_failed, chunking_failed, unknown) are retried automatically before the node fails. Non-retryable reasons (size_exceeded, timeout) route to the FAIL branch immediately.
Each Update Knowledge Base execution ingests a single document or payload, so loading a set of documents means running the node once per file. Collect the files first, then fan out.
1
Collect the files in one action
Add a Multiple File Upload component to the screen where the documents are submitted. It uploads the whole selection in a single request and writes the per-file results back as a list.
2
Fan out over the list
Add a Call Activity node in parallel multi-instance mode and set that list as its input array. One subprocess instance starts per element.The input array must be an array of objects — the per-file result list qualifies, a plain list of path strings does not, and only arrays of objects appear in the Input Array picker. Map the fields you need into the subprocess in the node’s Data Mapping section: a child that receives no mapping knows only its position in the collection, not which file it is handling.
3
Ingest one file per instance
In the subprocess, call the workflow that holds the Update Knowledge Base node and pass it the single file path from item. Use Append Content so every instance adds to the same store.
If the documents already sit in object storage, you can skip the upload step: set the node’s File Source to S3 Protocol and drive the same fan-out from your own list. Build it as an array of objects, one per file carrying its path, so the Call Activity can bind it as an input array.
A wide fan-out issues many concurrent append operations against one store. Start with a small set to confirm the mapping before scaling up, and handle per-instance errors on the node’s FAIL branch — a subprocess that ends any way other than reaching an end node never reports back to its parent.
Stores are the unit of deletion: there is no bulk operation that clears all content from a Knowledge Base at once. To empty a Knowledge Base while keeping it available for re-ingestion, delete each of its stores individually. You can automate this from a workflow with the Update Knowledge Base node using the Delete operation.
Deleting the Knowledge Base data source itself does not remove content that was already ingested. To remove a Knowledge Base completely, delete all of its stores first, then delete the data source.
Store contents stay on the workspace where they were ingested. A project version export carries the Knowledge Base data-source definition (system, endpoints, metadata keys), but not the stores’ documents or their indexed embeddings. After importing the version on another workspace or environment, the Knowledge Base appears with empty stores — upload the content again there to rebuild the index. See Export/import a project for the full export behavior.
Stores progress through different states during their lifecycle. Status badges update in real-time — you don’t need to refresh the page to see transitions.
You can define custom metadata keys on a Knowledge Base and assign values to stores. User-defined metadata enables filtering and scoping when searching chunks — for example, filtering by department, document version, or region.
When uploading or appending a store (manually or through the Update Knowledge Base workflow node), a Metadata section appears in the upload modal listing all defined keys for the Knowledge Base. Assign a value to each relevant key before uploading. The values are stored alongside the content and propagated to the vector database.
When searching chunks (in the Chunks tab or through the Context Retrieval workflow node), you can add metadata filters using the query builder. System metadata keys are always available as filter options alongside any user-defined keys.
The metadata filter UI is a full query builder with typed operators, AND/OR logic, and grouping.
System metadata keys
System metadata keys are reserved names populated automatically by the platform. They are listed in the filter picker with human-readable labels and can be combined with user-defined keys.
Key
Type
Scope
Description
source
Enum
Entry
How the entry was added: manual_upload, from_workflow, test_operation
uploaded
Date
Entry
UTC timestamp set when the entry was added to the Knowledge Base
docName
String
Entry
File name of the uploaded document
docType
Enum
Entry
Document type derived from the file extension, lower-cased (starter values include pdf, xlsx, docx, txt)
docPages
Number
Entry
Total page count, reported once document parsing completes (a re-index refreshes the value)
storeOrigin
String
Entry
Name of the store the entry was added to
chunkCounter
Number
Chunk
Sequential position of the chunk within its source document
chunkType
Enum
Chunk
Structural element the chunk was extracted from (starter values include table, header, section_header, picture, paragraph)
chunkSection
String
Chunk
Document section heading the chunk belongs to
chunkPageStart
Number
Chunk
Page number where the chunk starts in the source document
chunkEntry
String
Chunk
Document name of the entry the chunk belongs to (equivalent to docName)
If a user-defined metadata key collides with a reserved system name, it is automatically renamed to <name>_user on upgrade. Wire-level identifiers stay plain; the filter picker shows human labels (for example, Doc type for docType).
Filters are expressed as conditions made of field / operator / value. Each condition uses operators appropriate to the metadata key’s type:
Type
Available operators
String
equals, not equals, contains, starts with, ends with, matches regex, in, not in, exists, is null
Number
equals, not equals, greater than, greater or equal, less than, less or equal, between, in, exists, is null
Boolean
is true, is false, exists
Date
equals, before, after, between, exists, is null
Enum
equals, not equals, in, not in, exists
Conditions are organized in groups. Within a group, conditions can be combined with and or or. Groups themselves are also combined with and or or, which lets you express non-trivial logic such as (region = "EU" AND tier IN ["gold", "platinum"]) OR priority >= 5.Use New Filter to add a condition and New Group to add a nested group.
Use chunk search to understand what information AI agents will receive for different queries. This helps you optimize your Knowledge Base content and structure.