嵌入流水线
嵌入流水线是把收集文档、切分成小块、转换成嵌入(承载含义的数字列表)并存入向量数据库这一系列过程自动串联起来的工作流程。要让 RAG 或语义搜索正常运作,必须先做好这项准备。
通俗解释 这类似于图书馆新书入馆时进行分类、制作索引卡、上架的整理工作。不同的是,图书管理员是亲手写下主题词,而这条流水线由 AI 模型把含义转换成数字记录下来。
工作原理
首先收集公司内部 Wiki、PDF、网页等原始文档。接着清理表格、页眉等冗余内容,并把文档切分成便于搜索的小块(分块)。嵌入模型把每个小块的含义转换成数字列表(向量),并与来源、日期等元数据一起存入向量数据库。用户提问时,提问也用同一模型转换成向量,然后找出相近的小块交给 LLM。
为什么重要
RAG 的回答质量归根结底取决于“检索到什么”,而可供检索的材料正是由这条流水线预先准备好的。块切得太大,会混入不相关的内容;切得太小,前后文语境就会丢失。对于文档不断变化的公司来说,这不是做一次就结束的事,而需要持续运行,只挑出发生变化的文档重新处理。因此要把它作为“流水线”而不是一次性脚本来管理。
注意事项
更换嵌入模型后,旧向量和新向量无法相互比较,所以必须把已存储的文档全部重新做嵌入。同一文档被多次存入会使搜索结果向一侧倾斜,因此需要去重。含有个人信息的文档应在存储前做去标识化处理,或附上访问权限信息。如果不定期评估搜索效果,即使质量悄然下降也很难察觉。
上线前检查项
数据
- 是否避免了同一文档被重复存入
- 是否在存储前过滤个人信息
- 是否一并存储访问权限信息
运维
- 是否只挑出变化的文档重新处理
- 更换模型时是否有全量重新嵌入的计划
- 是否定期评估搜索质量
示例
假设要做一个公司内部规章聊天机器人。每天夜里检查人事、安全规章文档,只挑出新变化的文档按段落切分,做嵌入后更新到向量数据库。员工问“居家办公怎么申请?”时,聊天机器人会在预先存储的块中找出最接近的内容,以此为依据作答。如果文档更新滞后,聊天机器人就会按旧规章回答,因此让流水线稳定运行本身就是在管理回答质量。