昆仑弟子_面霸
07-16·后端开发·10年+
面试吊打面试官
面试官:看你做过RAG知识库。文档更新怎么处理?我:先区分更新类型。新增、修改还是删除面试官:修改怎么判断?靠文件名?我:给文档算哈希,再按分块算哈希。文档变了,只处理变化的块面试官:原来的向量怎么办?我:每个块都有稳定ID。一般是文档ID加块位置。旧块先标记失效,新块写入成功后,再删除旧向量面试官:为什么不直接删?我:怕中间失败。删完了,新向量没写进去,线上就搜不到了面试官:那更新期间,用户会不会搜到新旧两份?我:不会,有版本号。查询只读当前生效版本面试官:文档删了呢?我:先做软删除。元数据里标记不可检索,再异步清理向量、关键词索引和缓存面试官:一份文档改了一句话,分块位置全乱了呢?我:不能只靠块序号。会结合标题路径、段落位置和内容指纹做匹配。实在匹配不上,就重建这份文档面试官:怎么证明更新真的成功了?我:看三层。任务有没有成功,索引数量是否一致,典型问题能不能召回新内容。还要抽样检查删除内容是否还能被搜到面试官:你实际踩过什么坑?我:最麻烦的是只更新向量库,没清查询缓存。后台明明更新了,用户还看到旧答案。后来我们把文档版本带进缓存键,版本切换时主动失效缓存
发布于 广东
6
2
5
未登录
友善发言
image-upload
评论
加载中