Skip to main content

1. What it is

Knowledge is shared, tenant-wide context that all users and agents in a tenant can recall - product documents, internal wikis, policy PDFs, Slack threads, Notion pages, CSVs, emails, and any other source content. Knowledge is the counterpart to Memories. Both are retrievable through Recall, but they live in separate stores and are retrieved through separate endpoints:
Knowledge and Memories are separate stores. full_recall only searches Knowledge. recall_preferences only searches Memories. For personalized answers grounded in shared documents, call both in parallel and merge the results. See How to Use API Results.

2. What it does

When you upload Knowledge, HydraDB:
  1. Parses the source (PDF, DOCX, Markdown, CSV, plain text, or app-source JSON).
  2. Chunks the content into semantically coherent segments.
  3. Runs entity and relationship extraction - building graph nodes and edges.
  4. Embeds chunks into the dense and sparse vector stores.
  5. Makes the content searchable through /recall/full_recall.
This pipeline runs asynchronously. Content is not searchable until indexing_status is completed. Poll /ingestion/verify_processing with the returned source_id.

3. When to use it

Use Knowledge ingestion when the content is:
  • Shared across all users in your tenant (product docs, policy PDFs, runbooks, wikis)
  • Static or infrequently updated (versioned by replacing the source)
  • Document-structured rather than conversational (files, threads, pages)
Use Memories instead for:
  • User preferences and behavioral signals
  • Per-user conversation history
  • Content that should personalize a single user’s experience

4. Two ingestion paths

The POST /ingestion/upload_knowledge endpoint accepts two content formats in one request. Send either or both.

Path A - Files

Binary files HydraDB should parse and chunk: PDF, DOCX, Markdown, CSV, TXT.

Path B - App sources

Pre-parsed records from connected apps. Put the app item’s searchable text in fields so app-aware recall can use IDs, actors, threads, and relations.
Though app_knowledge is an available option. We recommend storing the content as a markdown file and using path A i.e. file upload using upload_knowledge for better results.
Response (both paths):

5. Verifying processing

Status values: queuedprocessinggraph_creationcompleted (or error). Poll every few seconds. Most documents complete in 1–5 minutes.

6. Key parameters

File metadata (file_metadata array items)

App source model (app_knowledge array items)

Request-level fields


7. Forceful relations

Forceful relations let you explicitly link Knowledge sources to each other at ingestion time. When a query matches a source that has forceful relations declared, HydraDB pulls the linked sources into additional_context alongside the primary results. This is separate from the entity and relationship graph HydraDB builds automatically during ingestion. Graph extraction is derived from content; forceful relations are declared by you. Set the relations field on any item in file_metadata or app_knowledge:
At recall, linked sources are returned in the additional_context field. Set search_forceful_relations: true (the default) on the request to include them.
Knowledge sources only. Forceful relations work within the same store. Pointing a Knowledge source at a Memory source ID (or vice versa) will silently return nothing at recall time.
thinking mode only. Forceful-relation context is fetched only when mode: "thinking" is set on the recall request. In fast mode, search_forceful_relations is ignored even if set to true.

8. Metadata on knowledge

Attach metadata at ingestion to enable deterministic filtering at recall time:
Then at recall time:
metadata keys must be defined in the tenant metadata schema with enable_match: true to be filterable via top-level keys. additional_metadata is also filterable — nest it under the additional_metadata key in metadata_filters (canonical, matches the ingestion field name). document_metadata is also accepted as a legacy alias:
Tenant-level filters are pre-applied in the vector store; nested additional_metadata filters are post-retrieval, so the engine over-fetches (~3x) to compensate. See Essentials → Metadata for schema design and filtering patterns.

9. Common mistakes