news 2026/10/25 16:06:28

套娃向量两级检索:全维重排救不回候选集之外的文档

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
套娃向量两级检索:全维重排救不回候选集之外的文档

把 3072 维截成 256 维,第一轮只取 100 个候选,再加载全维重排,这条链路很容易讲清,也很容易被误解成“既省内存又绝对无损”。关键限制是:全维重排只看得到第一轮留下来的文档。

Matryoshka Representation Learning 让表示在训练时适配不同粒度。它不是说任意一个向量模型,随便截掉后半段都保留同样的语义。MRL 原论文 的研究结果有自己的模型与任务条件,不宜直接替换成私有知识库的性能表。

两份成本账,不能只记低维索引

低维索引常驻内存,全维向量放在磁盘或另一层存储,这样才有机会减少内存驻留。若实现里仍把全库完整向量存在 Python 字典中,就没有演示存储分层。磁盘点读还会引入 I/O、缓存与并发控制成本,不是“全维点积很短,所以端到端免费”。

评测时保留三份结果:全维精确搜索作为参考、低维候选池、候选池内全维重排。第一份与第三份的差异可以帮助区分候选遗漏和重排计算的问题。再单独比较 ANN 与低维精确搜索,避免把近似索引误差也归因于维度截断。

一个只有两份文档的反例

A 与 B 在第一维相同,低维排序只能按稳定规则打破平局。如果候选池只有一个名额,可能恰好留下 A;完整向量明明能认出 B,却没有机会看到它。例子的数字是手工构造,目的是证明限制存在,不是衡量发生频率。

内图的全维存储与低维驻留是两层部署概念;本地代码为了展示排序反例使用小字典,不能据此声称已经节省真实内存。

import math def unit(v): norm = math.sqrt(sum(x*x for x in v)) if norm == 0: raise ValueError("zero vector") return [x/norm for x in v] def dot(a, b): if len(a) != len(b): raise ValueError("dimension mismatch") return sum(x*y for x, y in zip(a, b)) vectors = {"A": [0.8, 0.6], "B": [0.8, -0.6]} query = [0.8, -0.6] def cascade(candidate_k): if not 1 <= candidate_k <= len(vectors): raise ValueError("invalid candidate depth") q_low = unit(query[:1]) candidates = sorted(vectors, key=lambda d: ( -dot(unit(vectors[d][:1]), q_low), d))[:candidate_k] return sorted(candidates, key=lambda d: (-dot(unit(vectors[d]), unit(query)), d)) assert cascade(1) == ["A"] assert cascade(2)[0] == "B" assert dot(unit(vectors["B"]), unit(query)) > dot(unit(vectors["A"]), unit(query)) print("candidate_k=1 misses B; candidate_k=2 reranks B first")

例子跑通以后,还要验证什么

这段代码已在本地 macOS、CPython 3.9.6 下运行,实际输出为candidate_k=1 misses B; candidate_k=2 reranks B first。它验证的是例子中的数据约束与分支,不包含线上服务的吞吐或延迟测量。

没有使用经过 MRL 训练的模型、真实磁盘向量存储或 ANN。上线方案要记录模型支持的维度、截断后归一化方式、候选保真率、全维读取字节数和冷缓存尾延迟。若目标只是减少向量字段体积,也不能把索引拓扑和服务进程的所有内存等比例减掉。

延伸阅读

  • Matryoshka Representation Learning:2022 年提出的表示学习方法;本文未复现论文训练。
  • Universal I/O in Qdrant:2026 年 10 月 12 日对本地与远程读取成本差异的工程说明,不引用其延迟为本文测量。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/25 16:05:13

代码骨架哈希能做什么,不能证明什么

把两个文件的AST压成一个SHA-256摘要&#xff0c;然后说“相似度85%”&#xff0c;中间缺了一整套定义。哈希能回答特定表示是否相同&#xff0c;不能直接回答相似程度&#xff0c;更不能判断代码许可是否合规。 先给“骨架”一个小而明确的定义 下面只取函数名、参数个数和结…

作者头像 李华
网站建设 2026/10/25 15:59:41

分布外泛化(OOD)综述:从表示、模型到优化的方法体系与评估避坑

简介&#xff1a;这份资源是清华大学崔鹏团队等撰写的《Towards Out-Of-Distribution Generalization: A Survey》综述论文PDF&#xff0c;面向深度学习研究者、算法工程师及关注模型鲁棒性的高年级学生&#xff0c;系统回应现实场景中训练与测试分布不一致、i.i.d.假设难以成立…

作者头像 李华
网站建设 2026/10/25 15:47:15

ibaAnalyzer实战:从数据读取到批处理导出的完整指南

简介&#xff1a;ibaAnalyzer_v7.3.5 是面向工业数据分析与测量数据处理人员的专业分析工具安装包&#xff0c;适合从事设备信号分析、测试数据评估及系统性能排查的工程师使用。压缩包共 5 个文件&#xff0c;约 127.82MB&#xff0c;包含 64 位与 32 位两套 Windows 安装程序…

作者头像 李华
网站建设 2026/10/25 15:39:15

视觉语言模型对象幻觉问题:认知不确定性检测与抑制方法

1. 项目概述&#xff1a;视觉语言模型中的对象幻觉问题研究2025年NIPS会议上这篇关于视觉语言模型中对象幻觉问题的论文&#xff0c;直指当前多模态AI系统的一个核心痛点——当模型面对模糊或缺失的视觉信息时&#xff0c;会"自信地"生成实际上并不存在的物体描述。这…

作者头像 李华
网站建设 2026/10/25 15:33:00

YOLOv9四分类路面状态数据集实战与避坑指南

简介&#xff1a;面向智能交通、自动驾驶及道路养护场景的雨雪天气路面状况数据集&#xff0c;覆盖结冰路面、雪地、下雨湿滑与干燥路面四类典型路况&#xff0c;可用于训练和评估YOLOv9等目标检测模型&#xff0c;适合算法工程师、科研人员以及计算机视觉学习者使用。整体zip压…

作者头像 李华
网站建设 2026/10/25 15:30:20

YOLOv8自定义数据集训练实战:从数据准备到模型部署

1. 项目概述&#xff1a;YOLOv8自定义数据集训练全流程实战在目标检测领域&#xff0c;YOLOv8作为Ultralytics公司推出的最新版本&#xff0c;凭借其卓越的速度-精度平衡和开发者友好特性&#xff0c;已成为工业界和学术界的首选框架之一。不同于官方文档中标准化的演示流程&am…

作者头像 李华