Endpoint
Header
This API is used to connect to a knowledge base that is independent of the Dify and maintained by developers. For more details, please refer to Connecting to an External Knowledge Base. You can useAPI-Key in the Authorization HTTP Header to verify permissions. The authentication logic is defined by you in the retrieval API, as shown below:
Request Body Elements
The request accepts the following data in JSON format.| Property | Required | Type | Description | Example value |
|---|---|---|---|---|
| knowledge_id | TRUE | string | Your knowledge’s unique ID | AAA-BBB-CCC |
| query | TRUE | string | User’s query | What is Dify? |
| retrieval_setting | TRUE | object | Knowledge’s retrieval parameters | See below |
| metadata_condition | FALSE | Object | Original array filtering | See below |
retrieval_setting property is an object containing the following keys:
| Property | Required | Type | Description | Example value |
|---|---|---|---|---|
| top_k | TRUE | int | Maximum number of retrieved results | 5 |
| score_threshold | TRUE | float | The score limit of relevance of the result to the query, scope: 0~1 | 0.5 |
metadata_condition property is an object containing the following keys:
| Attribute | Required | Type | Description | Example Value |
|---|---|---|---|---|
| logical_operator | No | String | Logical operator, values can be and or or, default is and | and |
| conditions | Yes | Array (Object) | List of conditions | See below |
conditions array contains the following keys:
| Attribute | Required | Type | Description | Example Value |
|---|---|---|---|---|
| name | Yes | Array (String) | Names of the metadata to filter | ["category", "tag"] |
| comparison_operator | Yes | String | Comparison operator | contains |
| value | No | String | Comparison value, can be omitted when the operator is empty, not empty, null, or not null | "AI" |
comparison_operator operators:
contains: Contains a certain valuenot contains: Does not contain a certain valuestart with: Starts with a certain valueend with: Ends with a certain valueis: Equals a certain valueis not: Does not equal a certain valueempty: Is emptynot empty: Is not empty=: Equals≠: Not equal>: Greater than<: Less than≥: Greater than or equal to≤: Less than or equal tobefore: Before a certain dateafter: After a certain date
Request Syntax
Response Elements
If the action is successful, the service sends back an HTTP 200 response. The following data is returned in JSON format by the service.| Property | Required | Type | Description | Example value |
|---|---|---|---|---|
| records | TRUE | List[Object] | A list of records from querying the knowledge base. | See below |
records property is a list object containing the following keys:
| Property | Required | Type | Description | Example value |
|---|---|---|---|---|
| content | TRUE | string | Contains a chunk of text from a data source in the knowledge base. | Dify:The Innovation Engine for GenAI Applications |
| score | TRUE | float | The score of relevance of the result to the query, scope: 0~1 | 0.5 |
| title | TRUE | string | Document title | Dify Introduction |
| metadata | FALSE | json | Contains metadata attributes and their values for the document in the data source. | See example |
Response Syntax
Errors
If the action fails, the service sends back the following error information in JSON format:| Property | Required | Type | Description | Example value |
|---|---|---|---|---|
| error_code | TRUE | int | Error code | 1001 |
| error_msg | TRUE | string | The description of API exception | Invalid Authorization header format. Expected ‘Bearer <api-key>’ format. |
error_code property has the following types:
| Code | Description |
|---|---|
| 1001 | Invalid Authorization header format. |
| 1002 | Authorization failed |
| 2001 | The knowledge does not exist |
HTTP Status Codes
AccessDeniedException The request is denied because of missing access permissions. Check your permissions and retry your request. HTTP Status Code: 403 InternalServerException An internal server error occurred. Retry your request. HTTP Status Code: 500Development Example
You can learn how to develop external knowledge base plugins through the following video tutorial using LlamaCloud as an example: For more information about how it works, please refer to the plugin’s GitHub repository.Edit this page
Help improve our documentation by contributing directly
Report an issue
Found an error or have suggestions? Let us know