From 6dcff7db97c2d294994dbfa2a49dcecd15722877 Mon Sep 17 00:00:00 2001 From: balibabu Date: Tue, 11 Nov 2025 19:43:49 +0800 Subject: [PATCH 01/14] Feat: The input parameters of data manipulation operators can only be of type object. #10427 (#11179) ### What problem does this PR solve? Feat: The input parameters of data manipulation operators can only be of type object. #10427 ### Type of change - [x] New Feature (non-breaking change which adds functionality) --- web/src/pages/agent/form/data-operations-form/index.tsx | 2 +- web/src/pages/agent/setting-dialog/setting-form.tsx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/web/src/pages/agent/form/data-operations-form/index.tsx b/web/src/pages/agent/form/data-operations-form/index.tsx index 8dd2848ed..dd7fc1fbe 100644 --- a/web/src/pages/agent/form/data-operations-form/index.tsx +++ b/web/src/pages/agent/form/data-operations-form/index.tsx @@ -89,7 +89,7 @@ function DataOperationsForm({ node }: INextOperatorForm) { diff --git a/web/src/pages/agent/setting-dialog/setting-form.tsx b/web/src/pages/agent/setting-dialog/setting-form.tsx index bad6b1f70..4716220b7 100644 --- a/web/src/pages/agent/setting-dialog/setting-form.tsx +++ b/web/src/pages/agent/setting-dialog/setting-form.tsx @@ -14,7 +14,7 @@ import { useForm } from 'react-hook-form'; const formSchema = z.object({ title: z.string().min(1, {}), - avatar: z.string().optional(), + avatar: z.string().optional().nullable(), description: z.string().optional().nullable(), permission: z.string(), }); From c30ffb57162df1e48ae408a0383cfbb36ef3073d Mon Sep 17 00:00:00 2001 From: Kevin Hu Date: Tue, 11 Nov 2025 19:46:41 +0800 Subject: [PATCH 02/14] Fix: ollama model list issue. (#11175) ### Type of change - [x] Bug Fix (non-breaking change which fixes an issue) --- api/apps/llm_app.py | 2 +- api/db/init_data.py | 1 + api/db/services/document_service.py | 2 +- rag/raptor.py | 2 +- rag/svr/task_executor.py | 11 +++++------ 5 files changed, 9 insertions(+), 9 deletions(-) diff --git a/api/apps/llm_app.py b/api/apps/llm_app.py index 4c40b8878..c34d71cc0 100644 --- a/api/apps/llm_app.py +++ b/api/apps/llm_app.py @@ -358,7 +358,7 @@ def list_app(): for o in objs: if o.llm_name + "@" + o.llm_factory in llm_set: continue - llms.append({"llm_name": o.llm_name, "model_type": o.model_type, "fid": o.llm_factory, "available": True}) + llms.append({"llm_name": o.llm_name, "model_type": o.model_type, "fid": o.llm_factory, "available": True, "status": StatusEnum.VALID.value}) res = {} for m in llms: diff --git a/api/db/init_data.py b/api/db/init_data.py index c09de6532..c9c117e5e 100644 --- a/api/db/init_data.py +++ b/api/db/init_data.py @@ -101,6 +101,7 @@ def init_llm_factory(): info = deepcopy(factory_llm_info) llm_infos = info.pop("llm") try: + LLMFactoriesService.filter_delete([LLMFactories.name == factory_llm_info["name"]]) LLMFactoriesService.save(**info) except Exception: pass diff --git a/api/db/services/document_service.py b/api/db/services/document_service.py index 0f8dc4752..198028210 100644 --- a/api/db/services/document_service.py +++ b/api/db/services/document_service.py @@ -846,7 +846,7 @@ def queue_raptor_o_graphrag_tasks(sample_doc_id, ty, priority, fake_doc_id="", d "to_page": 100000000, "task_type": ty, "progress_msg": datetime.now().strftime("%H:%M:%S") + " created task " + ty, - "begin_at": datetime.now(), + "begin_at": datetime.now().strftime("%Y-%m-%d %H:%M:%S"), } task = new_task() diff --git a/rag/raptor.py b/rag/raptor.py index 5dfe33dd3..e6efe3504 100644 --- a/rag/raptor.py +++ b/rag/raptor.py @@ -97,7 +97,7 @@ class RecursiveAbstractiveProcessing4TreeOrganizedRetrieval: async def __call__(self, chunks, random_state, callback=None, task_id: str = ""): if len(chunks) <= 1: return [] - chunks = [(s, a) for s, a in chunks if s and a and len(a) > 0] + chunks = [(s, a) for s, a in chunks if s and a is not None and len(a) > 0] layers = [(0, len(chunks))] start, end = 0, len(chunks) diff --git a/rag/svr/task_executor.py b/rag/svr/task_executor.py index 1de9c1646..9b309ee68 100644 --- a/rag/svr/task_executor.py +++ b/rag/svr/task_executor.py @@ -647,7 +647,7 @@ async def run_raptor_for_kb(row, kb_parser_config, chat_mdl, embd_mdl, vector_si res = [] tk_count = 0 - async def generate(chunks): + async def generate(chunks, did): nonlocal tk_count, res raptor = Raptor( raptor_config.get("max_cluster", 64), @@ -660,7 +660,7 @@ async def run_raptor_for_kb(row, kb_parser_config, chat_mdl, embd_mdl, vector_si original_length = len(chunks) chunks = await raptor(chunks, kb_parser_config["raptor"]["random_seed"], callback, row["id"]) doc = { - "doc_id": fake_doc_id, + "doc_id": did, "kb_id": [str(row["kb_id"])], "docnm_kwd": row["name"], "title_tks": rag_tokenizer.tokenize(row["name"]), @@ -688,9 +688,8 @@ async def run_raptor_for_kb(row, kb_parser_config, chat_mdl, embd_mdl, vector_si fields=["content_with_weight", vctr_nm], sort_by_position=True): chunks.append((d["content_with_weight"], np.array(d[vctr_nm]))) - callback(progress=(x+1.)/len(doc_ids)) - await generate(chunks) - + await generate(chunks, doc_id) + callback(prog=(x+1.)/len(doc_ids)) else: chunks = [] for doc_id in doc_ids: @@ -699,7 +698,7 @@ async def run_raptor_for_kb(row, kb_parser_config, chat_mdl, embd_mdl, vector_si sort_by_position=True): chunks.append((d["content_with_weight"], np.array(d[vctr_nm]))) - await generate(chunks) + await generate(chunks, fake_doc_id) return res, tk_count From 72740eb5b9af18a032fb938a4e2b2749025502ca Mon Sep 17 00:00:00 2001 From: buua436 <66937541+buua436@users.noreply.github.com> Date: Tue, 11 Nov 2025 19:54:17 +0800 Subject: [PATCH 03/14] Fix:data_operations input return (#11177) ### What problem does this PR solve? change: data_operations input return ### Type of change - [x] Bug Fix (non-breaking change which fixes an issue) --- agent/component/data_operations.py | 1 + 1 file changed, 1 insertion(+) diff --git a/agent/component/data_operations.py b/agent/component/data_operations.py index 6014a06b8..fab7d8c0f 100644 --- a/agent/component/data_operations.py +++ b/agent/component/data_operations.py @@ -47,6 +47,7 @@ class DataOperations(ComponentBase,ABC): inputs = [inputs] for input_ref in inputs: input_object=self._canvas.get_variable_value(input_ref) + self.set_input_value(input_ref, input_object) if input_object is None: continue if isinstance(input_object,dict): From de53498b39c85fd08d05853b77c3d00b6f0194d2 Mon Sep 17 00:00:00 2001 From: Billy Bao Date: Tue, 11 Nov 2025 19:56:54 +0800 Subject: [PATCH 04/14] Fix: Update env to support PPTX and update README for version changes (#11167) ### What problem does this PR solve? Fix: Update env to support PPTX Fix: update README for version changes #11138 ### Type of change - [x] Bug Fix (non-breaking change which fixes an issue) - [x] Documentation Update --------- Co-authored-by: writinwaters <93570324+writinwaters@users.noreply.github.com> --- README.md | 3 +++ README_id.md | 3 +++ README_ja.md | 4 ++++ README_ko.md | 3 +++ README_pt_br.md | 3 +++ README_tzh.md | 3 +++ README_zh.md | 3 +++ docker/.env | 3 +++ sdk/python/ragflow_sdk/modules/session.py | 6 ++++-- 9 files changed, 29 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 5e66f4d87..9e3ea3f7b 100644 --- a/README.md +++ b/README.md @@ -193,6 +193,9 @@ releases! 🌟 ```bash $ cd ragflow/docker + + # Optional: use a stable tag (see releases: https://github.com/infiniflow/ragflow/releases), e.g.: git checkout v0.21.1 + # Use CPU for embedding and DeepDoc tasks: $ docker compose -f docker-compose.yml up -d diff --git a/README_id.md b/README_id.md index 016f4dc1a..ae61578ec 100644 --- a/README_id.md +++ b/README_id.md @@ -191,6 +191,9 @@ Coba demo kami di [https://demo.ragflow.io](https://demo.ragflow.io). ```bash $ cd ragflow/docker + + # Opsional: gunakan tag stabil (lihat releases: https://github.com/infiniflow/ragflow/releases), contoh: git checkout v0.21.1 + # Use CPU for embedding and DeepDoc tasks: $ docker compose -f docker-compose.yml up -d diff --git a/README_ja.md b/README_ja.md index 09a6240c4..f7d338ae6 100644 --- a/README_ja.md +++ b/README_ja.md @@ -170,6 +170,9 @@ ```bash $ cd ragflow/docker + + # 任意: 安定版タグを利用 (一覧: https://github.com/infiniflow/ragflow/releases) 例: git checkout v0.21.1 + # Use CPU for embedding and DeepDoc tasks: $ docker compose -f docker-compose.yml up -d @@ -177,6 +180,7 @@ # sed -i '1i DEVICE=gpu' .env # docker compose -f docker-compose.yml up -d ``` + | RAGFlow image tag | Image size (GB) | Has embedding models? | Stable? | | ----------------- | --------------- | --------------------- | -------------------------- | diff --git a/README_ko.md b/README_ko.md index 6720682f5..1c378cd0d 100644 --- a/README_ko.md +++ b/README_ko.md @@ -172,6 +172,9 @@ ```bash $ cd ragflow/docker + + # Optional: use a stable tag (see releases: https://github.com/infiniflow/ragflow/releases), e.g.: git checkout v0.21.1 + # Use CPU for embedding and DeepDoc tasks: $ docker compose -f docker-compose.yml up -d diff --git a/README_pt_br.md b/README_pt_br.md index 94b4d2c97..a5a2e3b82 100644 --- a/README_pt_br.md +++ b/README_pt_br.md @@ -190,6 +190,9 @@ Experimente nossa demo em [https://demo.ragflow.io](https://demo.ragflow.io). ```bash $ cd ragflow/docker + + # Opcional: use uma tag estável (veja releases: https://github.com/infiniflow/ragflow/releases), ex.: git checkout v0.21.1 + # Use CPU for embedding and DeepDoc tasks: $ docker compose -f docker-compose.yml up -d diff --git a/README_tzh.md b/README_tzh.md index edc1d0b61..01e070965 100644 --- a/README_tzh.md +++ b/README_tzh.md @@ -189,6 +189,9 @@ ```bash $ cd ragflow/docker + + # 可選:使用穩定版標籤(查看發佈:https://github.com/infiniflow/ragflow/releases),例:git checkout v0.21.1 + # Use CPU for embedding and DeepDoc tasks: $ docker compose -f docker-compose.yml up -d diff --git a/README_zh.md b/README_zh.md index 0e7814b52..e909413a6 100644 --- a/README_zh.md +++ b/README_zh.md @@ -190,6 +190,9 @@ ```bash $ cd ragflow/docker + + # 可选:使用稳定版本标签(查看发布:https://github.com/infiniflow/ragflow/releases),例如:git checkout v0.21.1 + # Use CPU for embedding and DeepDoc tasks: $ docker compose -f docker-compose.yml up -d diff --git a/docker/.env b/docker/.env index 1d6c8ba90..7c4c5642d 100644 --- a/docker/.env +++ b/docker/.env @@ -217,3 +217,6 @@ REGISTER_ENABLED=1 # Enable DocLing and Mineru USE_DOCLING=false USE_MINERU=false + +# pptx support +DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=1 \ No newline at end of file diff --git a/sdk/python/ragflow_sdk/modules/session.py b/sdk/python/ragflow_sdk/modules/session.py index d9b6193c4..12141afed 100644 --- a/sdk/python/ragflow_sdk/modules/session.py +++ b/sdk/python/ragflow_sdk/modules/session.py @@ -67,8 +67,10 @@ class Session(Base): or (self.__session_type == "chat" and json_data.get("data") is True) ): return - - yield self._structure_answer(json_data) + if self.__session_type == "agent": + yield self._structure_answer(json_data) + else: + yield self._structure_answer(json_data["data"]) else: try: json_data = res.json() From a15f522dc936c76e7373c1140ace78ce3bec3b76 Mon Sep 17 00:00:00 2001 From: Jimmy Ben Klieve Date: Tue, 11 Nov 2025 20:29:20 +0800 Subject: [PATCH 05/14] Update Admin UI user guide docs (#11183) ### What problem does this PR solve? - Update Admin UI user guide docs ### Type of change - [x] Documentation Update --- ...sing_admin_ui.md => accessing_admin_ui.md} | 48 ++----------------- web/README.md | 17 ++++--- web/src/locales/en.ts | 2 +- web/src/pages/admin/service-status.tsx | 14 +++--- 4 files changed, 20 insertions(+), 61 deletions(-) rename docs/guides/{using_admin_ui.md => accessing_admin_ui.md} (51%) diff --git a/docs/guides/using_admin_ui.md b/docs/guides/accessing_admin_ui.md similarity index 51% rename from docs/guides/using_admin_ui.md rename to docs/guides/accessing_admin_ui.md index f72ad4a5c..b2b096729 100644 --- a/docs/guides/using_admin_ui.md +++ b/docs/guides/accessing_admin_ui.md @@ -1,6 +1,6 @@ --- -sidebar_position: 6 -slug: /using_admin_ui +sidebar_position: 7 +slug: /accessing_admin_ui --- # Admin UI @@ -10,47 +10,7 @@ The RAGFlow Admin UI is a web-based interface that provides comprehensive system ## Accessing the Admin UI -### Launching from source code - -1. Start the RAGFlow front-end (if not already running): - - ```bash - cd web - npm run dev - ``` - - Typically, the front-end server is running on port `9222`. The following output confirms a successful launch of the RAGFlow UI: - - ```bash - ╔════════════════════════════════════════════════════╗ - ║ App listening at: ║ - ║ > Local: http://localhost:9222 ║ - ready - ║ > Network: http://192.168.1.92:9222 ║ - ║ ║ - ║ Now you can open browser with the above addresses↑ ║ - ╚════════════════════════════════════════════════════╝ - ``` - - -2. Login to RAGFlow Admin UI - - Open your browser and navigate to: - - ``` - http://localhost:9222/admin - ``` - - Or if accessing from a remote machine: - - ``` - http://[YOUR_MACHINE_IP]:9222/admin - ``` - - > Replace `[YOUR_MACHINE_IP]` with your actual machine IP address (e.g., `http://192.168.1.49:9222/admin`). - - Then, you will be presented with a login page where you need to enter your admin user email address and password. - -3. After a successful login, you will be redirected to the **Service Status** page, which is the default landing page for the Admin UI. +To access the RAGFlow admin UI, append `/admin` to the web UI's address, e.g. `http://[RAGFLOW_WEB_UI_ADDR]/admin`, replace `[RAGFLOW_WEB_UI_ADDR]` with real RAGFlow web UI address. ## Admin UI Overview @@ -59,7 +19,7 @@ The RAGFlow Admin UI is a web-based interface that provides comprehensive system The service status page displays of all services within the RAGFlow system. -- **Service List**: View all services in a table format. +- **Service List**: View all services in a table. - **Filtering**: Use the filter button to filter services by **Service Type**. - **Search**: Use the search bar to quickly find services by **Name** or **Service Type**. - **Actions** (hover over a row to see action buttons): diff --git a/web/README.md b/web/README.md index 28789187f..edf78d19f 100644 --- a/web/README.md +++ b/web/README.md @@ -25,15 +25,7 @@ _Replace `[YOUR_MACHINE_IP]` with your actual machine IP address (e.g., `http://192.168.1.49:9222`)._ -## Shutdown front-end - - Ctrl + C or - - ```bash - kill -f "umi dev" - ``` - -## Access admin UI +## Login to RAGFlow web admin UI Open your browser and navigate to: @@ -44,3 +36,10 @@ _Replace `[YOUR_MACHINE_IP]` with your actual machine IP address (e.g., `http://192.168.1.49:9222/admin`)._ +## Shutdown front-end + + Ctrl + C or + + ```bash + kill -f "umi dev" + ``` \ No newline at end of file diff --git a/web/src/locales/en.ts b/web/src/locales/en.ts index f1494ae38..e405efcd4 100644 --- a/web/src/locales/en.ts +++ b/web/src/locales/en.ts @@ -1922,7 +1922,7 @@ Important structured information may include: names, dates, locations, events, k }, admin: { loginTitle: 'Admin Console', - title: 'RAGFlow admin', + title: 'RAGFlow', confirm: 'Confirm', close: 'Close', yes: 'Yes', diff --git a/web/src/pages/admin/service-status.tsx b/web/src/pages/admin/service-status.tsx index 923170dba..c78cbb0d6 100644 --- a/web/src/pages/admin/service-status.tsx +++ b/web/src/pages/admin/service-status.tsx @@ -384,21 +384,21 @@ function AdminServiceStatus() { {/* Extra info modal*/} { if (!extraInfoModalOpen) { setItemToMakeAction(null); } }} > - + {t('admin.extraInfo')} -
+
- +