粉丝4783获赞1.6万


挑战,每天讲透一个大模型项目实战知识点,今天讲 r a g 核心架构解析,重排序混合剪组来。同学们,今天咱们不聊虚的, 直接来看一个 red 面试里最坑的问题。大家看这行字,既然 rerun 重排序的效果这么好,为什么我们不干脆把库里所有的数据都拿来 rerun 呢?哎,你们想啊, rerun 准吗?对不对? 那既然准,我为什么还要搞什么向量剪索做粗筛,直接全量 ray rank 不 就完了吗?一步到位多好? 大家先在心里想想,是因为技术做不到,还是因为太贵?好,带着这个疑问,咱们往下滑看第一张图,看完你就懂了。大家好,我是彭宇。来 看这个漏斗,这张图非常直观的解释了咱们为什么要分两步走。大家看左边这个漏斗的形状。最上面这层是咱们的全量知识库,假设你有一千万条数据,如果咱们直接用 rerun 模型去跑这一千万条数据,会发生什么?我告诉大家,你的服务器会直接冒烟。 因为 rerun 模型太慢了,它属于深度计算,所以咱们必须得有个海选的过程。大家看中间这层绿色和橙色的部分。第一步, 我们先用向量剪辑 b i encoder 或者关键词剪辑,快速地从一千万条里捞出最靠谱的 top 幺零零。 这一步我们要的是速度,是零烂勿缺。第二步,也就是漏斗下面这层,我们才把这一百个入围选手交给重排 cross encoder 去做精细的打分,最后选出 top 五给大模型。 大家注意看右边这个轴,从上往下数据量在变小,但是精度在变高,同时计算成本也在急剧上升。所以这个漏斗架构的本质, 其实就是用低成本的粗筛去换取高成本金牌的入场券。这下理解为什么要分两步走了吧?好,那有同学可能又要问了,老师,你刚才说向量解锁快,但不准, re rank 准,但是慢,这到底是为什么?他俩底层到底差在哪了?这个问题问的好,咱们来看底层架构, 这才是面试官最想听的干货。大家看左边这个 b i encoder 双塔模型,注意看图中间那条虚线是不是断开的,左边是 quarry, 右边是 dock。 他 俩在进模型的时候是各走各的路,完全不认识对方,直到最后生成了两个项链,才在最上面碰个头算一下距离。这就好比什么呢? 好比相亲的时候只看照片不聊天,速度快是快,但很容易看走眼,对吧?再看右边这个 cross encoder 重排模型,看这个大大的 transformer 盒子, 它把 query 和 doc 拼接在一起塞进去了。在模型内部,每一个字每一个词都在疯狂地交互,这就好比两个人面对面坐下来,深聊了两个小时,这时候什么逻辑关系啊,否定词啊,细节啊,都能被模型捕捉到,所以它准。 但是因为它要处理这种复杂的交互,所以它慢。记住一句话, b encoder 是 行四, cross encoder 是 神四。明白了原理,咱们最后来看看在公司里写代码、 做工程的时候,这个流程到底长什么样?大家看这张流水线图,在真实的生产环境里,我们通常不会只用向量剪索, 因为向量有时候对专有名词很不敏感,所以看左边我们会搞缤纷两路,一路是向量剪缩,负责理解语义。另一路是传统的 b m 二十五关键词剪缩负责精确匹配。 哎,那问题来了,向量剪缩出来的分可能是零点八五, b m 二十五出来的分可能是十五点六,这俩分数单位都不一样,怎么加在一起?这时候就要用到这个数,排名融合,大家不用背公式, 只需要记住他的核心思想,我不看你的绝对分数,我只看你的排名,你是第一名,我就给你加个大分,你是第十名,我就加个小分,这样就把两路解锁完美融合在一起了。最后看右边融合后的 top 幺零零,再送给 rerun 截断曲,前五齐活。好,最后咱们快速总结一下, 如果面试官问你 rerun 的 解锁优化,你就把这三点甩给他。第一,架构上一定要提漏斗模型,用粗筛换金牌的时间。 第二,原理上要能说出双塔独立编码和单塔全交互的区别,这是得分点。第三,工程上别忘了混合解锁加 rrf, 这是现在落地的标配, ok! 关于 re rank 的 核心架构,咱们今天就讲到这,这张图大家可以截图保存一下,复习的时候看一眼就全想起来了。



