Skip to content

Knowledge and Search

The Semantic Query Engine makes your documents searchable by meaning, not only by keywords. Agents use it to answer questions based on your manuals, procedures or tickets, and cite the sources they used.

This section is for developers who load documents into the service. All requests need a token for the Semantic Query Engine and the headers described in Request basics. Paths are relative to ${SQE_BASE_URL}.

The complete, interactive API reference of the Semantic Query Engine is available at ${SQE_BASE_URL}/docs.

ConceptWhat it is
DatasourceA named collection of documents, for example all product manuals. Access is controlled per datasource.
DocumentA text you load, together with its metadata.
NodeA searchable piece of a document. Long documents are split into several nodes.
MetadataKey-value attributes of a document, such as device model or document type. Used for filtering. Some keys, such as title and url, are used to show sources. See Source metadata.
flowchart LR
    S[Your source system] -->|documents| DS[Datasource]
    DS -->|split and index| N[Nodes]
    A[Agent] -->|search| N
    App[Your application] -->|search| N
PUT /api/v1/data/datasources/ProductManuals
Content-Type: application/json
{
"name": "ProductManuals",
"description": "Product manuals and troubleshooting documentation",
"do_not_split": false,
"access_control": { "execute_roles": ["support-team"] }
}
FieldDescription
nameName of the datasource. Letters, digits and dashes, up to 28 characters.
descriptionWhat the datasource contains
do_not_splittrue stores each document as one node without splitting. See Ingestion best practices.
access_control.execute_rolesRoles that may search the datasource
custom_transformsOptional transformations applied before indexing
NameWhat it does
json_to_yamlConverts JSON documents to YAML before indexing
json_to_markdownConverts JSON documents to Markdown before indexing
{ "custom_transforms": [{ "name": "json_to_markdown" }] }

Both remove empty values by default. Set "params": {"clean_empty": false} to keep them. Documents that are not valid JSON are indexed unchanged.

OperationRequest
List datasourcesGET /api/v1/data/datasources
Get one datasourceGET /api/v1/data/datasources/{name}
Create or updatePUT /api/v1/data/datasources/{name}
Delete a datasource with all its documentsDELETE /api/v1/data/datasources/{name}