更新向量模型之后如何成功重建索引

更新向量模型之后如何成功重建索引

作者:H0总助  |  文档版本:V1.0  |  适用平台:HZERO AIGC平台 1.6.1

一、引言

在HZERO AIGC平台的使用过程中,有时需要更换底层向量模型。例如原来使用的是豆包的向量模型 doubao-embedding-large-text-250515,现在要切换到阿里的 text-embedding-v4。切换完成后,文档库中已有的文档需要重建向量索引,才能让知识问答功能继续正常工作。

本文档详细记录了从切换向量模型到成功重建索引的完整操作步骤,包括过程中可能遇到的两个典型报错及其解决方法,供益吉的海森以及其他遇到类似问题的同学参考。

二、背景:为什么要换向量模型

原先系统中使用的豆包向量模型 doubao-embedding-large-text-250515 已无法使用(豆包已不再提供纯文本向量模型服务),因此需要切换到阿里的文本向量模型 text-embedding-v4。

切换流程大致如下:

在模型对接配置中新建阿里 text-embedding-v4 对接账户

在模型组合配置中创建新的向量组合(如”Jack文本向量组合-阿里”),关联阿里向量模型

在全局选项配置中,将默认文本向量模型改为新建的组合

删除旧的向量索引,然后重建

三、第一步:准备新的向量模型对接

这是最基础的一步,但有一个容易忽略的细节:向量维度。

3.1 确认向量模型的维度

不同的向量模型输出的向量维度是不同的:

向量模型输出维度说明
doubao-embedding-large-text-2505152048豆包旧版纯文本向量模型,已停止服务
text-embedding-v4(阿里)1024阿里当前最新文本向量模型
doubao-embedding-vision(豆包)多种可选豆包新版图文向量模型

如果你的旧索引是用 2048 维度建的,现在换成了 1024 维度的模型,那重建索引时就会报错(见第五节)。

3.2 在值集中添加新维度(如果需要的话)

新建模型对接账户时,当你选择了”向量-阿里”这个模型类型后,系统要求你选择一个维度值。如果下拉菜单中找不到 1024 这个选项,说明值集中没有这个维度的配置。

操作路径:

系统管理 > 值集管理 > 搜索”向量模型维度”(或类似名称) > 在值集值列表中添加一条新记录,值填写 1024,含义填写”阿里向量模型维度”或其他便于识别的名称。

添加完成后回到模型对接配置页面,刷新后 1024 就会出现在下拉选项中了。

3.3 新建模型对接账户

在”模型对接配置”页面,点击”新建”按钮,填写以下信息:

字段填写内容说明
账户编码JACK-TEXT-EMBEDDING-ALI自定义,建议有意义的命名
模型分类向量-阿里选择阿里文本向量模型分类
模型类型text-embedding-v4选择对应的阿里模型
维度1024选择刚添加到值集中的维度
ak/sk等凭证根据实际情况填写阿里云的API访问凭证

配置完成后点击”测试”按钮,确认返回正确的向量值,表示对接成功。

3.4 创建新的模型组合

在”模型组合配置”页面,点击”新建”:

– 组合名称:例如 “Jack文本向量组合-阿里”

– 模型角色:文本向量

– 策略选择:轮询(如果有多个模型需要均衡)或优先级

– 关联模型:选择刚才新建的阿里向量模型对接账户

创建完成后点击”测试”,验证组合可用。

3.5 设置为默认文本向量模型

在”全局选项配置”页面,找到”默认文本向量模型”配置项:

点击编辑,将原来的默认向量组合改为刚创建的”Jack文本向量组合-阿里”

保存并确认弹窗

四、第二步:清理旧索引并重建

换了向量模型后,旧的索引映射(mapping)依然保持着旧模型的维度设定(如2048),与新模型(1024)不匹配。因此需要清理旧索引,让系统重新创建。

4.1 查看并释放旧索引

在”向量库集合管理”页面,可以看到所有已有的索引,通常包括:

haip_doc_chunks_0 文档索引

haip_question_index_0 问题索引

haip_dictionary_value_0 词典索引

haip_feature_word_0 特征词索引

haip_summary_index_0 摘要索引

逐个点击操作列的”释放”按钮释放索引。释放后索引会出现在底部列表中,再点击”删除”彻底移除。注意:释放和删除是两步操作,缺一不可。

4.2 检查文档同步状态

清理索引后,导航到”文档库管理”页面,你会发现文档的”状态”列仍然显示”已同步到向量库”或”已同步到ES”。这是因为文档表中记录的状态缓存未被清理。重新同步时会自动更新状态,不影响后续操作。

4.3 执行同步

在文档库管理页面,可以选中一个或多个文档,点击”同步处理” > “选择同步” 进行单文档测试,或点击”全部同步”批量重建索引。系统会重新读取文档内容、切片、调用向量模型生成embedding并写入新的ES索引。

五、常见问题一:向量维度不匹配(Failed: X document(s) failed to index)

5.1 错误现象

在执行文档同步时,右下角弹出红色错误提示:

“资源同步失败 – 内容同步(向量库) – Failed: 10 document(s) failed to index.”

点开文档的同步信息详情,可以看到更具体的错误:

“The [dense_vector] field [embedding] in doc … has a different number of dimensions [1024] than defined in the mapping [2048].”

5.2 原因分析

