✨ What’s New in v0.15.0? ✨
Hey developers! We know you've got a lot going on, so let's cut to it. Here's what's new in v0.15.0, our latest release, packed with bug fixes, feature upgrades, and enhancements.
⚡ New Features
🧑🧑🧒🧒 Parent-child Retrieval
Leverage a two-tier hierarchical approach that effectively balances the trade-off between accurate matching and comprehensive contextual information to improve the quality and accuracy of AI-generated responses in RAG systems. Learn more
Highlights:
- The new chunk editing and preview display brings users a better reading and editing experience, making it easier for people without technical backgrounds to understand the two-layer parent-child structure.
- We allow users to improve retrieval efficiency by child chunks independently without changing parent chunks as LLM content.
- Update index mode rules: Economical cannot be downgraded once upgraded to High Quality.
- Document batch operations in Knowledge Base support batch enabling, disabling, deletion, and archiving document functions.
✨ Improvements
- Multi-Version Workflows: Manage multiple workflow versions more effectively with contributions from @warren830 (#11990).
- UI/UX adjustments for accessibility, such as replacing
div
withbutton
to enhance user interaction and navigation (@TinsFox, #12046). - Database and memory optimizations that not only improve performance but they'll likely save you headaches when loading and retrieving data (@laipz8200, #12071).
- Enhanced support for streaming modes, error feedback, and token handling to improve your coding life significantly (various contributors).
🛠️ Fixes
- Numerous typo fixes, improved error handling, and bug resolutions across the workflow, such as
tool can not run
,HTTP method case sensitivity
by @yihong0618 (#12054, #12401), and cleaning up exceptions by @acelyc111 (#12246). Your workflow should be a lot smoother now. - Improved error management in several components. This includes better handling of invalid URLs, file uploads, JSON parsing, and missing IDs, thanks to contributions from @laipz8200 (various PRs).
- Default value fixes to configurations like Google Storage and better formatting of URLs to keep Docker Compose happy, by @kazukitakamatsu and @cemremengu (#12188, #12072).
⚙️ Refactoring & Other Chores
- Code refactoring to enhance readability and maintainability like using
tiktoken
for token calculations (@laipz8200, #12416). - Cleanup of unused imports for a leaner codebase. Thanks to @bowenliang123 for lint corrections (#11922).
- A bundle of localization improvements for international users, meticulously handled by the community, including corrections to error messages and localizations (@HanqingZ, #12292).
⚡ Misc
- Added cheaper and long context models for Qwen2.5-72B-Instruct, and a variety of speech models from siliconflow, contributed by @senseb (#12415, #12425).
- Squashing bugs related to document parsing that maintained your data format integrity, addressed by @Hisir0909 (#12112).
Get ready to dive into these enhancements and see how they can supercharge your workflows and development experience. Happy coding!
Upgrade Guide
Docker compose deployments
Warning
The files in the docker-legacy directory will soon stop being maintained and will be removed from the repository. If you are still using them, please switch to the new version as soon as possible.
-
Back up your customized docker-compose YAML file (optional)
cd docker cp docker-compose.yaml docker-compose.yaml.$(date +%s).bak
-
Get the latest code from the main branch
git checkout main git pull origin main
-
Stop the service,Command, please execute in the docker directory
docker compose down
-
Back up data
tar -cvf volumes-$(date +%s).tgz volumes
-
Upgrade services
docker compose up -d
Source Code deployments
-
Stop API server, Worker and Web frontend Server.
-
Get the latest code from the release branch:
git checkout 0.15.0
-
Update Python dependencies:
cd api poetry install
-
Then, let's run the migration script:
poetry run flask db upgrade
-
Finally, run API server, Worker and Web frontend Server again.
What's Changed
- fix: add FileNotFoundError to ignored errors in Sentry integration by @laipz8200 in #12023
- fix: Fix session typo in workflow_trace method by @You-keitou in #12031
- fix: fix typo by @yihong0618 in #12034
- fix: Replace generic exceptions with specific error classes in task p… by @laipz8200 in #12036
- fix/array file cannot use in iteration node by @laipz8200 in #12035
- fix: modal bg color by @YIXIAO0 in #12042
- feat: mypy for all type check by @yihong0618 in #10921
- refactor: replace div with button for better accessibility by @TinsFox in #12046
- fix: --name option for the create-tenant command does not take effect by @euxx in #11993
- fix: tool can not run by @yihong0618 in #12054
- fix: i18n error by @yihong0618 in #12052
- fix: can not find model bug by @yihong0618 in #12051
- fix: like failed close #12057 by @yihong0618 in #12058
- fix: update S3 and Azure configuration typos in .env.example and corr… by @fdb02983rhy in #12055
- fix: o1 model error, use max_completion_tokens instead of max_tokens. by @jiangbo721 in #12037
- fix: zoom in/out click by @marvin-season in #12056
- refactor: optimize database usage by @laipz8200 in #12071
- fix: unquote urls in docker-compose.yaml by @cemremengu in #12072
- fix(app_generator): improve error handling for closed file I/O operat… by @laipz8200 in #12073
- Feat/parent child retrieval by @WTW0313 in #12086
- feat(message_feedback): add content argument to feedback creation by @laipz8200 in #12077
- fix(tool): validate return type from _invoke method to ensure ToolInv… by @laipz8200 in #12079
- fix(http_request): add error handling for invalid URLs by @laipz8200 in #12082
- fix(file_factory): validate upload_file_id format as UUID by @laipz8200 in #12084
- fix(audio_service): validate message_id format using UUID by @laipz8200 in #12087
- fix(billing_service): change retry condition to handle specific reque… by @laipz8200 in #12091
- Feat/support parent child chunk by @JohnJyong in #12092
- Revert "Feat/parent child retrieval" by @laipz8200 in #12095
- fix: add type ignore comments for shared_task imports and clean up re… by @laipz8200 in #12099
- fix(workflow_service): assign UUID to workflow_node_execution id and update optional fields in WorkflowRun and WorkflowNodeExecution models by @laipz8200 in #12096
- fix: issue #12078 by redirect the right by @yihong0618 in #12088
- py lint by @JohnJyong in #12102
- fix: issue #12068 by test is answer in the ids by @yihong0618 in #12105
- feat: parent child retrieval by @WTW0313 in #12106
- fix unstructured setting by @JohnJyong in #12116
- fix: issue #11868 bring old logic back by @yihong0618 in #12100
- fix: typo in clean messages periodical task's logging by @bowenliang123 in #12090
- send knowledge base auto disable notification by @JohnJyong in #12126
- fix: add properties to retrieve created by account and end user in Wo… by @laipz8200 in #12129
- fix: update MessageService.create_feedback to use keyword arguments f… by @laipz8200 in #12134
- fix: validate imported_version type in AppDslService by @laipz8200 in #12135
- fix: enhance file upload error handling and update base error class by @laipz8200 in #12132
- fix: 12050 by @XiaoBa-Yu in #12109
- chore: translate i18n files by @github-actions in #12118
- fix: improve merge branch node ID checks in graph engine by @laipz8200 in #12128
- fix: import jieba.analyse by @laipz8200 in #12133
- Fix: The topk parameter doesn't work in sagemaker rerank tool by @ybalbert001 in #12150
- fix: handle case where member is not found in role update API by @laipz8200 in #12156
- disable all chunks status when disable document by @JohnJyong in #12149
- owner and admin have all permission of knowledge base by @JohnJyong in #12157
- Fix: avatar dropdown keyboard navigation by @douxc in #12155
- fix: workflow page throw warning: Attempts to access this ref will fail by @douxc in #12166
- fix: type is wrong issue by @yihong0618 in #12165
- fix: comfyui output image's format by @hjlarry in #12121
- chore: add cursor pointer for option card by @AkaraChen in #12119
- feat: support Ernie-lite-pro-128k by @bigfish49 in #12161
- fix: workflow_as_tool output files raise error by @hjlarry in #12061
- Modify translation for error branch and update for the parent-child f… by @HanqingZ in #12127
- [feat] Support Multi-Version Workflows by @warren830 in #11990
- [fix] modify en-US by @warren830 in #12169
- chore(lint): correct allowed-unused-imports settings for cleanup unused imports in tests by @bowenliang123 in #11922
- fix: test run custom tool raise error by @hjlarry in #12178
- fix: #12125 by @leslie2046 in #12184
- fix: rendering errors occur when displaying hit test results in full text search by @fujita-h in #12191
- fix: improve error handling in NotionExtractor data fetching by @laipz8200 in #12182
- fix: default value of google storage sa to empty by @kazukitakamatsu in #12188
- fix: update api libldap package version in Dockerfile for security im… by @BenjaminX in #12195
- feat: account delete by @GareArc in #11829
- Feat: support account deletion by @douxc in #10008
- [Fix] Fix sagemaker_chinese_toxicity_detector and bedrock_retrieve by @warren830 in #12227
- feat: support opening new tab in markdown button by @bowenliang123 in #12213
- translate comments by @warren830 in #12234
- fix: apply gevent threading patch early and ensure unique workflow node execution IDs by @laipz8200 in #12196
- fix(env): docker compose variable interpolation issue for COMPOSE_PRO… by @hanktrizz in #12093
- fix: enhance ToolEngineInvokeError to include meta information by @laipz8200 in #12238
- feat: integrate psycogreen for gevent compatibility in PostgreSQL by @laipz8200 in #12253
- feat: implement asynchronous token counting in GPT2Tokenizer by @laipz8200 in #12239
- fix: ensure workflow_run_id is always set and improve handling in Wor… by @laipz8200 in #12264
- fix: improve JSON parsing error handling in Executor class by @laipz8200 in #12265
- fix: improve error handling in NotionOAuth for block parent page ID r… by @laipz8200 in #12268
- fix: draft run single node can't get env variable by @hjlarry in #12266
- [Fix] modify sagemaker llm by @warren830 in #12274
- fix(models): use bigint on workflow_runs.total_tokens by @laipz8200 in #12279
- fix: close #12215 for yi special case by @yihong0618 in #12222
- feat: Add response format support for openai compat models by @bakjos in #12240
- fix:The chart of average interaction counts per conversation show not… by @leslie2046 in #12199
- chore: translate i18n files by @github-actions in #12208
- fix: DocumentAddByFileApi miss data_source_type field but there is a mandatory value check by @lyfuci in #12273
- refactor: simplify some exception catch code by @acelyc111 in #12246
- fix: disable gevent in debug mode for better compatibility with JetBrains Python debugger by @laipz8200 in #12299
- chore(deps): bump jinja2 from 3.1.4 to 3.1.5 in /api by @dependabot in #12300
- fix: Fix parent child retrieval issues by @WTW0313 in #12206
- chore(deps): update yarl version from 1.9.4 to 1.18.3 by @laipz8200 in #12302
- Modify jp translation by @HanqingZ in #12292
- chore(deps): bump aiohttp from 3.10.5 to 3.10.11 in /api by @dependabot in #12303
- Fix code scanning alert no. 111: Incomplete URL substring sanitization by @laipz8200 in #12305
- fix: improve content decoding in AppDslService by @laipz8200 in #12304
- fix: add full doc mode preview length limit by @WTW0313 in #12310
- fix: utcfromtimestamp is Deprecated change to new api by @yihong0618 in #12120
- fix(app.py): if condition by @laipz8200 in #12314
- refactor: replace gevent threadpool with ProcessPoolExecutor in GPT2Tokenizer by @laipz8200 in #12316
- feat:Add support for stop parameter in hunyuan model #12313 by @xander-art in #12315
- feat: Add response format support to GLM-4 by @dysodeng in #12252
- doc: Added explanation of chunk_overlap to knowledge API by @yagiyuki in #12247
- chore: change app card layout follow by #10847 by @ZuzooVn in #12317
- feat: Add filter to show only apps created by the user by @miya in #11968
- add child chunk preview number limit by @JohnJyong in #12309
- fix: #12143 support streaming mode content start with "data:" by @jifei in #12171
- chore: fix typo in zh-Hant localization by @Timmy-web in #12329
- refactor: streamline initialization of application_generate_entity and task_state in task pipeline classes by @laipz8200 in #12326
- fix: Encode Chinese characters with Unicode before querying to match the Unicode encoded Chinese characters in the db by @xhdd123321 in #12337
- fix: Update the API call address for the text_embedding model by @fchange in #12342
- fix: empty delete bug by @huangzhuo1949 in #12339
- fix: fix issue with
chat-input-area
clearing during Responding state. by @Woo0ood in #12352 - Bugfix/style and i18n fixes by @Woo0ood in #12350
- Fix the issue where
TextGeneration
component does not correctly clear input data. by @Woo0ood in #12351 - fix: resolve issue with the opening statement generated by the
AutomaticRes
component failing to sync between states. by @Woo0ood in #12349 - feat: support configuration of refresh token expiration by environment variable by @euxx in #12335
- chore: chat app textarea auto focus by @xuzuodong in #12366
- feat: support config top max value by env by @iamjoel in #12375
- sandbox doesn't provide auto disable log by @JohnJyong in #12388
- [Fix] revert sagemaker llm to support model hub by @warren830 in #12378
- fix: enhance chunk list management with new invalidation keys and imp… by @WTW0313 in #12396
- fix: http method can be upper case and lower case close #11877 by @yihong0618 in #12401
- mark deprecated models in siliconflow #12399 by @senseb in #12405
- Support TTS and Speech2Text for Model Provider GPUStack by @alexcodelf in #12381
- Fixes #12414: Add cheaper model and long context model for Qwen2.5-72B-Instruct from siliconflow by @senseb in #12415
- fix: [PromptEditorHeightResizeWrap] Bug #12410 by @cnwhy in #12406
- refactor: use tiktoken for token calculation by @laipz8200 in #12416
- chore(docker/.env.example): Add TOP_K_MAX_VALUE to the
.env.example
… by @laipz8200 in #12422 - add fish-speech-1.5 from siliconflow by @senseb in #12425
- fix:deepseek tool call not working correctly by @leslie2046 in #12437
- Fix newline characters in tables during document parsing by @Hisir0909 in #12112
- refactor: enhance API token validation with session locking and last used timestamp update by @laipz8200 in #12426
- chore: bump version to 0.15.0 by @laipz8200 in #12297
New Contributors
- @You-keitou made their first contribution in #12031
- @cemremengu made their first contribution in #12072
- @XiaoBa-Yu made their first contribution in #12109
- @bigfish49 made their first contribution in #12161
- @hanktrizz made their first contribution in #12093
- @lyfuci made their first contribution in #12273
- @dysodeng made their first contribution in #12252
- @jifei made their first contribution in #12171
- @Timmy-web made their first contribution in #12329
- @huangzhuo1949 made their first contribution in #12339
- @Woo0ood made their first contribution in #12352
- @alexcodelf made their first contribution in #12381
- @cnwhy made their first contribution in #12406
Full Changelog: 0.14.2...0.15.0