mirror of
https://github.com/infiniflow/ragflow.git
synced 2025-12-08 20:42:30 +08:00
Feat: make document parsing and embedding batch sizes configurable via environment variables (#8266)
### Description This PR introduces two new environment variables, `DOC_BULK_SIZE` and `EMBEDDING_BATCH_SIZE`, to allow flexible tuning of batch sizes for document parsing and embedding vectorization in RAGFlow. By making these parameters configurable, users can optimize performance and resource usage according to their hardware capabilities and workload requirements. ### What problem does this PR solve? Previously, the batch sizes for document parsing and embedding were hardcoded, limiting the ability to adjust throughput and memory consumption. This PR enables users to set these values via environment variables (in `.env`, Helm chart, or directly in the deployment environment), improving flexibility and scalability for both small and large deployments. - `DOC_BULK_SIZE`: Controls how many document chunks are processed in a single batch during document parsing (default: 4). - `EMBEDDING_BATCH_SIZE`: Controls how many text chunks are processed in a single batch during embedding vectorization (default: 16). This change updates the codebase, documentation, and configuration files to reflect the new options. ### Type of change - [ ] Bug Fix (non-breaking change which fixes an issue) - [x] New Feature (non-breaking change which adds functionality) - [x] Documentation Update - [ ] Refactoring - [x] Performance Improvement - [ ] Other (please describe): ### Additional context - Updated `.env`, `helm/values.yaml`, and documentation to describe the new variables. - Modified relevant code paths to use the environment variables instead of hardcoded values. - Users can now tune these parameters to achieve better throughput or reduce memory usage as needed. Before: Default value: <img width="643" alt="image" src="https://github.com/user-attachments/assets/086e1173-18f3-419d-a0f5-68394f63866a" /> After: 10x: <img width="777" alt="image" src="https://github.com/user-attachments/assets/5722bbc0-0bcb-4536-b928-077031e550f1" />
This commit is contained in:
@ -21,7 +21,7 @@ Click the component to display its **Configuration** window. Here, you can set a
|
||||
|
||||
### ID
|
||||
|
||||
The ID is the unique identifier for the component within the workflow. Unlike the IDs of other components, the ID of the **Begin** component *cannot* be changed.
|
||||
The ID is the unique identifier for the component within the workflow. Unlike the IDs of other components, the ID of the **Begin** component _cannot_ be changed.
|
||||
|
||||
### Opening greeting
|
||||
|
||||
@ -31,30 +31,36 @@ An opening greeting is the agent's first message to the user. It can be a welcom
|
||||
|
||||
You can set global variables within the **Begin** component, which can be either required or optional. Once established, users will need to provide values for these variables when interacting or chatting with the agent. Click **+ Add variable** to add a global variable, each with the following attributes:
|
||||
|
||||
- **Key**: *Required*
|
||||
- **Key**: _Required_
|
||||
The unique variable name.
|
||||
- **Name**: *Required*
|
||||
- **Name**: _Required_
|
||||
A descriptive name providing additional details about the variable.
|
||||
For example, if **Key** is set to `lang`, you can set its **Name** to `Target language`.
|
||||
- **Type**: *Required*
|
||||
The type of the variable:
|
||||
- **Type**: _Required_
|
||||
The type of the variable:
|
||||
- **line**: Accepts a single line of text without line breaks.
|
||||
- **paragraph**: Accepts multiple lines of text, including line breaks.
|
||||
- **options**: Requires the user to select a value for this variable from a dropdown menu. And you are required to set *at least* one option for the dropdown menu.
|
||||
- **options**: Requires the user to select a value for this variable from a dropdown menu. And you are required to set _at least_ one option for the dropdown menu.
|
||||
- **file**: Requires the user to upload one or multiple files.
|
||||
- **integer**: Accepts an integer as input.
|
||||
- **boolean**: Requires the user to toggle between on and off.
|
||||
- **Optional**: A toggle indicating whether the variable is optional.
|
||||
- **Optional**: A toggle indicating whether the variable is optional.
|
||||
|
||||
:::tip NOTE
|
||||
To pass in parameters from a client, call:
|
||||
|
||||
- HTTP method [Converse with agent](../../../references/http_api_reference.md#converse-with-agent), or
|
||||
- Python method [Converse with agent](../../../references/python_api_reference.md#converse-with-agent).
|
||||
:::
|
||||
:::
|
||||
|
||||
:::danger IMPORTANT
|
||||
|
||||
- If you set the key type as **file**, ensure the token count of the uploaded file does not exceed your model provider's maximum token limit; otherwise, the plain text in your file will be truncated and incomplete.
|
||||
- If your agent's **Begin** component takes a variable, you *cannot* embed it into a webpage.
|
||||
- If your agent's **Begin** component takes a variable, you _cannot_ embed it into a webpage.
|
||||
:::
|
||||
|
||||
:::note
|
||||
You can tune document parsing and embedding efficiency by setting the environment variables `DOC_BULK_SIZE` and `EMBEDDING_BATCH_SIZE`.
|
||||
:::
|
||||
|
||||
## Examples
|
||||
@ -71,7 +77,7 @@ As mentioned earlier, the **Begin** component is indispensable for an agent. Sti
|
||||
|
||||
### Is the uploaded file in a knowledge base?
|
||||
|
||||
No. Files uploaded to an agent as input are not stored in a knowledge base and hence will not be processed using RAGFlow's built-in OCR, DLR or TSR models, or chunked using RAGFlow's built-in chunking methods.
|
||||
No. Files uploaded to an agent as input are not stored in a knowledge base and hence will not be processed using RAGFlow's built-in OCR, DLR or TSR models, or chunked using RAGFlow's built-in chunking methods.
|
||||
|
||||
### How to upload a webpage or file from a URL?
|
||||
|
||||
@ -81,8 +87,8 @@ If you set the type of a variable as **file**, your users will be able to upload
|
||||
|
||||
### File size limit for an uploaded file
|
||||
|
||||
There is no *specific* file size limit for a file uploaded to an agent. However, note that model providers typically have a default or explicit maximum token setting, which can range from 8196 to 128k: The plain text part of the uploaded file will be passed in as the key value, but if the file's token count exceeds this limit, the string will be truncated and incomplete.
|
||||
There is no _specific_ file size limit for a file uploaded to an agent. However, note that model providers typically have a default or explicit maximum token setting, which can range from 8196 to 128k: The plain text part of the uploaded file will be passed in as the key value, but if the file's token count exceeds this limit, the string will be truncated and incomplete.
|
||||
|
||||
:::tip NOTE
|
||||
The variables `MAX_CONTENT_LENGTH` in `/docker/.env` and `client_max_body_size` in `/docker/nginx/nginx.conf` set the file size limit for each upload to a knowledge base or **File Management**. These settings DO NOT apply in this scenario.
|
||||
:::
|
||||
:::
|
||||
|
||||
Reference in New Issue
Block a user