ES向量索引的mapping中预定义的向量维度是2048(来自原来的豆包模型),但新模型阿里 text-embedding-v4 输出的向量维度是1024。写入时维度不一致,ES拒绝写入。

5.3 解决方法

按照第四节的步骤,在值集中添加1024维度 → 新建维度为1024的模型账户 → 新建组合 → 设为默认 → 删除旧索引 → 重建同步。新索引创建时会自动按新模型维度建立mapping。

⚠️ 关键注意点:向量维度一旦在模型对接账户中配置,后续不可修改。如果要换维度,只能新建一个模型对接账户,不能编辑原有的。

六、常见问题二:PDF图片识别失败(调用HKMS执行文件切片时发生错误)

6.1 错误现象

执行同步后,右下角弹出错误提示:

“调用HKMS执行文件切片时发生错误: I/O error on POST request for http://hzero-hkms:18080/kms/loader/v2/process_file: Timeout”

或:

“调用HKMS执行文件切片时发生错误: Failed: 67/19 document(s) failed to index.”

查看hzero-hkms容器日志,会发现大量WARNING级别的报错:

“response from Hzero API: {failed: True, code: haip.error.arrange.account_config.not_exists, message: ‘模型{0}不可用,请重新选择其他模型。’}”

6.2 原因分析

这个错误的根本原因不是向量模型的问题,而是PDF处理流程中的一个关键环节:

HKMS在执行文档切片(process_file)时,对于PDF文件中的图片,需要调用一个多模态大模型来解释图片内容(图片说明/OCR)。这个图片识别走的是”全局选项配置”中的”图片识别模型”配置,而不是”默认对话模型”。

如果你的”图片识别模型”组合中配置了已下架或不可用的模型(例如kimi-2.5已下架),图片识别就会失败,进而导致整个文档切片处理异常并超时。

6.3 解决方法

步骤1:在”模型组合配置”中找到当前配置为”图片识别模型”的那个组合。

步骤2:检查该组合中包含的模型是否都可用(特别是有没有已经下架的模型)。

步骤3:如果某个模型已不可用,在组合中禁用它或切换到其他可用的模型(例如doubao-seed-1.8)。

步骤4:重新测试组合是否可用(点击测试按钮)。

步骤5:确认”默认对话模型”不需要修改,可以继续保持使用纯文本对话模型(如deepseek-V3),因为”图片识别模型”是独立配置的,两者互不干扰。

步骤6:重新执行文档同步(选择同步或全部同步)。

七、完整操作流程一览

以下是更换向量模型后、重建索引成功的完整操作流程,按顺序执行即可:

序号步骤操作位置说明
1确认新模型的向量维度模型文档/阿里官网例如阿里 text-embedding-v4 = 1024 维
2值集中添加新维度(如需)值集管理 > 向量模型维度如果维度选项不存在,先添加
3新建模型对接账户模型对接配置选择模型分类、类型、维度
4新建模型组合模型组合配置关联刚建的模型账户
5设为默认文本向量模型全局选项配置修改默认文本向量模型配置项
6检查图片识别模型是否可用模型组合配置若有已下架模型,更换或禁用
7释放并删除旧向量索引向量库集合管理逐条释放后再删除
8执行文档同步文档库管理选”选择同步”测试或”全部同步”批量
9验证知识问答功能AI对话/知识问答确认能正确检索文档内容

八、避坑指南与关键要点

8.1 关于向量维度

向量维度一旦在模型对接账户中配置,后续不可修改

如需更改维度,只能新建一个模型对接账户

新建账户时如果维度选不到,先去值集管理中添加

同一个向量模型可能有多个维度版本,务必确认正确的值

8.2 关于模型组合中的已下架模型

AI模型厂商经常下架旧版本模型,下架后虽然账户还在,但实际调用会失败

检查模型组合时,不仅要看是否有模型,还要看模型是否仍然可用

如果一个组合中有多个模型,其中一个不可用会导致整个组合失败吗?取决于策略配置。轮询策略下如果轮询到已下架模型就会失败,建议禁用或移除已下架的模型。

8.3 关于图片识别模型的独立配置

PDF中的图片识别走的是”图片识别模型”配置,不是”默认对话模型”

这意味着你可以在对话中使用纯文本模型(如DeepSeek-V3),同时使用多模态模型处理PDF图片

两者互不干扰,不需要为了文档同步而修改默认对话模型

8.4 排查思路总结

如果文档向量索引重建失败,建议按以下顺序排查:

第一步:查看hzero-hkms的容器日志,找到具体的错误信息

第二步:如果是”dimensions mismatch”相关错误,检查向量维度是否匹配

第三步:如果是”file切片超时”或”model not exists”相关错误,检查图片识别模型的配置

第四步:修复后重新执行同步测试

九、总结

更换向量模型后重建索引,本质上是处理两个层面的问题:一是”数据格式”层面——新模型输出的向量维度与旧索引mapping不一致;二是”模型调用”层面——图片识别依赖的模型是否可用。

两个问题都解决后,文档向量索引重建和知识问答功能就能正常工作。希望本文能帮助你在遇到类似问题时,更快地定位和解决问题。

—END—

附图:

作者: Jack.shang

jack.shang 程序员->项目经理->技术总监->项目总监->部门总监->事业部总经理->子公司总经理->集团产品运营支持