一、论文的研究目标与待解决的实际问题
1.1 问题背景:向量数据库的范围检索需求
范围过滤近似最近邻搜索(Range-Filtered Approximate Nearest Neighbor Search, RFANNS) 是向量数据库的核心原语之一:每个数据对象由一个高维向量和一个数值属性组成,查询同时包含查询向量和属性范围条件,最终返回满足范围条件的 k 个近似最近邻向量。
它的典型应用场景非常普遍:
例如电商用户搜索 “价格在指定区间内、且视觉上与查询图片相似的商品”,多媒体应用检索 “在特定时间区间内出现的相似对象”。这类场景无法用纯 k 近邻搜索满足,必须同时处理向量相似度和结构化范围约束。
但现有主流 RFANNS 方法(如 iRangeGraph、DIGRA 等)都基于明文假设设计,向量、属性、查询全部以明文形式存储和计算。这在外包向量数据库场景下存在致命的隐私风险:
原文摘要明确指出:“existing RFANNS indexes expose vectors, attributes, and queries in plaintext. This assumption is unsuitable for outsourced vector databases, where sensitive data and queries must be protected from an honest-but-curious cloud server.”
简单来说,企业将向量数据库托管在第三方云服务器时,不希望云服务商获取自己的向量数据、属性数据和用户查询内容,但明文索引完全暴露了这些敏感信息。
1.2 核心痛点:隐私、精度、效率的三重矛盾
要实现隐私保护范围过滤近似最近邻搜索(Privacy-Preserving RFANNS, PP-RFANNS),必须同时满足三个相互冲突的目标:
- 安全性:保护向量明文、属性明文、查询明文不被云服务器获取
- 准确性:返回结果的质量接近明文 RFANNS
- 效率:查询速度足够快,计算、存储、通信开销可接受
现有方案都无法很好地平衡这三者:
- 明文 RFANNS 方法:完全不满足隐私要求
- 纯隐私保护 ANNS 方法(PP-ANNS):仅支持纯向量搜索,无法处理范围过滤条件
- 现有方法的简单安全适配:都存在严重的性能瓶颈 —— 加密范围检查和加密距离计算开销极大,且性能对查询选择性(范围覆盖的数据比例)高度敏感
1.3 论文的研究目标
论文核心目标:在诚实但好奇的云服务器威胁模型下,设计一套实用的 PP-RFANNS 方案,系统地解决范围谓词与向量相似度联合处理的安全、精度、效率挑战;同时完整分析方案的计算、存储、通信开销和信息泄漏,并通过实验验证其性能优势。
通俗来说,就是要破解 “加密后传统索引失效、加密计算速度极慢” 的行业痛点,在保证隐私和精度的前提下,让加密向量数据库的范围过滤检索性能接近明文水平,并且可扩展到大规模数据集。
如图,Encrypted Database and Auxiliary Index:加密数据库与辅助索引
数据库所有者(DO)构建了一个隐私保护索引并发给了云服务器(CS);此外数据库所有者将用于陷门生成的密钥发送给授权的查询用户(QU)。论文里数据库所有者(DO)分发给授权查询用户(QU)的「用于陷门生成的密钥」,就是DCPE 陷门密钥 和 DCE 陷门密钥。


图:PP-RFANNS的系统模型
二、该研究对产业发展的重要意义
2.1 解锁向量数据库的云外包合规能力
向量数据库是大模型检索增强生成(RAG)、多模态检索、推荐系统的核心基础设施。出于成本和运维考量,企业普遍倾向于使用云托管向量数据库,但《数据安全法》《个人信息保护法》、欧盟 GDPR 等法规都要求对敏感向量数据(用户特征、商品机密、查询内容等)进行加密保护。
本研究首次实现了加密向量数据库上高效的范围过滤相似度查询,让企业可以在满足合规要求的前提下,将敏感向量数据库外包给云服务商,直接推动了向量数据库云服务的普及和落地。
2.2 突破隐私计算检索的性能瓶颈
当前隐私计算在向量检索场景的最大落地障碍就是性能:加密后的检索速度通常比明文慢 2~3 个数量级,完全无法支撑高并发业务。
论文提出的方案在 Recall@10=0.95 时,查询吞吐量相比现有安全方案提升了至少两个数量级,让隐私保护向量检索从 “理论可行” 走向 “业务可用”,能够支撑电商检索、内容推荐、金融风控等实时性要求高的场景。
2.3 奠定混合查询隐私保护的技术基础
当前搜索的主流趋势是 “向量相似度 + 结构化条件” 的混合查询(如 “找 2024 年发布、和这张图相似的商品”“找 100-200 元之间、语义相近的文案”)。
本研究是首个系统研究加密向量数据库上范围过滤 ANNS 的工作,其 “本地条件处理 + 云端向量检索” 的解耦思路,为后续更复杂的多条件混合查询隐私保护奠定了技术框架。
三、论文提出的核心方法与创新优势
论文提出一种又快又安全的 PP-RFANNS 方案,该方案将范围定位与加密向量搜索解耦
##补充:什么是HNSW? (Hierarchical Navigable Small World,层次化可导航小世界)

