从 RAG-Fusion 面试题延伸:多条查询怎样避免问成同一个问题
给同一个问题生成五条搜索语句,不代表获得了五种视角。它们可能只是同义改写,仍然全在寻找同一类内容。多查询的价值,应该体现在原问题所需证据是否更完整,而不是日志里出现了多少次检索调用。
给同一个问题生成五条搜索语句,不代表获得了五种视角。它们可能只是同义改写,仍然全在寻找同一类内容。多查询的价值,应该体现在原问题所需证据是否更完整,而不是日志里出现了多少次检索调用。
看到 Nginx 状态页显示几十个连接,能不能说当前每秒正在处理几十个请求?不能。连接、请求和速率是不同对象,瞬时状态与启动以来的累计值也不能混算。stubstatus 的字段不多,真正的考点是每一项究竟在数什么。
一棵二叉树有九个叶节点、四个只有一个孩子的节点,能不能算出总节点数?这类题不需要猜树的形状,关键是把“节点分几类”和“树一共有几条边”联系起来。先说明这里的二叉树,每个节点最多两个孩子,并不是每个非叶节点都必须有两个孩子。
同一个问题换几个表达再检索,结果未必能直接拼起来。不同列表有自己的顺序,分数尺度也可能不同。RAG-Fusion 把多查询召回与排名融合连接起来,其中常见的 RRF 规则不比较原始分数,而是根据文档在各列表里的名次累计贡献。
重排模型只允许处理一小批候选时,最简单的方案是把初排分数最高的若干条塞进去。但如果前面的条目都来自同一份文档的相邻切块,有限预算可能被相似内容占满,另一条检索路径找到的独立证据根本没有机会参与比较。
分布式环境里,客户端怎样知道某个资源现在在哪里?一种办法是提前约定一个稳定名字,再让这个名字指向可读取的定位信息。ZooKeeper 的层次化命名空间可以承担这种协调入口,但不能因此把它理解成任意规模的文件系统或万能业务主键库。
const int p 和 int const p 只差一个位置,却限制了不同的修改动作。最容易犯的错误,是把“不能通过这个指针改对象”,听成“这个对象在任何地方都不能变”;或者把指针本身固定,误认为它指向的值也固定。
搜索结果主题都对,却把真正能回答问题的段落排在后面,这时可以考虑 Rerank。但它不是一个放在检索后面就能自动修复所有错误的按钮。理解它,先要区分两个任务:从大量文档中找出候选,以及在已有候选里做更细的比较。
检索问题改写得更完整,结果却更不符合用户要求,这并不罕见。原因可能不是向量模型太弱,而是改写时悄悄更换了问题。尤其当生成内容带着合理的背景补充时,新增细节很容易被后续流程误当成用户已经确认的条件。
Spring 帮你创建对象,但一个 Bean 从配置出现到能够被业务使用,远不止调用一次构造器。答生命周期题,最容易出错的是把“修改定义”“创建实例”和“初始化后包装”混成同一段流程,最后说不清扩展点到底作用于谁。