![[Bug]: Error: TerminateHandler: Unhandled Exception: JsonTermT overflow: JSON index term exceeds JSON_TERM_MAX_LENGTH](https://www.chat-gpts.plus/wp-content/uploads/2026/07/16005-f68f978b.jpg)
[Bug]: Error: TerminateHandler: Unhandled Exception: JsonTermT overflow: JSON index term exceeds JSON_TERM_MAX_LENGTH
快速结论:此报错发生在 RAGFlow 底层搜索引擎 Infinity 的索引构建过程中,当 JSON 字段中的索引项超出 JSON_TERM_MAX_LENGTH 限制时触发。优先排查所使用的 RAGFlow 镜像版本,应升级至包含 Infinity v0.7.2 或更高版本的镜像。
问题场景
该问题在 RAGFlow 运行过程中,底层 Infinity 引擎尝试从存储中恢复内存索引(RecoverMemIndex)时触发。具体流程为:Infinity 启动时切换存储模式(AdminToWriter),然后进行内存索引恢复,在向一个包含 JSON 类型的列表(Array)字段追加索引项时,因索引项长度超过内部最大长度限制而抛出未处理异常,最终导致 Segmentation fault 和进程终止。用户使用的是 ragflow:nightly 镜像。
报错原文
Error: Segmentation fault
[01:58:18.507] [1] [critical] 0# infinity::PrintStacktrace@infinity_core(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) at /infinity/src/common/utility/exception_impl.cpp:47
...
8# infinity::JsonTermT::Assign(char const*, unsigned long) at /infinity/src/parser/type/complex/json_term.h:91
9# infinity::NewTxn@infinity_core::AppendMemIndex(...) at /infinity/src/storage/new_txn/new_txn_index_impl.cpp:798
10# infinity::NewTxn@infinity_core::AppendIndex(...) at /infinity/src/storage/new_txn/new_txn_index_impl.cpp:727
11# infinity::NewTxn@infinity_core::RecoverMemIndex(...) at /infinity/src/storage/new_txn/new_txn_index_impl.cpp:2759
...
14# infinity::Storage@infinity_core::AdminToWriter() at /infinity/src/storage/storage_impl.cpp:343
原因分析
可能原因:在 Infinity 引擎中,处理 JSON 类型字段的索引项时,对单条 JSON 索引项的长度存在一个硬性限制(JSON_TERM_MAX_LENGTH)。当某个 JSON 数组中的某个元素(以字符串形式表示)或 JSON 路径值超过该限制时,JsonTermT::Assign 函数会抛出异常。该异常未被正确捕获,导致 std::terminate 被调用,进而引发 Segmentation fault。该问题已被 Infinity 社区识别为 bug,并在 PR #3382 中修复。
环境排查
- 确认 RAGFlow 镜像版本(如果使用 Docker):是否为
ragflow:nightly或更早版本。 - 确认 Infinity 引擎版本:RAGFlow 附带的 Infinity 引擎版本是否低于 v0.7.2。
- 确认数据表 schema 中是否包含
Json或Array(内部映射为 JSON)类型的字段,且该字段存储了较长的字符串值。 - 检查日志中是否有
JSON index term exceeds JSON_TERM_MAX_LENGTH的明文记录(Issue 附件日志中可能包含更多上下文)。
解决步骤
- 升级 Infinity 引擎:社区提交了修复 PR(infiniflow/infinity #3382)。该修复已随 Infinity v0.7.2 发布。RAGFlow 用户应升级至已集成 Infinity v0.7.2 或更新版本的 RAGFlow 镜像。
- 更新 RAGFlow 镜像:停止当前容器,拉取最新的
ragflow:nightly或特定版本标签(如包含修复的 tag),重新启动容器。 - (可优先尝试)清理并重建索引:如果现有数据已触发此问题,在升级引擎后,可能需要删除并重建包含问题 JSON 字段的全文索引。可以通过 RAGFlow 的知识库管理界面或 API 删除已有数据集并重新解析文档。
验证方法
升级并重启 RAGFlow 服务后,确认相关文档的解析和索引过程不再报错。可以通过日志搜索 JsonTermT overflow 或 Segmentation fault 确认异常不再出现。同时检查原本触发报错的数据集是否能正常完成索引构建。