一、核心思想
HNSW 是多层有向图结构,本质是一张分层的 “向量邻居关系图”,检索就是从顶层入口点开始,一层一层往下跳,每次都往离查询更近的节点走。类比多层地图:
- Layer‑0(最底层):全部向量都在这里,节点密集,边都是短距离连接,做精细局部搜索;
- 往上每一层(Layer‑1、Layer‑2… 顶层):节点数量指数变少,节点稀疏,边是长距离跳转,相当于高速主干道,快速粗定位大致区域arXiv。
类比:坐飞机(顶层,远距离快速移动)→ 坐地铁(中层)→ 步行(底层,精细找目标)。 每个向量(节点)随机分配最大层数,服从指数分布:大部分向量只在第 0 层;少数向量出现在高层,充当 “高速枢纽”。
区别:跳表是有序链表;HNSW 是图,每个节点有多个邻居,不是只有前后指针。
二、两个核心流程:索引构建(插入)、查询搜索
1. 索引构建(插入一个新向量)
- 随机分配最大层数:按指数分布,随机得到该向量最高可以存在哪一层 L。 绝大多数向量最大层数 = 0;只有少量向量跑到高层。
- 从顶层往下逐层搜索:在每一层,找到当前层离新向量最近的
efConstruction个候选邻居; - 双向建边:在该向量的每一层,选择最多 M 个最近邻居,建立双向边;
- 边剪枝:如果邻居节点的边超过 M,只保留距离最近的 M 条,删掉多余边,防止节点边爆炸。
参数含义:
- M:每个节点每一层最多向外连多少条边(常用 16‑48),越大图越密、内存越高、召回越好、构建更慢;
efConstruction:构建索引时每层搜索候选池大小,越大构建越慢,索引质量越高,默认 200。
2. 查询搜索(给定 query 向量,找 top‑k 近邻)
- 从最高层固定入口点开始;
- 当前层执行贪心束搜索(beam search):维护候选列表,不断访问邻居,不断向离 query 更近的节点移动;直到本层找不到更近点(到达局部最优);
- 把当前层找到的最优节点,作为下一层的入口点,往下一层继续搜索;
- 一直落到 Layer‑0 底层;
- 在底层,用
efSearch大小的候选池,收集全部候选,返回距离最小的 k 个结果。
efSearch:查询时的候选池大小。
efSearch越大,遍历更多节点,召回率越高,但耗时变长;- 调参核心:在延迟和召回之间权衡,RAG 一般取 32‑128。
注意:HNSW 是近似算法,不保证一定找到全局真正最近邻,只是大概率找到。
三、关键概念辨析
1. 小世界网络(Small‑World)
小世界:少量长距离边,大量短距离边;任意两点之间经过很少跳数就可达。
- 普通图:要么全部短边(跳数巨多),要么全部长边(局部找不到)。
- HNSW 高层提供长距离跳转,底层提供局部精细搜索,就是小世界特性。
2. 贪心搜索 vs Beam Search(束搜索)
- 朴素贪心:只保存当前最好一个点,很容易掉进局部最优,错过真正最近邻;
- HNSW 用beam search:维护一个候选列表(大小由 ef 控制),不只看当前最优,保留一批有希望的候选点,大大降低陷入局部最优的概率
##通俗解释PP-RFANNS
分背景、核心思路、技术细节、效果和贡献四块讲。
一、先搞懂:这是在解决什么问题?
先举个生活化的例子: 你在电商 APP 搜「和这条裙子款式相似,且价格在 100~200 元之间的商品」:
- 款式相似 = 向量相似搜索(把图片 / 文字转成高维向量,找距离近的)
- 价格 100~200 元 = 范围过滤(按数值属性筛结果)
- 两者合起来,就叫 RFANNS(范围过滤近似最近邻搜索)
但如果商家把商品数据存在第三方云服务器上,不想让云服务器看到商品的款式向量、价格,也不想让它知道你搜了什么价格、什么款式,就要做「隐私保护版」,也就是 PP-RFANNS。
之前的隐私方案都有明显缺陷:要么得反复做加密的范围校验,速度特别慢;要么得搜完整库再过滤,浪费算力;要么安全等级不够。这就是原文里说的「limitations(局限)」。
二、核心思路:把「范围过滤」和「向量搜索」拆开干
他们方案最核心的一句话就是:decouples range localization from encrypted vector search(把范围定位和加密向量搜索解耦)。
怎么拆?用一套「N 叉树 + HNSW 混合索引」,用户和服务器分工协作:
-
用户本地放 N 叉树:专门管范围过滤
- 你可以把 N 叉树理解成一个「价格分段目录」:根节点是全量价格区间,下面分 0-50、50-100、100-200… 再往下逐层细分,直到每个小段对应一批商品。
比如:根节点对应 [1,10000] 元全量区间。
第二层拆成 [1,5000]、[5001,10000] 两个子区间。
继续递归拆分,直到每个叶子节点对应一小段价格区间,例如节点 3 对应 [80,120]、节点 4 对应 [121,160]、节点 5 对应 [161,200]。
每个节点只存「区间范围 + 对应商品 ID 列表」,完全是明文,仅保存在授权用户本地,云端无法获取。 - 这个树只存在用户自己手里,服务器根本看不到具体价格数值。
- 用户发起查询时,先自己在本地把「100~200 元」映射成树里的几个节点(比如刚好对应第 3、4、5 号分段),不用告诉云服务器具体价格是多少。
- 你可以把 N 叉树理解成一个「价格分段目录」:根节点是全量价格区间,下面分 0-50、50-100、100-200… 再往下逐层细分,直到每个小段对应一批商品。
-
云服务器放 HNSW 子索引:专门管加密向量搜索(上文有补充知识点)
- HNSW 你可以理解成「向量的快速导航图」,是目前工业界最快的相似向量搜索结构之一。
- 服务器不存全局的大索引,而是给 N 叉树的每个节点都单独存一份加密的 HNSW 小索引,里面只包含这个价格分段里的商品向量。
云端看不到任何价格数值,只维护「节点 ID → 对应加密向量集合 → 对应 HNSW 子索引」的映射关系。
比如,节点 3 对应HNSW₃,索引了所有 80~120 元商品的 DCPE 加密向量;节点 4 对应HNSW₄,节点 5 对应HNSW₅。每个子索引都是独立的,可以单独执行搜索。 - 用户告诉服务器 “搜第 3、4、5 号节点”,服务器就只去搜这三个对应的小索引,全程不用做任何范围判断,自然省掉了巨量的加密范围校验开销。
三、再提速:「先粗筛,再精排」的两步查询策略
光拆分还不够,他们又设计了 filter-and-refine(过滤 - 精修) 策略,进一步平衡速度和准确度:
-
第一步:粗过滤(快,但精度低) 用一种叫 DCPE 的加密方式,它的特点是:加密之后还能大概判断两个向量谁离查询更近,但算不出精确距离,好处是计算特别快。 服务器用 DCPE 从每个匹配的小索引里快速捞出一批 “大概相似” 的候选结果。
-
第二步:精排序(准,但计算慢,只用在少量数据上) 把所有候选合到一起,用另一种叫 DCE 的加密方式做精确距离比较,选出最终的 top k 个结果。 DCE 能精确比出谁更近,但计算成本很高;好在只需要对粗筛出来的一小撮候选做,整体就又快又准。
四、这么做的效果怎么样?
- 砍掉了最耗时的 “在线加密范围校验” 步骤;
- 把昂贵的精确距离比较,只用到少量候选结果上,算力花在刀刃上;
- 他们在公开标准数据集上测试,在召回率 95% 的常用标准下,查询速度比之前的安全方案快了至少 100 倍(两个数量级)。
五、四个核心贡献(原文列的四点)
- 首次正式定义问题:系统地提出了外包加密场景下的 PP-RFANNS 问题,明确了「安全、准确、高效」三者难以兼顾的核心挑战。
- 提出混合索引结构:N 叉树 + HNSW 的组合,把范围判断放用户本地,向量搜索放服务器,服务器只搜和查询范围相关的子集。
- 设计两步查询策略:DCPE 粗筛 + DCE 精排,兼顾查询效率和搜索精度。
- 完整验证与分析:做了详细的计算、存储、通信、安全分析,大量实验证明方案在不同场景下都优于现有主流方案。
3.1 核心思路:解耦范围定位与加密向量搜索
论文最本质的创新是架构层面的解耦思想:将范围过滤的计算从云端移到本地查询端,让云端仅负责向量搜索,完全不需要执行加密范围检查。
原文摘要表述:“Our approach separates range localization from encrypted vector search: an authorized user maps the query range to a compact set of nodes in a local N-ary attribute tree, and the server searches only the corresponding proximity graph sub-indices over encrypted vectors.”
##通俗解释 范围定位与加密向量搜索
- 查询用户本地保存一棵 N 叉属性树,用于对数值属性进行分层分区
- 收到查询时,用户先在本地明文计算,将查询范围映射为 N 叉树上的若干节点(这些节点的属性区间完全落在查询范围内)
- 云端只需搜索这些节点对应的加密向量子索引,无需判断每个向量是否满足范围条件
- 从根源上避免了云端昂贵的加密范围检查操作,消除了现有方案的最大性能瓶颈

