v0.25.3

infiniflow/ragflowv0.25.3May 13, 2026by github-actions[bot]

AI Summary

Continues the transition to RESTful APIs and enhances security, introduces spreadsheet column-level control and ETag optimization for S3 data sources, and reduces ingestion server boot time.

Key Highlights

  • API refactoring to RESTful conventions with security enhancements
  • Spreadsheet parser supports column-level semantic/metadata control
  • ETag optimization for incremental S3 data source synchronization
  • Security fixes for sandbox executor bypasses
  • Reduced ingestion server boot time

New Features

  • Column-level semantic/metadata control for spreadsheet files
  • ETag optimization for incremental S3 synchronization
  • RESTful API refactoring with backward compatibility
  • Security hardening for sandbox executor

Full Release Notes

# Summary

## New features

-  Data source and parsing: Added column-level semantic/metadata control for the spreadsheet file parser; introduced ETag optimization for incremental synchronization of S3 data sources to avoid unnecessary file transfers.
- Enables assigning specific roles like content, metadata, and primary key, to table columns. [#13710](https://github.com/infiniflow/ragflow/pull/13710)

## Improvements

- API refactoring and security
  - Continues the transition of web APIs to RESTful conventions, ensuring backward compatibility for all legacy endpoints.
  - Binds the `user_id` in `POST /api/v1/messages` to the authenticated JWT principal. [#14745](https://github.com/infiniflow/ragflow/pull/14745)
  - Secures the sandbox executor against dynamic and indirect code execution bypasses. [#14690](https://github.com/infiniflow/ragflow/pull/14690)
  - LLM request timeout control
  - High concurrency blocking call thread pool
- Reduces ingestion server boot time. [#14894](https://github.com/infiniflow/ragflow/pull/14894)

## Bug fixes

- Images in multi-sheet Excel workbooks were not scoped by sheet, causing images to be incorrectly attributed across different worksheets. [#14120](https://github.com/infiniflow/ragflow/pull/14120)
- Iteration item alias passing
- Tool parameter template parsing
- Code execution attachment output
- Volcano model addition fix

## What's Changed
* Go: implement provider: Baidu by @Haruko386 in https://github.com/infiniflow/ragflow/pull/14741
* feat(connectors): ETag-based bypass for incremental S3 ingestion (#14628) by @hunnyboy1217 in https://github.com/infiniflow/ragflow/pull/14677
* Go: fix Baidu rerank issue by @JinHai-CN in https://github.com/infiniflow/ragflow/pull/14742
* Go: fix siliconflow rerank issue by @JinHai-CN in https://github.com/infiniflow/ragflow/pull/14743
* Go: implement Encode (embeddings) in OpenAI driver by @pandadev66 in https://github.com/infiniflow/ragflow/pull/14630
* Fix: Radio.Group cloneElement crashes on non-element children by @JimZhang-lab in https://github.com/infiniflow/ragflow/pull/14407
* fix(auth): fall back to session-based auth in _load_user by @mhtkarakose in https://github.com/infiniflow/ragflow/pull/14569
* Fix: resolve template strings in tool component parameters by @wanghualoong in https://github.com/infiniflow/ragflow/pull/14601
* fix base_url handling in HuggingfaceRerank by @Qwerrty574 in https://github.com/infiniflow/ragflow/pull/14555
* Feature/table parser column roles by @ahmadintisar in https://github.com/infiniflow/ragflow/pull/13710
* Feat: add BedrockCV for vision/image2text inference via LiteLLM by @vincentlambert in https://github.com/infiniflow/ragflow/pull/14705
* Go: implement ListModels in Volcengine driver by @bittoby in https://github.com/infiniflow/ragflow/pull/14702
* feat: make sandbox Dockerfile mirrors optional with ARG by @ParasSondhi in https://github.com/infiniflow/ragflow/pull/14553
* fix(llm): add timeout to HTTP requests in LLM integration layer by @Ricardo-M-L in https://github.com/infiniflow/ragflow/pull/14313
* Go: implement Encode (embeddings) in Google Gemini driver by @Joseff531 in https://github.com/infiniflow/ragflow/pull/14682
* fix(go): wire Google CheckConnection to ListModels by @zeus1959 in https://github.com/infiniflow/ragflow/pull/14660
* Fix(Go): correct Name() and region URL fallback in Aliyun driver by @Joseff531 in https://github.com/infiniflow/ragflow/pull/14673
* fix: close two security analyzer bypass paths in sandbox executor by @Sp1kyss in https://github.com/infiniflow/ragflow/pull/14690
* fix: handle missing parent chunk in retrieval_by_children by @vincentlambert in https://github.com/infiniflow/ragflow/pull/14556
* Go: implement Encode (embeddings) in Gitee AI driver by @bittoby in https://github.com/infiniflow/ragflow/pull/14698
* fix(keyword_extraction): accept Chinese commas/semicolons/newlines as keyword delimiters by @Qinsanz in https://github.com/infiniflow/ragflow/pull/14540
* Go: implement Encode (embeddings) in vLLM driver by @pandadev66 in https://github.com/infiniflow/ragflow/pull/14688
* fix: complete robustness fixes for rerank module addressing all review comments by @07heco in https://github.com/infiniflow/ragflow/pull/14265
* fix(prompt): reserve system budget in message_fit_in by @hyl64 in https://github.com/infiniflow/ragflow/pull/14164
* Go: implement Encode (embeddings) in Ollama driver by @jack-stormentswe in https://github.com/infiniflow/ragflow/pull/14664
* Go: implement Encode (embeddings) in NVIDIA driver by @bittoby in https://github.com/infiniflow/ragflow/pull/14700
* Perf(Go): batch SiliconFlow Encode requests with 32-item chunking by @Joseff531 in https://github.com/infiniflow/ragflow/pull/14719
* Go: implement Encode (embeddings) in LM Studio driver by @pandadev66 in https://github.com/infiniflow/ragflow/pull/14694
* Fix(Go): make OpenRouter Encode fail loudly on malformed responses by @Joseff531 in https://github.com/infiniflow/ragflow/pull/14717
* Refactor: tidy up ThreadPoolExecutor lifecycle in file_service and task executor by @web-dev0521 in https://github.com/infiniflow/ragflow/pull/14668
* GraphRAG feature - Part 1 - add spacy to extract entity and relation by @wangq8 in https://github.com/infiniflow/ragflow/pull/14670
* fix: scope pending_cell_images by sheet in excel parser by @fplust in https://github.com/infiniflow/ragflow/pull/14120
* fix(dify): guard retrieval argument error behavior by @Achieve3318 in https://github.com/infiniflow/ragflow/pull/14169
* Fix: bind memory message `user_id` to authenticated user for JWT auth by @jony376 in https://github.com/infiniflow/ragflow/pull/14745
* Fix: dataset search rerank id type by @buua436 in https://github.com/infiniflow/ragflow/pull/14759
* Fix: shared dataset chunk index lookup by @buua436 in https://github.com/infiniflow/ragflow/pull/14764
* fix: use context manager for ThreadPoolExecutor in file_service.py by @Ricardo-M-L in https://github.com/infiniflow/ragflow/pull/14144
* Go: refactor embedding interface by @JinHai-CN in https://github.com/infiniflow/ragflow/pull/14757
* Fix: safe argument guard and remove redundant redis call by @paulhuiseismic in https://github.com/infiniflow/ragflow/pull/14060
* fix: offload blocking DB/Redis calls to thread pool for high-concurrency support (#13825) by @tmimmanuel in https://github.com/infiniflow/ragflow/pull/13941
* Refact: Added a private helper _visibility_and_status_filter by @Sank-WoT in https://github.com/infiniflow/ragflow/pull/13627
* Fix: Document parse status set to DONE before chunks are retrievable by @as-ondewo in https://github.com/infiniflow/ragflow/pull/13352
* fix(web): fix incomplete Docx preview in citation reference by @yshchm in https://github.com/infiniflow/ragflow/pull/14122
* fix: OCR.detect() returns truthy None-tuple causing NoneType subscript crash by @octo-patch in https://github.com/infiniflow/ragflow/pull/13951
* chore: fix some comments to improve readability by @box4wangjing in https://github.com/infiniflow/ragflow/pull/14756
* fix(opensearch): implement doc-meta dispatch surface on OSConnection by @tmimmanuel in https://github.com/infiniflow/ragflow/pull/14577
* Go: add development guide document by @JinHai-CN in https://github.com/infiniflow/ragflow/pull/14785
* Go: implement Rerank in NVIDIA driver by @RenzoMXD in https://github.com/infiniflow/ragflow/pull/14778
* Fix: add codeexec attachments output by @buua436 in https://github.com/infiniflow/ragflow/pull/14787
* Go: implement provider: CoHere and FishAudio by @Haruko386 in https://github.com/infiniflow/ragflow/pull/14790
* Go: fix retrieval test error by @JinHai-CN in https://github.com/infiniflow/ragflow/pull/14794
* [Bug]: REDIS error #12870 by @raminmardani in https://github.com/infiniflow/ragflow/pull/13875
* fix(dify): add GET method support to /dify/retrieval for health check by @Lntanohuang in https://github.com/infiniflow/ragflow/pull/13837
* feat(raptor): add Psi tree builder with original-space ranking and safe migration by @CaptainTimon in https://github.com/infiniflow/ragflow/pull/14679
* Chore(deps): Bump urllib3 from 2.6.3 to 2.7.0 in /agent/sandbox by @dependabot[bot] in https://github.com/infiniflow/ragflow/pull/14824
* Refactor(Go): remove hardcode in huggingface provider by @Haruko386 in https://github.com/infiniflow/ragflow/pull/14822
* fix(agent): support iteration item aliases in child nodes by @hyl64 in https://github.com/infiniflow/ragflow/pull/14146
* Go: implement provider: StepFun by @tmimmanuel in https://github.com/infiniflow/ragflow/pull/14815
* fix(docs): correct broken knowledge graph construction link by @majiayu000 in https://github.com/infiniflow/ragflow/pull/13838
* Fix: some agent bug by @buua436 in https://github.com/infiniflow/ragflow/pull/14829
* Refact: sandbox quickstart.md & add tutorial for code exec component by @Magicbook1108 in https://github.com/infiniflow/ragflow/pull/14786
* Test : aggregation edge cases for list and scalar values by @Achieve3318 in https://github.com/infiniflow/ragflow/pull/14170
* Go: implement provider: Baichuan by @Haruko386 in https://github.com/infiniflow/ragflow/pull/14832
* Go: implement Embed (embeddings) in Upstage driver by @tmimmanuel in https://github.com/infiniflow/ragflow/pull/14819
* Speed up start time by @wangq8 in https://github.com/infiniflow/ragflow/pull/14833
* GO: implement GET /api/v1/datasets/:dataset_id by @buua436 in https://github.com/infiniflow/ragflow/pull/14834
* Go: add ASR, TTS, OCR command by @JinHai-CN in https://github.com/infiniflow/ragflow/pull/14836
* Go: fix dataset time unit by @buua436 in https://github.com/infiniflow/ragflow/pull/14837
* Go: implement Embed (embeddings) in Mistral driver by @tmimmanuel in https://github.com/infiniflow/ragflow/pull/14807
* Go: implement provider: Jina by @Haruko386 in https://github.com/infiniflow/ragflow/pull/14838
* fix: expose gpt-5.5 and gpt-5.4 in OpenAI model list by @oxtensor in https://github.com/infiniflow/ragflow/pull/14828
* Feat: When a Wait Node precedes a Message Node within a Loop Node, the outgoing message is split into two separate messages. by @cike8899 in https://github.com/infiniflow/ragflow/pull/14839
* Fix #14801 to allow search dataset list when add by @wangq8 in https://github.com/infiniflow/ragflow/pull/14841
* Go: fix model type check when use the model by @JinHai-CN in https://github.com/infiniflow/ragflow/pull/14843
* Docs: How to add Bitbucket as data source. by @writinwaters in https://github.com/infiniflow/ragflow/pull/14846
* fix: remove duplicate .wav and .aac in audio supported extensions list by @yaoper in https://github.com/infiniflow/ragflow/pull/14791
* fix(api): authorize owner_ids for list chats and search apps by @dale053 in https://github.com/infiniflow/ragflow/pull/14775
* Add REST API backward compatibility by @wangq8 in https://github.com/infiniflow/ragflow/pull/14872
* fix: guard whitespace-only chunks before embedding by @shawnxiao105-afk in https://github.com/infiniflow/ragflow/pull/13938
* Fix(Go): make Baidu Encode fail loudly on malformed responses by @Joseff531 in https://github.com/infiniflow/ragflow/pull/14721
* Fix delete graphrag not take effect in UI by @wangq8 in https://github.com/infiniflow/ragflow/pull/14879
* Fix: The text field resizing function in the knowledge block creation… by @stardyun in https://github.com/infiniflow/ragflow/pull/14212
* Go: implement provider: Novita.ai by @tmimmanuel in https://github.com/infiniflow/ragflow/pull/14850
* Chore: migrate tests to restful api by @6ba3i in https://github.com/infiniflow/ragflow/pull/14871
* Delete duplicate route by @wangq8 in https://github.com/infiniflow/ragflow/pull/14883
* Go: implement provider: LongCat by @tmimmanuel in https://github.com/infiniflow/ragflow/pull/14809
* Fix: Set embedded models during form initialization. by @dcc123456 in https://github.com/infiniflow/ragflow/pull/14889
* Go: implement ListModels in ZhipuAI driver by @pandadev66 in https://github.com/infiniflow/ragflow/pull/14886
* Fix: llm add api key overridden by @buua436 in https://github.com/infiniflow/ragflow/pull/14885
* Go: fix OCR command by @JinHai-CN in https://github.com/infiniflow/ragflow/pull/14891
* Speed up ragflow server by @wangq8 in https://github.com/infiniflow/ragflow/pull/14894
* Docs: Update version references to v0.25.3 in READMEs and docs by @asiroliu in https://github.com/infiniflow/ragflow/pull/14896
* Go: implement Rerank in LocalAI driver by @tmimmanuel in https://github.com/infiniflow/ragflow/pull/14813
* Docs: Draft 0.25.3 release notes by @writinwaters in https://github.com/infiniflow/ragflow/pull/14898
* Bump to infinity v0.7.0-dev7 by @JinHai-CN in https://github.com/infiniflow/ragflow/pull/14897
* Docs: Updated v0.25.3 release notes draft by @writinwaters in https://github.com/infiniflow/ragflow/pull/14899
* Fix: enforce tenant authorization for `tenant_rerank_id` in retrieval flows by @jony376 in https://github.com/infiniflow/ragflow/pull/14782
* Fix go compilation by @JinHai-CN in https://github.com/infiniflow/ragflow/pull/14900

## New Contributors
* @hunnyboy1217 made their first contribution in https://github.com/infiniflow/ragflow/pull/14677
* @JimZhang-lab made their first contribution in https://github.com/infiniflow/ragflow/pull/14407
* @mhtkarakose made their first contribution in https://github.com/infiniflow/ragflow/pull/14569
* @Qwerrty574 made their first contribution in https://github.com/infiniflow/ragflow/pull/14555
* @zeus1959 made their first contribution in https://github.com/infiniflow/ragflow/pull/14660
* @Sp1kyss made their first contribution in https://github.com/infiniflow/ragflow/pull/14690
* @Qinsanz made their first contribution in https://github.com/infiniflow/ragflow/pull/14540
* @07heco made their first contribution in https://github.com/infiniflow/ragflow/pull/14265
* @fplust made their first contribution in https://github.com/infiniflow/ragflow/pull/14120
* @yshchm made their first contribution in https://github.com/infiniflow/ragflow/pull/14122
* @box4wangjing made their first contribution in https://github.com/infiniflow/ragflow/pull/14756
* @CaptainTimon made their first contribution in https://github.com/infiniflow/ragflow/pull/14679
* @oxtensor made their first contribution in https://github.com/infiniflow/ragflow/pull/14828
* @yaoper made their first contribution in https://github.com/infiniflow/ragflow/pull/14791
* @shawnxiao105-afk made their first contribution in https://github.com/infiniflow/ragflow/pull/13938
* @stardyun made their first contribution in https://github.com/infiniflow/ragflow/pull/14212

**Full Changelog**: https://github.com/infiniflow/ragflow/compare/v0.25.2...v0.25.3