With the ADK, you can create knowledge bases for your agents, either by connecting to your own Elasticsearch or Milvus instance, or by uploading your documents. Use YAML, JSON or Python files to create your knowledge bases for watsonx Orchestrate.Documentation Index
Fetch the complete documentation index at: https://developer.watson-orchestrate.ibm.com/llms.txt
Use this file to discover all available pages before exploring further.
Creating built-in Milvus knowledge bases
If you don’t have an existing Milvus or Elasticsearch instance to connect to, you can create a knowledge base by simply uploading your documents. These documents will be ingested into the built-in Milvus instance, which will serve as the backend for your knowledge base. The supported documents must follow these requirements:- Each file must have a unique name.
- You can include up to 100 files in a single knowledge YAML file.
- The maximum file size for
.xlsxfiles is 1 MB. - The maximum file size for
.docx,.pdf, and.pptxfiles is 25 MB. - The maximum file size for
.csv,.html, and.txtfiles is 5 MB.
Note:
The
embeddings_model_name field is optional. If you don’t provide it, the system uses ibm/slate-125m-english-rtrvr-v2 by default.Creating external knowledge bases
External knowledge bases allow you to connect your existing Milvus or Elasticsearch databases as a knowledge source for your agent. To configure a knowledge base with your external database, use theconversational_search_tool.index_config to define the connection details for your Milvus or Elasticsearch instance.
Use the field_mapping in your index_config to to specify which fields from the search results are used for the title, body and optionally url of the search result
Milvus
When connecting to a Milvus instance: Ensure the providedembedding_model_id is the one used when ingesting the documents in your index.
Additionally, ensure you use the GRPC host and port from your Milvus instance Connections will fail if you use the HTTP host or port.
Optionally, provide the server_cert to use a custom server certificate when connecting to a Milvus instance.
ElasticSearch
For Elasticsearch, you can provide a customquery_body that will be sent as the POST body in the search request. This allows for advanced query customization.
- If provided, the
query_bodymust include the $QUERY token, which will be replaced by the user’s query at runtime. - If no custom
query_bodyis provided, a keyword search will be used.
result_filter can be set to an array of ElasticSearch filters. If using both query_body and result_filter, the query_body must include the $FILTER token, which will be replaced by the result_filter array at runtime.
For more information about ElasticSearch query body and filters customizations, see How to configure the advanced Elasticsearch settings
Custom search
With custom search, you can connect your own search server, enabling out-of-the-box alternatives to the default search solutions. To set up a custom search, configure the URL and optionally the filter and metadata for your search. For example:AstraDB
To connect to AstraDB knowledge base, in your knowledge base file, configure theapi_endpoint, data_type, and embedding_mode for your AstraDB. You can also configure optional fields like port, server_cert, keyspace, collection, table, index_column, embedding_model_id, search_mode, limit, filter, and field_mapping.
OpenSearch
To connect to an OpenSearch knowledge base, configure the required url and index. You can also set optional fields likeport, text_field, vector_field, embedding_mode, embedding_model_id, search_mode, query_body, result_filter, and field_mapping.
Configuring generation options
With the ADK, you can further fine-tune how your agent uses knowledge through theconversational_search_tool configuration in your knowledge base.
You can apply these settings to both built-in Milvus knowledge bases and external knowledge bases. Below are the configurable options available within the conversational_search_tool section:
| Parameter | Description |
|---|---|
prompt_instruction | Set this under generation. If specified, this instruction will be included in the prompt sent to the language model to guide response generation. |
max_docs_passed_to_llm | Set this under generation. If specified, define the maximum number of documents passed to the LLM. This field accepts values from 1 to 20. |
generated_response_length | Set this under generation to one of Concise, Moderate or Verbose. This setting adjusts the prompt to request responses of the specified length. If not set, the default is Moderate. |
idk_message | Set this under generation. Defines the fallback message sent to the user when the knowledge base cannot provide an answer. |
retrieval_confidence_threshold | Set this under confidence_thresholds to one of Off, Lowest, Low, High or Highest. This threshold determines the minimum confidence required that the retrieved documents answer the user’s query. If the confidence is below the threshold, the agent will return a default “I don’t know” response instead of generating a response. The default is “Low”. |
response_confidence_threshold | Set this under confidence_thresholds to one of Off, Lowest, Low, High or Highest. This threshold evaluates the confidence that both the generated response and the retrieved documents answer the user’s query. If the confidence is below the threshold, the agent will return a default “I don’t know” response. The default is Low. |
query_rewrite | If enabled, the user’s query is rewritten using the context of the conversation to support multi-turn interactions. This setting is enabled by default. |
citations_shown | Set this under citations. Use the citations_shown parameter to control how many citations appear during the interaction. Set a specific number to define the maximum citations displayed. Use 0 to hide all citations, or -1 to show every available citation. If not set, the default is -1, which means all available citations will be displayed |
Note:
In dynamic knowledge bases, only the
max_docs_passed_to_llm and citations_shown parameters apply. All other settings are ignored.Configuring knowledge base modes
By default, the knowledge base operates in dynamic mode. In this mode, the knowledge base retrieves information from the connected content store, and the agent determines how to use that information. The agent can generate a response, use the retrieved content as context to complete tasks, or supply its own query to the content store. Dynamic mode replaces the earlier classic mode, which followed a linear request-and-response flow. In classic mode, the knowledge base builds a query from the user’s input and the conversation context, retrieves matching content, and generates a response that the agent returns to the user. You can switch between dynamic and classic behavior by updating the configuration file in theconversational_search_tool schema.
| Parameter | Description |
|---|---|
query_source | Defines the query source. Accepted values:
|
generation | In the generation schema, set the enabled parameter to false to activate dynamic mode. |