- N-ary Tree:按数值属性均衡切分区间。一个查询范围被分解为少数“完整落入查询区间”的树节点,且这些节点覆盖全部合格对象、彼此不重叠。
- HNSW(Hierarchical Navigable Small World):高效近似近邻图。每个树节点维护一个仅覆盖该属性区间的 HNSW 子索引。
- DCPE(Distance-Comparison-Preserving Encryption):近似保留距离顺序,适合廉价地做图搜索和候选排序。
- DCE(Distance Comparison Encryption):只暴露候选之间的精确距离比较结果,不暴露实际距离数值,用于最终精排。
##补充知识:AME(Asymmetric Matrix Encryption,非对称矩阵加密)
AME 是面向加密 k‑NN 的密码原语,出自论文 [43] Achieving Practical and Privacy‑Preserving kNN Query over Encrypted Data,属于密文可做精确欧氏距离比较的加密方案。
核心能力
- 非交互、单服务器:云服务器不需要和客户端多轮交互,直接在密文上完成欧氏距离计算、距离大小比较;服务器只得到 “哪个向量距离更近” 的比较结果,看不到明文向量,也看不到明文距离数值。
- 密钥:由一系列随机可逆矩阵、随机掩码构成;数据库向量、查询向量经过矩阵变换 + 随机掩码得到密文。
- 目标:解决外包加密数据库上的 k‑近邻查询,服务器直接完成距离比较,客户端只做加密 / 解密,不承担繁重计算。
和你读的 PP‑RFANNS 论文里另外两个原语对比
| 原语 | 类型 | 能力 | 特点 |
|---|---|---|---|
| AME | 精确距离比较加密 | 密文做精确欧氏距离比较 | 精确,但计算开销大;论文只是引用,没有使用该原语 |
| DCPE | 近似距离比较加密 | 密文做近似距离排序 | 速度快,允许小误差;用于粗筛候选集 |
| DCE | 精确距离比较加密 | 密文做精确距离比较 | 精确,开销高,只对少量候选做重排序;本文方案实际使用 |
在 PP‑RFANNS 论文中的定位
Distance‑comparable methods employ primitives such as ASPE [16,23,35,39], DCPE [9], AME [43], HE [10,38], or DCE [20] to enable distance‑guided search over encrypted vectors.
- AME 只是作为已有相关密码组件被列举,作者没有把 AME 用于自己的方案。
- 原文评价:AME‑ and HE‑based methods incur relatively high computational overhead,即 AME 计算代价高,这也是本文不选用 AME 的原因。
- 本文采用 “DCPE 粗筛 + DCE 精确重排”,用近似加密完成大部分搜索,仅在小规模候选集调用昂贵的精确距离比较,以此平衡效率与精度。
AME 的局限
- 矩阵运算带来较高计算开销,高维向量场景下延迟大;
- 只解决向量距离比较,原生不支持属性范围过滤,无法直接实现 RFANNS;
- 论文没有复用 AME,而是选用了同家族更新的 DCE 作为精确距离原语。
补充:ASPE 是旧的矩阵类加密,存在已知安全漏洞;AME 是改进版本;DCE 又是后续进一步优化的精确距离比较原语。
3.2 关键技术 1:N 叉树 - HNSW 混合索引结构
论文设计了N 叉树 - HNSW 混合索引,将属性范围索引和向量索引分离,分别放在用户端和云端:
(1)索引组成
- N 叉属性树:由数据所有者构建,分发给授权查询用户本地保存。它将数值属性域分层划分为连续区间,每个树节点对应一个属性区间和该区间内的所有向量 ID。
- HNSW 子索引集合:云端为 N 叉树的每个节点,都构建一个对应的 HNSW 向量索引,索引该节点区间内的加密向量。
(2)自底向上的索引构建流程
- 向量双加密:对所有向量分别用 DCPE 和 DCE 两种方式加密,分别用于粗筛和精排
- N 叉树构建:对数值属性排序后,自顶向下递归分区,保证每个子节点的数据量大致均衡,形成平衡 N 叉树
- HNSW 子索引构建:从叶子节点到根节点自底向上构建。构建父节点索引时,以最大的子节点索引为基础,只插入其他子节点的向量,避免从头构建,大幅降低构建开销
这种设计的核心优势:
- 范围判断完全在本地明文完成,云端看不到任何属性值和查询范围
- 云端搜索空间被精准限制在满足范围条件的向量内,无冗余计算
- 图遍历过程中不需要反复做加密范围检查
3.3 关键技术 2:过滤 - 精化两级查询流水线
为了平衡查询效率和精度,论文设计了Filter-and-Refine(过滤 - 精化) 两阶段查询策略,巧妙结合了两种加密原语的优势。
(1)两种核心加密原语通俗解释
- DCPE(近似距离比较保持加密):加密速度快,支持快速距离计算,但只能近似保持距离的大小顺序。适合大规模粗筛,快速缩小候选范围。
- DCE(距离比较加密):可以精确比较两个向量到查询向量的距离远近,但计算开销远高于 DCPE。适合对小候选集做精确重排序。
(2)查询执行流程(在线阶段)
第一步:用户本地做范围映射(全程不碰云端)
用户输入查询:「查询向量 + 价格区间 100~200 元 + 返回 10 个结果」 用户在本地遍历 N 叉树做范围匹配:
- 根节点 [1,10000] 和 100~200 有重叠,继续向下访问子节点
- 节点 [1,5000] 完全包含 100~200,继续向下拆分
- 最终找到区间完全落在 100~200 内的所有节点:节点 3、节点 4、节点 5
对应论文定理 4.1:这些节点里的所有商品,天然满足价格条件,后续云端完全不需要再做范围检查。
用户最终发给云端的只有四类信息:
- 匹配的节点 ID 列表:
[3, 4, 5] - DCPE 查询陷门(用于粗筛)陷门是一种 “查询凭证”,不是密钥,不是密码,不是密文
- DCE 查询陷门(用于精排)
- 返回结果数
k=10
云端全程不知道 100、200 这两个价格数字,只知道要搜索第 3、4、5 号三个子索引。