大家好,我是架构师与局,前面两期我们讲了 r g 的 核心原理和向量数据库,很多朋友问,有了向量库,文档怎么切分才合理?直接按次数切就行了吗? 检测出来的结果不够准确该怎么办?今天这期视频,我们来深入讲解文档切分与解锁策略,这是决定 r g 系统效果的决定因素。 首先我们引入切分的重要性,你可能觉得文档切分不就是把文档按字数切开吗?有什么难的?但实际上切分质量直接决定 r g 效果的上阶。看这个对比, 好的切分保持语义完整,上下文清晰准确的能够达到百分之五十以上,而差的切分句子被截断,信息分散准确率连百分之五十都达不到。就像你读一本书,如果章节被随机打散,你还能理解内容吗?同理, ai 也需要语义完整的信息才能够回答出准确的答案。 那接下来是四种切分方法,那么文档应该怎么切分呢? 这第一种是固定长度切分,按照次数切分,简单高效,但可能截断羽翼,也适合于通用文档给三星。 第二种是羽翼切分,按段落章节切分,保持羽翼完整,虽然实现复杂一点,但效果是最好的,我们五星推荐。第三种是地柜切分,多级切分策略,平衡大小和羽翼需要调参,四星推荐 他更麻烦一点。第四种是专用切分,针对代码、表格等特定格式保留结构,我们给到他四星。 那接下来是原数据的设计,切分完成后还要设计好数据,原数据是过滤和排序的基础,核心原数据包括 sales 文档来源,探讨文档标题以及 chapter 标题,还有配置页码以及 target 标签这些,这些字段是必填的实用原数据啊,包括 created at 创建实践,还有 update at 更新实践,还有分类部门这些原数据, 这些支持时效性过滤和权限控制。有了丰富的元数据,你就可以精准过滤,比如只搜索 radis 技术手册,点 pdf 中包含的分布式锁标签的内容,使这个内容定位的更加精准。那第四部分呢?就是啊,解锁策略的眼镜, 第一代是简单的向量解锁,准确率只有百分之六十五。第二代是 topkey 解锁,准确率提升到了百分之七十八。第三代是混合解锁,结合向量和关键词解锁,准确率呢高达百分之八十八。第四代是混合解锁,再加上 rerek 重排序,准确率 就能达到百分之九十五了,从百分之六十五到百分之九十五,这是实现了质的飞跃。第五部分就是混合解锁的原理讲解, 混合解锁的核心思想就是向量解锁加关键词解锁,向量解锁擅长捕捉与异相似性,但对精确匹配不敏感。关键词解锁擅长精确匹配,但理解与异能力弱,两者结合取长补短。公式呢,就是最终分数等于零点五乘以向量相似度,再加零点五乘以 关键词分数,五五开。 long chain 的 这个结架构提供了 in simple library 来实现混合解锁,只需要提供向量解锁器和 m 和 bm, 二十五解锁器设置权重分别为零点五和零点五就可以了。那我们最后 来讲这个 rerun 纯排序,这是两阶段解锁阶段,一是粗照粗牌照回用向量解锁,快速找到 top 一 百个后选文档,耗时约二十毫秒吧。阶段二是金牌排序, 用 rerun 模型对这一百个后选来进行重新打分,得到 top 十就是挑选出一百,再从一百中挑选出十, 耗时一百八十码,属于经排序。嗯,虽然增加了延迟,但准确率大幅提升啊。就在专业文档领域,性能提升要百分之十七,从七十二从百分之七十二提升到了百分之八十九。 我们呢,推荐使用 b j 一 瑞瑞瑞克模型,效果是非常好的。最后我们来总结一下今天的核心内容。第一是切分质量决定, r d 的 效果上线我们优先使用于一切分。第二呢,原数据是加速器,核心字段要填满,使用字段也不能少, 这就涉及了原数据的两个分类,两种原数据。第三是核心的解锁策略的持续演进, topk 到讲到混合解锁,再到瑞典,可准确率从百分之六十五提升到了百分之九十五。第四就是生产环境要优化,查询缓冲,分机缓冲, 还有那个监控指标,一个都不能少,做好这些,你的二 d 系统准确率啊,就有大概率的突破百分之九十。关注我,每天一个 ai 干货,我们下期再见,谢谢大家!