什么是 索引器(Indexer)?
更新于
索引器(Indexer)是把处理后的文档转换为持久化检索记录,并将文本、向量嵌入、稀疏特征、元数据或关系写入一个或多个可搜索存储的管线组件。
快速了解
| 规范文档 | 官方规范 |
|---|
工作原理
用期望状态对账已索引状态
把每次摄取结果视为按稳定文档或分块 ID 建立的期望清单。清单中消失的记录可能需要删除,相同 ID 但版本变化的记录需要 upsert,版本未变的记录则可跳过。这比只追加写入更安全,因为它能处理重命名、过滤和来源删除。所有操作都应具备幂等性,避免超时重试生成重复记录。
为每个检索兼容边界建立版本
稠密检索要求索引端与查询端使用兼容的嵌入模型、预处理、向量维度和相似度约定;稀疏分析器、元数据 Schema 与分块策略也会改变查询行为。应把这些值写入索引清单。遇到破坏性变化时,构建独立版本、完成验证后再显式切流,并保留回滚窗口,不能把不兼容记录混写在原索引中。
面向部分失败和可验证切换设计
混合索引可能把向量、词法字段和元数据写入无法共享事务的多个系统。应以唯一运行 ID 暂存任务,记录逐条结果,只重试失败且幂等的操作,并暴露对账计数。切流前对比期望与实际 ID,抽样检查权限和内容哈希,运行检索测试,并验证删除已传播;一次批量请求成功不能证明索引完整。
主要特点
- 负责准备和持久化写入,数据库负责存储与搜索执行
- 使用稳定记录 ID、来源版本及幂等 upsert 和删除语义
- 按需携带文本、向量、稀疏字段、元数据、权限和血缘
- 在索引清单中固定嵌入、分析器、分块和 Schema 兼容信息
- 支持分阶段重建、显式切流、回滚和全量对账
- 暴露逐条失败和完整性,而不是掩盖批次中的部分成功
常见用途
- 为 RAG 检索器写入带权限的分块和向量
- 维护用于混合搜索的同步词法记录与向量记录
- 更换嵌入模型或分块策略后构建新的索引版本
- 删除由已移除或已撤权来源派生的全部记录
- 在蓝绿切换前比较索引清单和检索质量
示例
Loading code...常见问题
索引器和向量数据库是一回事吗?
不是。向量数据库只是可能采用的一种存储与搜索后端。索引器是写入侧管线组件,负责准备身份、向量、文本字段、元数据和权限,再把变化应用到一个或多个后端。同一个索引器可以同时协调向量存储与词法搜索引擎。
什么样的索引操作才具备幂等性?
使用同一稳定记录 ID 和版本重复执行操作后,存储应收敛到相同状态且不产生重复。实现时需要确定性 ID、upsert 语义、显式删除和持久化运行清单。每次重试都生成随机 ID 会破坏幂等,也让过期记录难以定位。
RAG 索引什么时候需要新版本?
当变化会使新旧记录不兼容或无法公平比较时,应创建新版本,例如更换嵌入模型或维度、Tokenizer、分块策略、分析器,或修改破坏兼容性的元数据 Schema。普通内容更新通常可以在同一版本内做幂等 upsert。
索引器如何传播来源删除?
维护每条派生记录到来源 ID 的关系。来源删除或失去授权时,枚举并删除全部向量、词法、图和元数据记录,再验证其确实不存在。定期执行期望状态与实际状态对账,可以发现故障期间丢失的墓碑事件。
切换检索流量前如何验证新索引?
对比期望与存储中的记录数量和 ID,检查失败批次,抽样核对内容哈希与权限,验证向量维度和模型标识,并运行固定检索评测。所有检查通过后再切流,同时保留旧索引和明确的回滚路径。