图:安全索引构建的工作流程,
如图所示,安全索引构建包括三个阶段,即向量加密、N叉树构建和HNSW子索引构建。
###理解陷门 【举例:用陷门做隐私查询】
目标:服务器要能做向量相似度检索,但是不能看见我的原始查询向量 q。
这里有两样东西,千万不要搞混:
- 陷门密钥(Trapdoor Key,SK)【秘密,相当于做令牌的模具,永久保存在本地,绝不发送】
是一套密码学的秘密参数,相当于 “制造令牌的模具”。只有我拥有。 - 陷门 Trapdoor 【查询令牌,发给服务器】
用上面的陷门密钥SK + 我的原始查询向量 q,在本地加工,生产出来的一串数据。
👉陷门就是加工出来的令牌(查询凭证)。
服务器拿到陷门后,可以执行规定运算:拿陷门和数据库里的加密向量做距离比较、跑 HNSW 检索。(服务器有了陷门后,无法反推出我最开始的原始查询向量q是什么)
就像你在家做月饼,想要给小区保安:
原始向量 q = 月饼馅
陷门密钥 SK = 月饼模具
你用模具 + 馅料,在家做出月饼。模具和馅都在你家,不会拿给小区门卫。门卫拿到月饼就能吃,不用知道你怎么做的、原料是什么。

第二步:云端过滤阶段(粗筛,用 DCPE)
云端收到请求后,仅搜索匹配的三个子索引:
- 拿 DCPE 查询陷门,分别检索
HNSW₃、HNSW₄、HNSW₅,每个子索引返回 k₀个候选(比如每个返回 40 个)核心:用 DCPE 陷门作为「查询基准」,在每个 HNSW 子索引的加密向量图里,近似找出离查询向量最近的一批向量。通俗说:你给了云端一个 “查询令牌(DCPE 陷门)”,云端拿着这个令牌,去每一个指定的子图里,快速找出 “和这个令牌最像” 的前 k₀ 个加密向量。
DCPE 陷门的作用,就是给图遍历提供距离判断的依据。 - 把三个子索引返回的共 120 个候选合并,用 DCPE 计算的近似距离排序,取前 k 个进入精排(比如取前 50 个)
每个子索引输出:k₀ 个候选向量的 ID + 对应的 DCPE 近似距离值。
三个子索引跑完,一共得到 3×k₀ 个粗筛候选(比如 3×40=120 个)。
这一步用计算成本极低的 DCPE 快速缩小候选范围,全程都是近似距离计算,速度极快。
第三步:云端精化阶段(精排,用 DCE)
对筛选出来的 50 个候选:
- 用 DCE 查询陷门,逐个做精确的距离比较(只能比较出谁离查询向量更近,无法得知具体距离数值)
- 用一个大小为 10 的最大堆维护当前最近的 10 个商品
- 全部候选比对完成后,把堆里的 10 个商品 ID 返回给用户
核心性能优势的根源
整个过程云端没有执行任何一次加密范围检查,完全避开了 iSHE 这类原语的高昂计算开销和跨服务器交互。范围判断的工作全部转移到了本地明文计算,云端只负责它最擅长的向量检索,这也是论文方案能实现几百到几千倍吞吐量提升的核心原因。

