🚀 New Features: Summary Index
We are introducing Summary Index, a powerful enhancement to our knowledge base retrieval system that significantly improves search accuracy by generating AI-powered summaries for document chunks.
Background
Traditional vector search relies on raw chunk embeddings, which can miss semantic nuances and context when matching user queries. This is especially challenging for long documents or complex content where key information might be scattered across multiple chunks. Summary Index addresses this by creating concise, semantically-rich summaries for each document chunk, which are then vectorized and used as an additional retrieval layer.
Key Capabilities
- AI-Powered Summarization: Automatically generates concise summaries for document chunks using configurable LLM models, capturing essential semantic information in a compact format.
- Multimodal Support: When using vision-capable LLMs (e.g., GPT-4V, Claude-3), the system can generate summaries that incorporate both text and images from document chunks, providing richer context understanding.
- Enhanced Retrieval Accuracy: Summary vectors serve as an additional retrieval layer, improving the precision of knowledge base searches by matching queries against both original content and AI-generated summaries.
- Flexible Configuration: Supports default summary prompts, allowing you to tailor the summarization style to match your domain-specific requirements.
- Asynchronous Processing: Summary generation runs asynchronously, ensuring that document indexing remains fast and non-blocking.
- Manual Summary Editing: Allows you to manually edit and refine AI-generated summaries to better align with the original chunk content, ensuring summaries accurately reflect domain-specific terminology and context.
- Index Structure Compatibility: Works with both general chunking and parent-child chunking modes, with intelligent handling of hierarchical document relationships.
- High-Quality Index Integration: Available exclusively for datasets using the "high_quality" indexing technique, ensuring optimal performance for production knowledge bases.
Other Improvements
- Agent App Multimodal Support: Agent App now natively supports multimodal inputs (images/files).
- Qdrant Full-Text Search: Implemented full-text search with multi-keyword support for Qdrant vector database.
- Workflow Enhancements:
- Added support for registering and reading context in workflows.
- Added OpenTelemetry support for single runs.
- Plugin System: Added an option to delete or keep API keys when uninstalling a plugin.
- Template Preview Before Creating: Added a detailed app template preview with workflow graphs or app configs by app type.
🐞 Bug Fixes & Security Updates
- Security:
- Logstore security fix: Addressed potential SQL injection, serialization issues, and optimized initialization.
- Fixed an SSRF vulnerability in WordExtractor URL download.
- Upgraded
tanstack devtoolsto fix seroval RCE vulnerability. - Security updates for
pdfminer.six,authlib,werkzeug,aiohttp, andpycryptodome.
- Workflow & Graph Engine:
- Fixed issues where single iteration or loop nodes could not run.
- Fixed
NextStepcrash when the target node is missing. - Fixed
ToolInvokeMessageUnion type parsing issue.
- API & Backend:
- Fixed CORS resource pattern for
/console/apiroutes. - Fixed IRIS hybrid search returning zero results.
- Fixed billing account deletion issues.
- Fixed
vdb-migratecommand for parent-child segment migration.
- Fixed CORS resource pattern for
- Frontend:
- Fixed "Expand all chunks" button not working.
- Fixed vertical scrolling support for floating elements.
- Fixed validation error when uploading images with None URL values.
⚙️ Configuration Changes
SANDBOX_EXPIRED_RECORDS_CLEAN_TASK_LOCK_TTL: Sets the lock TTL for the sandbox expired records cleanup task (Default:90000).SMTP_LOCAL_HOSTNAME: Optional override for the local hostname used during SMTP HELO/EHLO.PLUGIN_MODEL_SCHEMA_CACHE_TTL: Sets the cache TTL for plugin model schemas (Default:3600).ENABLE_TRIAL_APP: Enables trial app (Default:false).ENABLE_EXPLORE_BANNER: Enables explore banner (Default:false).
What's Changed
- fix: fix instance is not bind to session by @fatelei in #30913
- feat: inject traceparent in enterprise api by @wylswz in #30895
- refactor: init orpc contract by @hyoban in #30885
- refactor(variables): clarify base vs union type naming by @laipz8200 in #30634
- feat: change param to pydantic model by @fatelei in #30870
- chore(deps): bump filelock from 3.20.0 to 3.20.3 in /api by @dependabot[bot] in #30939
- feat: Add option to delete or keep API keys when uninstalling plugin by @UMDKyle in #28201
- chore(deps): bump azure-core from 1.36.0 to 1.38.0 in /api by @dependabot[bot] in #30941
- fix: Correction to the full name of Volc TOS by @jneless in #30741
- fix(logstore): prevent SQL injection, fix serialization issues, and optimize initialization by @adongfan in #30697
- fix: use Factory to create repository in Aliyun Trace by @hieheihei in #30899
- fix: fix LOOP_CHILDREN_Z_INDEX by @fatelei in #30719
- refactor(web): MCP tool availability to context-based version gating by @lyzno1 in #30955
- refactor(http_request_node): apply DI for http request node by @laipz8200 in #30509
- fix(web): preserve HTTP method in ORPC fetchCompat mode by @lyzno1 in #30971
- chore(web): disable Serwist dev logs by @lyzno1 in #30980
- chore(web): remove unused demo service component by @lyzno1 in #30979
- fix(deps): security updates for pdfminer.six, authlib, werkzeug, aiohttp and others by @kenwoodjw in #30976
- fix: redirect after login by @hyoban in #30985
- feat: allow pass hostname in docker env by @fatelei in #30975
- fix: fix Cannot destructure property 'name' of 'value' as it is undef… by @fatelei in #30991
- fix: correct API Extension documentation link by @Milad93R in #30962
- feat: add .agent/skills symlink and orpc-contract-first skill by @lyzno1 in #30968
- fix: increase name length limit in ExternalDatasetCreatePayload by @BeautyyuYanli in #31000
- fix: fix missing id and message_id by @fatelei in #31008
- fix: Use raw SQL UPDATE to set read status without triggering updated… by @fatelei in #31015
- refactor: port TidbAuthBinding( by @asukaminato0721 in #31006
- fix: fix plugin edit endpoint app disappear by @fatelei in #30951
- refactor: delete_endpoint should be idempotent by @fatelei in #30954
- refactor: port TenantCreditPool by @asukaminato0721 in #30926
- refactor: port AppAnnotationHitHistory by @asukaminato0721 in #30922
- feat: implement document creation pipeline with multi-step wizard and datasource management by @CodingOnStar in #30843
- feat(web): refactor documents component structure and enhance functionality by @CodingOnStar in #30854
- build: require node 24.13.0 by @hyoban in #30945
- refactor(contract): restructure console contracts with nested billing module by @lyzno1 in #30999
- fix: validation error when uploading images with None URL values by @josephadamsdev in #31012
- test: add unit tests for PluginPage and related components by @CodingOnStar in #30908
- feat: single run add opentelemetry by @fatelei in #31020
- chore: bump version to 1.11.4 by @laipz8200 in #30961
- refactor: enhance clean messages task by @hj24 in #29638
- fix: message clean service ut by @hj24 in #31038
- refactor: remove manual set query logic by @hyoban in #31039
- feat: credential sync fix for enterprise edition by @GareArc in #30626
- fix: fix log updated_at is refreshed by @fatelei in #31045
- fix: remove hardcoded 48-character limit from text inputs by @majiayu000 in #30156
- ci: eslint annotation by @hyoban in #31056
- ci: disable limit annotation by @hyoban in #31072
- refactor: always preserve marketplace search state in URL by @byteforge38 in #31069
- fix: resolve 'Expand all chunks' button not working by @GlobalStar117 in #31074
- chore: lint for state hooks by @hyoban in #31088
- fix(web): use portal for variable picker in code editor (Fixes #31063) by @Pavior0 in #31066
- fix(web): replace Response.json with legacy Response constructor for pre-Chrome 105 compatibility(#31091) by @XiaoBa-Yu in #31095
- chore: Update coding agent workflow for backend by @BeautyyuYanli in #31093
- fix(search-input): retain focus after clearing input by @lyzno1 in #31107
- fix: call
get_text_content()instead of casting tostrby @Stream29 in #31121 - refactor: migrate tag list API query parameters to Pydantic by @fghpdf in #31097
- chore: Update outdated GitHub Actions versions by @pgoslatara in #31114
- chore: improve accessibility for learn more link by @khmandarrin in #31120
- test(web): add global zustand mock for tests by @lyzno1 in #31149
- feat(web): add loading indicators for infinite scroll pagination by @eureka928 in #31110
- chore: introduce bulk-suppressions and multithread linting by @hyoban in #31157
- chore: update vite related version by @hyoban in #31180
- feat: add Vercel React Best Practices skill for Claude Code by @lyzno1 in #31133
- fix(web): Zustand testing best practices and state read optimization by @lyzno1 in #31163
- chore: no custom lint cache location by @hyoban in #31195
- chore: improve clear workflow_run task by @hjlarry in #31124
- feat: ee workspace permission control by @douxc in #30841
- feat: implement workspace permission checks for member invitations an… by @GareArc in #31202
- refactor: refactor workflow context by @fatelei in #30607
- chore: drop slow lint rules by @hyoban in #31205
- refactor: make url in email template more better by @fatelei in #31166
- test: add unit tests for plugin detail panel components including action lists, strategy lists, and endpoint management by @CodingOnStar in #31053
- fix: fix dify-plugin-daemon error message by @fatelei in #31218
- fix: Revert "fix: fix create app xss issue" by @fatelei in #31219
- chore: relocate datasets api form by @zxhlyh in #31224
- feat: Download the uploaded files by @BeautyyuYanli in #31068
- fix: correct i18n for stepOne.uploader.tip by @kurokobo in #31177
- chore: init tsslint by @hyoban in #31209
- chore(web): remove redundant optimizePackageImports config by @cxhello in #31257
- test: add tests for dataset list by @CodingOnStar in #31231
- ci: label web changes by @hyoban in #31261
- fix(web): disable HTML escaping for form field validation messages by @lyzno1 in #31292
- fix: lint for i18n place holder by @hyoban in #31283
- chore(web): remove version prefixes from package.json by @Copilot in #31286
- chore(deps): bump js-yaml from 4.1.0 to 4.1.1 in /web by @dependabot[bot] in #31297
- chore(i18n): sync translations with en-US by @github-actions[bot] in #31298
- fix: enforce no-leaked-conditional-rendering as error and fix violations by @byteforge38 in #31262
- chore(deps-dev): bump jsdom from 27.3.0 to 27.4.0 in /web by @dependabot[bot] in #31186
- chore(web): comment out unused provider entries in quota panel by @CodingOnStar in #31315
- test: enhance HitTestingPage tests with additional coverage for rendering and state updates by @CodingOnStar in #31321
- chore: lint custom tag in i18n by @hyoban in #31301
- build: bump NextJS from 15 to 16 with turbopack enabled for web production build boost by @bowenliang123 in #27014
- refactor: use session factory instead of call db.session directly by @fatelei in #31198
- chore: update dev config by @hyoban in #31329
- feat: enhance ProgressBar and UsageInfo for storage mode by @CodingOnStar in #31273
- feat: add lock for retention jobs by @hj24 in #31320
- feat: workflow support register context and read context by @fatelei in #31265
- feat: re organize agent skills and add web design skills for all agents by @lyzno1 in #31334
- refactor(web): refactor next.config.js to next.config.ts by @bowenliang123 in #31331
- fix(i18n): update model provider tip to only mention OpenAI in English, Japanese, and Simplified Chinese translations by @CodingOnStar in #31339
- chore(i18n): sync translations with en-US by @github-actions[bot] in #31332
- fix: check and update doc links by @hyoban in #30849
- chore(i18n): sync translations with en-US by @github-actions[bot] in #31342
- test: fix test in #30849 by @hyoban in #31350
- refactor(web): extract useCopyToClipboard hook to reduce duplication by @SherlockShemol in #31308
- refactor(db): enforce non-null message annotation questions by @laipz8200 in #27915
- chore: revert jsdom update by @hyoban in #31353
- test: enhance HitTestingPage tests with additional coverage for rende… by @hyoban in #31355
- fix: remove _try_resolve_user_from_request by @fatelei in #31360
- fix: fix visibilityState event handle by @fatelei in #31354
- fix: non-auto variable type params of agent node tool are not correctly parsed by @dataknocker in #31128
- fix: following docs link fix by @hyoban in #31390
- fix: more doc link fix by @hyoban in #31395
- feat: app trial by @zyssyz123 in #26281
- fix(web): disable single tilde strikethrough in markdown rendering by @majiayu000 in #31400
- fix: use thread local isolation the context by @fatelei in #31410
- refactor: Move workflow node factory to app workflow by @laipz8200 in #31385
- feat: frontend part of support try apps by @iamjoel in #31287
- fix(web): use Array.from() for FileList to fix tsc type errors by @majiayu000 in #31398
- chore(i18n): sync translations with en-US by @github-actions[bot] in #31413
- docs(api): mark SystemFeatureApi as unauthenticated by design by @QuantumGhost in #31417
- fix: NextStep crash when target node is missing by @BeautyyuYanli in #31416
- fix: fix create-by-file doc_form by @fatelei in #31346
- chore: disable serwist in dev by @hyoban in #31424
- refactor: optimize system features response payload for unauthenticated clients by @Cursx in #31392
- ci: enable ESLint autofix in autofix bot by @majiayu000 in #31428
- feat: archive workflow run logs backend by @hjlarry in #31310
- docs(api): clarity SystemFeatureApi for webapp is unauthenticated by design by @QuantumGhost in #31432
- refactor: split changes for api/controllers/web/login.py by @asukaminato0721 in #29854
- refactor: split changes for api/controllers/web/workflow.py by @asukaminato0721 in #29852
- feat: init fastopenapi by @asukaminato0721 in #30453
- feat: optimize http status code by @fatelei in #31430
- fix(tools): fix ToolInvokeMessage Union type parsing issue by @qiaofenlin in #31450
- chore: Update dev setup scripts and API README by @BeautyyuYanli in #31415
- fix(http-request): prevent UUID truncation in JSON body by @majiayu000 in #31444
- refactor: port AppModelConfig by @asukaminato0721 in #30919
- refactor: single-node workflow runner helpers by @laipz8200 in #31472
- fix(api): fix IRIS hybrid search returning zero results by @TomoOkuyama in #31309
- chore(deps): bump pyasn1 from 0.6.1 to 0.6.2 in /api by @dependabot[bot] in #31140
- chore(deps): bump @lexical/utils from 0.38.2 to 0.39.0 in /web by @dependabot[bot] in #31503
- refactor: example of refine dict / Mapping by @asukaminato0721 in #31498
- feat: add trial model list in system features by @zyssyz123 in #31313
- refactor: restructure Completed component by @CodingOnStar in #31435
- feat: enhance quota panel to support additional model providers and integrate trial models feature by @CodingOnStar in #31443
- refactor(tool-selector): remove unused components and consolidate import by @CodingOnStar in #31018
- fix(web): upgrade tanstack devtools to fix seroval RCE vulnerability by @lyzno1 in #31515
- refactor: pass BaseModel instances instead of dict by @fghpdf in #31514
- refactor: LLM plugin invoke parsing by @BeautyyuYanli in #31499
- refactor: api/controllers/console/version.py to v3 by @asukaminato0721 in #31463
- refactor: api/controllers/console/setup.py to ov3 by @asukaminato0721 in #31465
- fix: Add vertical scrolling support for floating elements. by @coopercoder in #30897
- chore: eslint prune-suppressions by @hyoban in #31526
- fix: fix Cannot read properties of null (reading 'credential_form_sch… by @fatelei in #31117
- chore: update to story book nextjs-vite by @hyoban in #31536
- chore: increase plugin cache ttl to 1 hour by @RockChinQ in #31552
- chore: follow-up fixes for storybook vite migration by @lyzno1 in #31545
- fix: service api doc can not gen by @asukaminato0721 in #31549
- feat: chatflow support multimodal by @fatelei in #31293
- chore: move agent notes into docstrings by @BeautyyuYanli in #31560
- docs: add ESLint guide to AGENTS.md by @majiayu000 in #31559
- chore(deps): bump pycryptodome from 3.19.1 to 3.23.0 in /api by @dependabot[bot] in #31504
- refactor: replace request.args.get with Pydantic BaseModel validation by @GlobalStar117 in #31104
- refactor(web): extract MCP components and add comprehensive tests by @CodingOnStar in #31517
- chore(deps): bump pypdf from 6.6.0 to 6.6.2 in /api by @dependabot[bot] in #31568
- fix: billing account deletion by @hj24 in #31556
- fix: wrap test cleanup in act() to prevent window is not defined error by @majiayu000 in #31558
- chore: update react and next version by @hyoban in #31593
- feat: Enhances OpenTelemetry node parsers by @hieheihei in #30706
- test: add tests for dataset document detail by @CodingOnStar in #31274
- feat: enhance quota panel with installed providers mapping by @CodingOnStar in #31546
- fix: ConsoleDatasetListQuery request.args.to_dict() by @asukaminato0721 in #31598
- fix: doc not gen bug by @asukaminato0721 in #31547
- chore: remove project skills by @lyzno1 in #31615
- test: add comprehensive tests for chat-user-input component by @CodingOnStar in #31595
- fix(cors): correct CORS resource pattern for /console/api routes by @NeatGuyCoding in #31485
- refactor(graph_engine): move observability layer and persistence laye… by @laipz8200 in #31620
- fix(graph_engine): Cannot run single iteration or loop node by @laipz8200 in #31470
- feat: summary index by @zxhlyh in #31523
- fix: vdb-migrate command did not use for parent-child segment migration by @gaoyue1989 in #31605
- chore(i18n): sync translations with en-US by @github-actions[bot] in #31630
- fix(app-log): fetching messages correctly when scrolling message list by @JzoNgKVO in #31655
- refactor(graph_engine): Add a Config class for graph engine. by @laipz8200 in #31663
- fix: add list type support for ToolInput constant value in tool node by @qiaofenlin in #31276
- feat(qdrant): implement full-text search with multi-keyword support by @euxx in #31658
- test: add comprehensive tests by @CodingOnStar in #31649
- chore: remove non-ASCII characters in .env.example by @bangjiehan in #31638
- chore: disable turbopackFileSystemCacheForDev by @hyoban in #31696
- feat: Add summary index for knowledge. by @FFXN in #31625
- fix: SSRF in WordExtractor URL download (credit to @EaEa0001 ) by @BeautyyuYanli in #31678
- refactor(model): Refactor plugin model schema cache to be process-global to prevent redundant Daemon API calls by @NieRonghua in #31689
- refactor: ExporleBanner to TypeBase by @asukaminato0721 in #31698
- chore(import-linter): add a rule to make model_runtime isolate by @laipz8200 in #31706
- fix: convert HTTP method to lowercase when parsing cURL commands by @JQSevenMiao in #31704
- fix(web): remove unwanted border on sticky elements in dark mode by @taronsung in #31699
- refactor(web): consolidate download helpers by @BeautyyuYanli in #31664
- chore: Set plugin schema cache TTL to 1h by @laipz8200 in #31708
- chore(ty): Bootstrap ty type checking for api by @BeautyyuYanli in #31681
- refactor: unified shortcut keys display using component by @CrabSAMA in #31713
- docs: relocate frontend docs for agents and human by @hyoban in #31714
- feat: use xdist to make make test faster by @yihong0618 in #30824
- feat: try app support review by @iamjoel in #31716
- refactor: prefer css icon by @hyoban in #31551
- chore(typing): reduce ty excludes for A1 by @BeautyyuYanli in #31721
- feat: Human Input node (Frontend Part) by @WTW0313 in #31631
- feat(api): Human Input Node (backend part) by @QuantumGhost in #31646
- chore: update version to 1.12.0 by @QuantumGhost in #31726
- feat: Summary index for knowledge. by @FFXN in #31719
- chore: Revert "refactor: prefer css icon" by @hyoban in #31733
- chore(i18n): sync translations with en-US by @github-actions[bot] in #31730
- chore: update lint config by @hyoban in #31735
- chore(docker): update plugin daemon version to 0.5.3-local in docker-compose by @QuantumGhost in #31739
- fix(redis): Redis Cluster eval errors by adding hash tags to trigger debug keys by @anobaka in #31701
- refactor: rm some dict api/controllers/console/app/generator.py api/core/llm_generator/llm_generator.py by @asukaminato0721 in #31709
- fix: Drain non-stream plugin chunk iterator by @BeautyyuYanli in #31564
- fix: trigger doc link by @hyoban in #31754
- fix(api): fix workflow state persistence issue by @QuantumGhost in #31752
- chore: hide disable try tab when not support by @iamjoel in #31759
- refactor: api/controllers/console/feature.py (test) by @Cursx in #31562
- refactor: api/controllers/console/remote_files.py to ov3 by @asukaminato0721 in #31466
- revert: revert human input relevant code by @QuantumGhost in #31766
- fix(i18n): improve Chinese translation of Max Tokens by @majiayu000 in #31771
- chore: update restx to 1.3.2 by @asukaminato0721 in #31229
- refactor: init_validate.py to v3 by @asukaminato0721 in #31457
- refactor: port api/controllers/console/tag/tags.py to ov3 by @asukaminato0721 in #31767
- fix(api): align graph protocols for response streaming by @BeautyyuYanli in #31777
- refactor(typing): Fixup typing A2 - workflow engine & nodes by @BeautyyuYanli in #31723
- refactor: remove all reqparser by @asukaminato0721 in #29289
- refactor: examples of use match case by @asukaminato0721 in #31312
- refactor(typing): use enum types for workflow status fields by @lyzno1 in #31792
- fix: summary index bug by @FFXN in #31810
- chore(CODEOWNERS): assign
.agents/skillsto @hyoban by @laipz8200 in #31816 - refactor: "chore: update version to 1.12.0" by @QuantumGhost in #31817
- refactor: add test for api/controllers/console/workspace/tool_pr… by @asukaminato0721 in #29886
- refactor: port api/controllers/console/app/audio.py api/controllers/console/app/message.py api/controllers/console/auth/data_source_oauth.py api/controllers/console/auth/forgot_password.py api/controllers/console/workspace/endpoint.py by @asukaminato0721 in #30680
- refactor: if to match by @asukaminato0721 in #31799
- refactor: port api/controllers/console/datasets/datasets_document.py api/controllers/service_api/app/annotation.py api/core/app/app_config/easy_ui_based_app/agent/manager.py api/core/app/apps/pipeline/pipeline_generator.py api/core/workflow/nodes/knowledge_retrieval/knowledge_retrieval_node.py to match case by @asukaminato0721 in #31832
- refactor: port api/controllers/console/datasets/data_source.py /datasets/metadata.py /service_api/dataset/metadata.py /nodes/agent/agent_node.py api/core/workflow/nodes/datasource/datasource_node.py api/services/dataset_service.py to match case by @asukaminato0721 in #31836
- refactor: port api/controllers/console/app/annotation.py api/controllers/console/explore/trial.py api/controllers/console/workspace/account.py api/controllers/console/workspace/members.py api/controllers/service_api/app/annotation.py to basemodel by @asukaminato0721 in #31833
- chore(deps-dev): bump types-psutil from 7.0.0.20251116 to 7.2.2.20260130 in /api by @dependabot[bot] in #31814
- fix: revert "refactor: api/controllers/console/feature.py (test)" by @hyoban in #31850
- test: enhance CommandSelector and GotoAnythingProvider tests by @CodingOnStar in #31743
- refactor: update oauth_new_user handling in AppInitializer to use parseAsBoolean by @CodingOnStar in #31862
- fix: create app from template not support review by @iamjoel in #31866
- test: fix test by @hyoban in #31869
- chore: update version to 1.12.0 by @QuantumGhost in #31878
- test: fix test by @hyoban in #31880
- chore(dev): use strict bash mode for pytest by @BeautyyuYanli in #31873
- refactor: replace line-clamp package with native CSS by @niveshdandyan in #31877
- fix: "refactor: port api/controllers/console/tag/tags.py to ov3" by @asukaminato0721 in #31887
New Contributors
- @UMDKyle made their first contribution in #28201
- @jneless made their first contribution in #30741
- @Milad93R made their first contribution in #30962
- @BeautyyuYanli made their first contribution in #31000
- @josephadamsdev made their first contribution in #31012
- @byteforge38 made their first contribution in #31069
- @GlobalStar117 made their first contribution in #31074
- @Pavior0 made their first contribution in #31066
- @pgoslatara made their first contribution in #31114
- @khmandarrin made their first contribution in #31120
- @eureka928 made their first contribution in #31110
- @cxhello made their first contribution in #31257
- @dataknocker made their first contribution in #31128
- @coopercoder made their first contribution in #30897
- @bangjiehan made their first contribution in #31638
- @taronsung made their first contribution in #31699
- @niveshdandyan made their first contribution in #31877
Full Changelog: 1.11.3...1.12.0