知识库文件解析失败:一次由 Domain Index 引发的定位记录

知识库上传文件后,解析流程不一定失败在文件本身。有时日志只暴露出"保存分块失败",真正的问题却在数据库对象状态上。笔者环境中,这次问题最终定位到 Oracle 表上的 Domain Index 处于 failed 状态。

01 | 先用小文件复现问题

为了快速验证,笔者先用一个小文件复现。上传后,解析任务能被 Worker 接收,但写入分块时报错:

BASH 复制代码
2026-07-12 07:34:31: Worker received task, preparing to parse
2026-07-12 07:36:33: Error saving chunks to database: Oracle batch insert text chunks failed

这个日志说明:文件解析流程已经进入后台任务,但在保存 chunks 到数据库时失败。因此排查重点可以先放在目标表、索引和批量写入相关对象上。

02 | 检查目标表上的 Domain Index

问题最终定位为:AI_PLATFORM.KBOT_BIZ_TXT_EMBEDDING 表上存在 failed 的 Domain Index。

用于检查 Domain Index 状态的 SQL 如下:

SQL 复制代码
SELECT i.owner,
 i.index_name,
 c.column_name,
 i.index_type,
 i.status,
 i.domidx_status,
 i.domidx_opstatus
 FROM dba_indexes i
 LEFT JOIN dba_ind_columns c
 ON c.index_owner = i.owner
 AND c.index_name = i.index_name
 WHERE i.table_owner = 'AI_PLATFORM'
 AND i.table_name = 'KBOT_BIZ_TXT_EMBEDDING'
 AND i.index_type = 'DOMAIN'
 ORDER BY i.index_name, c.column_position;

为了保留现场,也可以先导出相关索引创建语句:

SQL 复制代码
SET LONG 1000000
SET LONGCHUNKSIZE 1000000
SET PAGESIZE 0
SET LINESIZE 32767
SET TRIMSPOOL ON

SPOOL /tmp/kbot_text_indexes.sql

SELECT DBMS_METADATA.GET_DDL('INDEX', 'IDX_FULLSEARCH_TXT_HEADER', 'AI_PLATFORM')
FROM dual;

SELECT DBMS_METADATA.GET_DDL('INDEX', 'IDX_FULLSEARCH_TXT_EMBEDDING', 'AI_PLATFORM')
FROM dual;

SPOOL OFF

其中一个索引创建语句如下:

SQL 复制代码
CREATE INDEX "AI_PLATFORM"."IDX_FULLSEARCH_TXT_EMBEDDING"
ON "AI_PLATFORM"."KBOT_BIZ_TXT_EMBEDDING" ("CONTENT")
INDEXTYPE IS "CTXSYS"."CONTEXT"
PARAMETERS ('lexer chinese_lexer')

本次处理时,先删除处于 failed 状态的异常索引:

SQL 复制代码
DROP INDEX AI_PLATFORM.IDX_FULLSEARCH_TXT_EMBEDDING FORCE;

03 | 修复后重新验证

处理完相关索引后,再次检查状态,Domain Index 已恢复正常:

SQL 复制代码
OWNER INDEX_NAME COLUMN_NAME INDEX_TYPE STATUS DOMIDX_STATUS DOMIDX_OPSTATUS
AI_PLATFORM IDX_FULLSEARCH_TXT_EMBEDDING CONTENT DOMAIN VALID VALID VALID

OWNER INDEX_NAME COLUMN_NAME INDEX_TYPE STATUS DOMIDX_STATUS DOMIDX_OPSTATUS
AI_PLATFORM IDX_FULLSEARCH_TXT_HEADER HEADER DOMAIN VALID VALID VALID

OWNER INDEX_NAME COLUMN_NAME INDEX_TYPE STATUS DOMIDX_STATUS DOMIDX_OPSTATUS
AI_PLATFORM IDX_FULLSEARCH_TXT_SEARCH_HELPER SEARCH_HELPER DOMAIN VALID VALID VALID

随后上传同一个文件,解析成功:

BASH 复制代码
2026-07-12 08:15:31: Worker received task, preparing to parse
2026-07-12 08:17:47: Successfully saved 1 chunks with embeddings

这次排查的关键点是:当知识库文件解析报出 Oracle batch insert text chunks failed 时,不要只看文件内容或解析程序,也要检查写入表上的 Domain Index 状态。

关注我,和AI一起成长~

相关推荐
曲幽2 个月前
别只盯着GitBook了!这个文档神器让你的笔记秒变网站
web·markdown·docsify·seo·gitbook·vuepress·document·index
android_cai_niao5 个月前
编程中的Model、Domain、Entity等的含义
model·domain·entity·javabean
dingdingfish6 个月前
Bash学习 - 第6章:Bash Features,第7节:Arrays
bash·shell·array·index·associate
消失的旧时光-19436 个月前
第二十二课:领域建模入门——从业务中“提炼结构”(认知篇)
java·spring boot·后端·domain
JiMoKuangXiangQu7 个月前
Linux 内存 domain 管理
linux·内存管理·domain
消失的旧时光-19438 个月前
Freezed + json_serializable:DTO / Domain 分层与不可变模型(入门到落地)-----上篇
flutter·json·dto·domain
Par@ish9 个月前
【局域网协议】为什么我们需要管理DNS?
安全·dns·domain
G皮T9 个月前
【ELasticsearch】索引字段设置 “index”: false 的作用
大数据·elasticsearch·搜索引擎·全文检索·索引·index·检索