图:安全查询处理的工作流程
。
##补充:DCPE、DCE加密特点
普通加密(比如 AES)会把向量变成完全乱码,根本没法比距离、搜相似;但这篇论文用的不是普通加密,而是两种专门为「密态搜索」设计的特殊加密算法,它们的特点是:加密之后依然保留 “比较距离远近” 的能力,但不会泄露原始向量的具体数值。
结合论文里的两个阶段给你拆开讲:
一、粗筛阶段:用 DCPE 加密 —— 大概能比远近,足够快速找候选
论文里粗筛用的是 DCPE(近似距离比较保持加密),你可以把它理解成「带模糊效果的保序加密」。
它的原理(大白话版)
它不是把向量随机打乱,而是做两件事:
- 整体缩放:给所有向量都乘一个只有用户知道的秘密系数;
- 微小扰动:给每个向量加一点点随机噪声。
最终效果是:
- ✅ 距离的大小关系大体保留:原始空间里 A 比 B 离查询更近,加密之后绝大多数时候依然是 A 比 B 更近;
- ❌ 原始坐标和精确距离完全泄露不了:服务器只能算出密文空间里的距离,推不出原始向量是多少、真实距离是多少。
服务器怎么用它搜索?
服务器手里的 HNSW 索引,本身就是用 DCPE 加密后的向量建的。 搜索的时候,用户把查询向量也用 DCPE 加密成 “查询陷门” 发给服务器,服务器直接在密文空间里走 HNSW 的图遍历 —— 就像明文搜索一样,沿着邻居节点找更近的点,快速捞出一批候选结果。
这个阶段速度很快,但精度稍差,因为扰动可能会打乱少量远近关系,所以只用来 “粗筛”。
二、精排阶段:用 DCE 加密 —— 精确比远近,但只输出结果
粗筛得到少量候选之后,就用 DCE(距离比较加密) 做精确排序。
它的原理(大白话版)
这是一种更强的加密,它支持一个非常有限的能力:
给服务器两个加密向量和一个加密查询,服务器可以直接在密文上计算,输出「甲比乙离查询更近」还是「乙比甲离查询更近」。 但它算不出具体的距离数值,也还原不出任何一个原始向量。
简单说:只能比大小,不能得数值。
服务器怎么用它精排?
服务器只需要对粗筛出来的几十个候选,两两用 DCE 比较和查询的远近,最终选出最近的 top-k 个返回。 因为只需要对少量候选做精确比较,所以虽然 DCE 计算成本高,但整体开销依然很低。
三、总结:加密了到底怎么搜?
全程服务器从来没见过明文向量,手里只有两种密文:
- 用 DCPE 密文建索引、跑图遍历,快速缩小范围(快但糙);
- 用 DCE 密文在小范围里精确排序(准但贵,只用在少量数据上)。
靠这两种加密的配合,服务器就能在完全不解密的前提下,完成从粗搜到精排的全流程,同时保证数据不泄露。这就是隐私计算里常说的“密态计算”—— 数据全程加密,只暴露计算需要的最小能力。
##小总结:N 叉树、HNSW、DCPE、DCE 四者配合逻辑
整套方案的核心设计思想是「范围过滤本地化 + 向量检索云端化 + 粗筛精排两级化」,四个组件各司其职、分层配合,从根源上避开了云端加密范围检查的高昂开销。下面先明确各自定位,再按「离线建索引 → 在线查询」两个完整阶段讲清配合流程。
一、先明确四个组件的角色分工
| 组件 | 本质 | 持有方 | 核心功能 | 特点 |
|---|---|---|---|---|
| N 叉属性树 | 明文范围索引 | 查询用户(QU)本地 | 将数值范围映射为节点 ID,完成范围过滤 | 明文计算、极快;云端完全看不到 |
| HNSW 子索引集合 | 加密向量检索索引 | 云服务器(CS) | 每个树节点对应一个独立 HNSW,负责该区间内的向量相似度检索 | 只存 DCPE 加密向量;可独立检索 |
| DCPE | 近似距离比较加密原语 | 密钥在 QU 本地;密文 / 陷门在 CS | 快速计算近似距离,给 HNSW 遍历做导航 | 计算极快;仅近似保持距离顺序 |
| DCE | 精确距离比较加密原语 | 密钥在 QU 本地;密文 / 陷门在 CS | 对小候选集做精确距离排序 | 计算昂贵;精确保持距离顺序 |
一句话总结分工: N 叉树管「哪些区间符合条件」,HNSW 管「区间内找谁最像」,DCPE 负责快速粗筛,DCE 负责最终精排。
二、离线索引构建阶段:一次性打好配合基础
由数据所有者(DO)统一构建,构建完成后再分发给云端和查询用户。这一阶段决定了后续在线查询的配合方式。
步骤 1:向量双加密(DCPE + DCE 同时准备)
DO 用两套独立密钥,把所有数据库向量各加密一遍:
- 用 \(SK_{DCPE}\) 加密全部向量 → 得到 DCPE 密文集:用于构建 HNSW 索引、在线粗筛
- 用 \(SK_{DCE}\) 加密全部向量 → 得到 DCE 密文集:仅用于最终精排
配合点:同一个向量对应两份密文,分别适配不同阶段的计算需求。
步骤 2:构建 N 叉属性树
DO 按数值属性(比如价格)对数据排序,自顶向下递归分区,构建一棵分层的 N 叉树:
- 每个树节点对应一个连续的属性区间
- 每个节点存「区间范围 + 该区间内所有向量的 ID」
- 整棵树是明文,后续只发给授权查询用户,不发给云端
配合点:N 叉树的每个节点,后续都会对应一个独立的 HNSW 子索引。
步骤 3:构建 HNSW 子索引(最核心的配合)
对 N 叉树的每一个节点,用该节点对应向量的 DCPE 密文,构建一个独立的 HNSW 子索引:
- 最底层 —— 叶子节点,直接用对应 DCPE 密文建 HNSW
- 上层 —— 内部节点,复用最大子节点,即以最大的子节点为底子,只插剩余的。自底向上构建,以最大子节点的 HNSW 为基础,插入其他子节点的 DCPE 密文,避免从头构建
如果每个节点都从零开始建 HNSW,越往上的节点向量越多,建起来越慢,非常浪费。 所以论文用了「自底向上 + 复用最大子节点」的技巧,大幅减少建索引的计算量。
最终形成一一对应关系:
N 叉树 1 个节点 ↔ 1 个 HNSW 子索引 ↔ 对应区间的所有 DCPE 加密向量
步骤 4:分发拆分(安全设计的配合)
构建完成后,DO 把内容拆成两部分分发,密钥和加密数据彻底分离:
- 发给云服务器(CS):DCPE 密文集、DCE 密文集、全套 HNSW 子索引
- 云端全程没有任何密钥,只有加密数据和索引
- 发给授权查询用户(QU):明文 N 叉树、\(SK_{DCPE}\)、\(SK_{DCE}\)
- 用户本地持有密钥和明文范围树,用来生成查询凭证
三、在线查询阶段:四组件完整配合流程
一次查询从发起到返回,四组件按「本地范围映射 → 云端粗筛 → 云端精排」三步配合。
第一步:QU 本地处理(N 叉树 + 两个密钥)
输入:查询向量 q、属性范围 \([l,r]\)、返回数量 k
-
范围映射(N 叉树工作): 遍历本地明文 N 叉树,把数值范围 \([l,r]\) 映射为一组匹配的节点 ID(比如 [3,4,5])。
这一步在本地明文完成,彻底代替了云端加密范围检查。
-
生成双陷门(DCPE 密钥 + DCE 密钥工作):
- 用本地 \(SK_{DCPE}\) 加密查询向量 q → DCPE 查询陷门(给 HNSW 粗筛用)
- 用本地 \(SK_{DCE}\) 加密查询向量 q → DCE 查询陷门(给最终精排用)
-
发给云端的只有:匹配节点 ID 列表、DCPE 陷门、DCE 陷门、k
原始查询向量、密钥、属性数值全程不离开本地。
第二步:CS 云端粗筛(HNSW + DCPE 陷门配合)
云端收到请求后,只搜索匹配节点对应的 HNSW 子索引:
- 根据节点 ID,定位到对应的 HNSW₃、HNSW₄、HNSW₅ 等子索引
- 用 DCPE 陷门 作为查询基准,分别检索每个 HNSW 子索引
- HNSW 图遍历过程中,所有距离判断都用 DCPE 密文计算
- 每个子索引返回前 \(k_0\) 个候选
- 合并所有子索引的候选,按 DCPE 近似距离排序,取前 \(k'\) 个进入精排
配合逻辑:HNSW 遍历需要海量距离比较,刚好搭配计算极快的 DCPE;用近似精度换检索速度,快速把候选从全库缩小到百级别。
第三步:CS 云端精排(DCE 陷门工作)
对粗筛出来的少量候选,用 DCE 做精确重排序:
- 用 DCE 陷门 逐个计算候选的精确距离顺序
- 用大小为 k 的最大堆维护当前最近的 k 个结果
- 返回最终 top-k 的向量 ID 给用户
配合逻辑:DCE 计算昂贵,但只作用于极小的候选集;既保证了最终结果精度,又把整体开销控制在很低水平。
四、为什么要这样配合?设计的核心智慧
- N 叉树与 HNSW 解耦:把范围过滤从云端密文域移到本地明文域,彻底干掉了 iSHE 基线中最昂贵的「加密范围检查」开销,这是性能提升几百倍的核心来源。
- DCPE 与 HNSW 适配:HNSW 的贪心遍历需要大量距离比较,DCPE 计算成本极低,刚好适配粗筛场景,用可接受的精度损失换数量级的速度提升。
- DCE 做尾段精排:只对小候选集使用昂贵的精确加密,在几乎不影响整体性能的前提下,把最终召回率拉满。
- 密钥与数据分离:用户持密钥、云端持加密索引,双方信息不对等,在诚实但好奇模型下同时保护了数据库隐私和查询隐私。
3.4 与现有安全方案的对比优势
N-ary Tree-HNSW 混合索引相对三类基线的优势很具体

图:安全适配方案的示意图
论文对比了三种代表性的安全适配方案,明确了各自的瓶颈和本文方案的改进:
| 方案 | 核心思路 | 主要性能瓶颈 | 本文方案的核心优势 |
|---|---|---|---|
| 安全预过滤 | 先通过加密范围索引找出所有满足条件的向量,再暴力做 DCE 距离计算 | 高选择性(大范围)时,暴力距离计算开销极大;iSHE 范围检查开销高 | 用 HNSW 子索引替代暴力搜索,查询效率提升多个数量级 |
| 安全后过滤 | 先做全局 PP-ANNS 返回 k' 个候选,再对候选做加密范围检查 | 低选择性(小范围)时,需要返回极多候选才能保证结果数量,过度检索开销大 | 范围精准定位到子索引,无需过度检索,对所有选择性都稳定 |
| PP-iRangeGraph | 加密版 iRangeGraph,图遍历中对每个邻居都做 iSHE 范围检查 | 图遍历中反复调用 iSHE,加密计算和跨服务器交互开销极大 | 完全消除图遍历中的在线范围检查,去掉了最大开销源 |
实验数据显示:在 Recall@10=0.95 时,PP-RFANNS 相比三种基线方案,查询吞吐量提升了 595 倍到 2600 倍不等。
###补充:什么是iSHE?(improved‑SHE,改进对称同态加密)
它是 PP‑RFANNS 论文里最重要的对比基线方案。 SHE = Symmetric Homomorphic Encryption,对称同态加密;iSHE = improved‑SHE,改进版对称同态加密,专门做两件密文运算:
- 密文安全大小比较(SC):密文上判断:价格是否在 100‑200 之间
- 密文安全内积计算(SIP):密文上算向量相似度(内积)
通俗讲 iSHE 基线是怎么跑隐私 RFANNS
查询:找图片相似,价格 100‑200 元的商品。
iSHE 传统基线完整流程:
- 用户把查询向量、价格上下限 100、200 全部加密,发给云服务器。
- 云端拿着密文向量库、密文价格属性,直接在密文域同时做两件事:
- ①向量检索:密文内积,算向量相似度
- ②范围过滤:每一条商品,都用 iSHE 密文比较,判断价格是否∈[100,200]
- 云端把同时满足 “向量相似 + 价格区间” 的密文结果返回给用户,用户本地解密。
iSHE 的致命痛点(也就是本论文要解决的问题)
每一条候选向量,都要跑一次昂贵的密文范围比较。
- 密文比较运算开销巨大,CPU 消耗极高;
- HNSW 检索会遍历大量节点,每访问一个节点就要做 iSHE 安全比较;
- 当数据集变大,QPS 暴跌,吞吐量很差,延迟很高。
论文实验数据:相同 Recall@10=0.95 召回条件,iSHE 基线 QPS 很低;PP‑RFANNS 比 iSHE高出几百~几千倍吞吐量arXiv。
PP‑RFANNS 和 iSHE 核心差异
| 方案 | 范围条件(价格 100‑200)在哪里执行 | 云端工作内容 | 开销来源 |
|---|---|---|---|
| iSHE 基线 | 云端密文执行。云端逐条密文比较价格是否符合 | 同时做密文向量相似度 + 密文范围判断 | 大量 iSHE 密文比较,开销爆炸 |
| PP‑RFANNS(本文) | 用户本地明文 N 叉树完成,只传节点 ID 给云端 | 只做加密向量检索;云端完全不再做密文范围判断 | 代价转移到客户端本地明文计算,云端只跑 ANNS 检索 |
核心创新点一句话:把密文域昂贵的范围判断,全部挪到用户本地明文完成,云端彻底规避 iSHE 密文比较的巨大开销。
安全层面
iSHE 同样运行于诚实但好奇威胁模型:服务器不能解密密文,但是可以观察访问模式。
四、实验验证设计与结果
论文通过 7 组实验全面验证了方案的性能、参数敏感性和可扩展性。
4.1 实验设置
数据集
采用 4 个国际通用的向量检索基准数据集,每个向量随机分配 1~10000 之间的整数属性,查询区间也随机生成,因此实验主要验证的是受控条件下的方法机制,而非真实业务属性分布。
| 数据集 | 向量维度 | 数据量 | 查询数量 |
|---|---|---|---|
| Sift1M | 128 | 1,000,000 | 10,000 |
| Gist | 960 | 1,000,000 | 1,000 |
| GloVe | 100 | 1,183,514 | 10,000 |
| Deep1M | 96 | 1,000,000 | 10,000 |
对比基线
- Secure Pre-filtering:安全预过滤
- Secure Post-filtering:安全后过滤
- PP-iRangeGraph:加密版 iRangeGraph
评价指标
- QPS(Queries Per Second):每秒处理查询数,衡量查询效率
- Recall@k:返回结果中真实 top-k 的占比,衡量搜索精度
- 辅助指标:索引构建时间、索引大小、延迟分解、可扩展性
实验环境
双路 10 核 Intel Xeon Silver 4210 CPU,256GB 内存,单线程执行查询。三个基线方案额外需要一台非共谋辅助服务器(不串通的辅助服务器)支持 iSHE 解密。
4.2 核心实验 1:查询性能对比(Exp.1)
测试了混合选择性和 1%、10%、20%、40% 四种固定选择性下的 QPS-Recall 权衡。
核心结论:PP-RFANNS 在所有数据集、所有选择性下,均取得了最优的 QPS-Recall 权衡。
关键数据:
- 在 Recall@10=0.95 时,PP-RFANNS 的 QPS 达到 68~1288;而 Secure Pre-filtering 的 QPS 始终低于 0.2,PP-iRangeGraph 的 QPS 普遍低于 0.01
- 即使在 40% 高选择性(对安全后过滤最有利的场景)下,PP-RFANNS 在 Recall@10=0.95 时仍能实现 595 倍到 2600 倍的吞吐量提升
- Secure Pre-filtering 虽然 Recall 可达 1(精确结果),但 QPS 极低,完全无法满足高并发需求
4.3 核心实验 2:查询延迟分解(Exp.2)
拆解各方法的查询延迟组成,解释性能差异的根源。
核心发现:三种基线方案的延迟都由 iSHE 范围检查主导,而 PP-RFANNS 完全消除了这部分在线开销。
具体表现:
- 单次 iSHE 范围检查平均需要 0.0312 秒,包含同态计算、解密和跨服务器通信,是基线延迟的主要组成部分
- PP-RFANNS 将范围定位放在本地完成,云端仅需向量搜索和 DCE 精化,彻底去掉了最大开销项
- 剩余云端开销中,DCPE 粗搜索占主要部分;DCE 因仅作用于小候选集,开销占比很低
4.4 核心实验 3:索引成本测试(Exp.3)
测试各方法的索引构建时间和存储开销,以 Sift1M 为例:
表格
| 方法 | 构建时间(秒) | 索引大小(GiB) |
|---|---|---|
| PP-RFANNS | 418 | 2.51 |
| Secure Pre | 0.03 | 0.005 |
| Secure Post | 150 | 0.79 |
| PP-iRangeGraph | 3071 | 1.49 |
结果分析:
- 安全预过滤和后过滤索引成本低,因为前者只有轻量 B 树,后者只有一个全局 HNSW
- PP-RFANNS 构建速度比 PP-iRangeGraph 快 7 倍以上,因为 N 叉树深度更浅(7 层 vs 20 层),大幅减少了多层索引构建工作量
- PP-RFANNS 索引大小略高于 PP-iRangeGraph,属于典型的空间换时间权衡
- DCPE 和 DCE 加密是一次性离线操作,不影响在线查询性能
4.5 参数敏感性实验(Exp.4~6)
- 分支因子 b 的影响:b 增大时树深度减小,但匹配节点数增多,需要搜索更多子索引。Sift1M、Gist、Deep1M 上 b=4 时性能最优,GloVe 上 b=2 最优。
- k0 的影响:每个子索引返回的候选数 k0 越大,Recall 越高但 QPS 越低,符合标准的精度 - 效率权衡规律。
- k' 的影响:精化候选数 k' 越大,Recall 越高并逐渐收敛,但 DCE 计算开销增加。实验显示大部分真实近邻都在合并候选列表前列,无需过大的 k' 即可获得高精度。
4.6 可扩展性实验(Exp.7)
在 Sift1B 和 Deep1B 的子集上测试,数据量从 1M 扩展到 25M。
核心结果:
- 查询延迟随数据量增长平缓,25M 向量规模下,Recall@10=0.95 的延迟仍低于 17ms
- 索引大小从 1M 的约 2.5GiB 增长到 25M 的约 62.6GiB,符合 O (n log n) 的预期增长
- 索引构建时间增长快于线性,因为每个向量要在多层树节点的索引中插入,但这是一次性离线操作
证明方案可以有效扩展到千万级大规模向量数据集。
五、未来研究方向与产业机会
5.1 学术上值得进一步探索的问题
- 动态数据库支持:当前方案假设数据库静态,不支持向量增删改。如何高效支持加密向量索引的动态更新,同时保持范围过滤能力,是落地的关键问题。
- 更强的威胁模型:当前仅考虑诚实但好奇模型,未来可研究恶意服务器模型下的方案,增加结果可验证性,防止服务器篡改或返回错误结果。
- 多属性范围过滤:当前仅支持单数值属性,真实场景通常有多个结构化条件(价格、时间、类别、评分等),扩展到多属性复合条件是重要方向。
- 泄漏的量化评估:论文仅定性描述了信息泄漏,未量化泄漏的实际可利用性。未来可研究 DCPE 距离泄漏能否被用来恢复原始向量,以及进一步降低泄漏的方法。
- 加密原语的融合优化:可以探索结合全同态加密、零知识证明、保序加密等其他技术,在安全性和性能之间找到更优的平衡点。
- 联邦检索场景扩展:将方案扩展到跨机构联邦向量检索,数据不出域即可支持带范围过滤的相似度查询。
5.2 潜在的技术与投资机会
- 隐私增强型向量数据库:基于该技术打造支持加密检索的向量数据库产品,面向金融、医疗、政务等高隐私需求行业,是明确的产品化方向。
- 合规云检索服务:云厂商可推出带隐私保护的向量检索云服务,作为差异化竞争力,满足企业数据合规外包的刚需。
- RAG 隐私计算方案:结合大模型 RAG 场景,提供加密知识库的安全检索能力,解决企业私有知识库上云的隐私顾虑,是当前大模型落地的核心痛点。
- 多模态隐私检索引擎:扩展到图文、音视频等多模态数据的加密混合检索,支持多种结构化条件过滤,面向电商、内容平台等场景。
六、论文的不足与学习借鉴
6.1 论文的不足与存疑之处
- 静态数据库假设:仅支持静态数据集,不支持动态增删改,限制了大部分需要实时更新的业务场景。
- 威胁模型局限:只考虑半诚实模型,未考虑恶意服务器篡改结果、合谋攻击等更复杂的安全威胁。
- 单属性限制:仅支持一个数值属性的范围过滤,与真实业务中多条件过滤的需求差距较大。
- 属性分布假设:实验中属性为均匀随机分布,真实场景中属性往往是偏态分布(如价格集中在中低区间),此时 N 叉树的分区效率和匹配节点数可能下降。
- 索引存储开销较高:每个向量要在多层树节点的 HNSW 索引中重复出现,索引存储开销远高于单 HNSW 索引,超大规模数据集下存储压力较大。
- 安全性边界不清晰:依赖 DCPE 和 DCE 的现有安全性结论,但 DCPE 会泄漏近似距离关系,论文未评估这种泄漏的实际风险。
- 缺少技术路线横向对比:未与保序加密、全同态加密等其他技术路线的方案对比,无法全面评估方案的优劣势。
6.2 可直接借鉴的创新思路
如果从论文中提取可复用的创新点,重点关注这四个:
- “本地过滤 + 云端搜索” 的解耦架构:把结构化条件的过滤逻辑从云端移到本地,云端仅负责向量检索,彻底避免云端加密条件判断开销。该思路可推广到所有 “结构化条件 + 向量检索” 的隐私保护场景。
- “粗筛 + 精排” 的两级加密流水线:用轻量近似加密做大规模粗筛,用重量级精确加密做小范围精排,是隐私计算中非常通用的性能优化范式。
- 分层属性树 + 向量子索引的混合索引:用属性树对数据分区,每个分区建独立向量索引,查询时仅搜索匹配分区。该思路在明文场景下也能提升范围过滤性能。
- 自底向上的分层索引构建方法:构建父节点索引时复用最大子节点的索引,仅插入其他子节点数据,大幅减少索引构建计算量。
6.3 启发与补充背景知识建议
核心启发
这篇论文最大的启发是:隐私保护的性能优化,架构设计往往比单纯优化加密算法更有效。通过合理的任务划分,把适合本地计算的部分留在本地,把云端加密计算量降到最低,可以获得数量级的性能提升。
最值得“拿来即用”的创新不是某个加密算子,而是这条设计原则:
先在最可信、最便宜的一侧做确定性约束定位;再让昂贵的隐私计算只处理必要候选;最后用更强但更慢的机制完成小规模精确决策。
建议补充的背景知识
如果要深入该方向,建议补充学习以下内容,优先补齐四类核心背景知识:
一、基础技术
- 近似最近邻搜索基础:重点掌握 HNSW 的原理与实现,这是当前向量索引的主流技术,也是论文的基础组件;掌握 HNSW 相关评估指标 Recall@k / QPS 曲线。
- 向量数据库架构:了解向量数据库的索引体系、查询流程、混合查询处理方式,能更好地理解方案的设计动机。
- RFANNS 的 pre/post-filtering 与 iRangeGraph。
二、密码学原语与泄露模型
- 密码学原语:了解保序加密(OPE)、同态加密(HE)、距离保持加密、可搜索加密(SSE)等常用原语的原理、安全性和开销特点。
- DCPE/DCE/ 同态加密的泄露模型。
三、隐私威胁模型与安全分析
- 隐私计算威胁模型:理解诚实但好奇、恶意模型、共谋模型等不同威胁模型的定义与适用场景。
- 安全分析方法:学习密码协议的信息泄漏分析方法和安全性证明思路。
四、访问模式泄露防护技术
ORAM / PIR / TEE 对访问模式泄露的处理方式。
3724



被折叠的 条评论
为什么被折叠?



