研读:Efficient Privacy-Preserving Range Filtered Approximate Nearest Neighbor Search高效隐私保护的范围过滤近似最近邻搜索

「文智助手」全场景办公AI助理AI+OPC全流程实践方案(大赛作品) 阅读详情

一、论文的研究目标与待解决的实际问题

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),必须同时满足三个相互冲突的目标:

  1. 安全性:保护向量明文、属性明文、查询明文不被云服务器获取
  2. 准确性:返回结果的质量接近明文 RFANNS
  3. 效率:查询速度足够快,计算、存储、通信开销可接受

现有方案都无法很好地平衡这三者:

  • 明文 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 是多层有向图结构,本质是一张分层的 “向量邻居关系图”,检索就是从顶层入口点开始,一层一层往下跳,每次都往离查询更近的节点走。类比多层地图:

  1. Layer‑0(最底层):全部向量都在这里,节点密集,边都是短距离连接,做精细局部搜索;
  2. 往上每一层(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 混合索引」,用户和服务器分工协作:

    1. 用户本地放 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 号分段),不用告诉云服务器具体价格是多少。
    2. 云服务器放 HNSW 子索引:专门管加密向量搜索(上文有补充知识点)

      • HNSW 你可以理解成「向量的快速导航图」,是目前工业界最快的相似向量搜索结构之一。
      • 服务器不存全局的大索引,而是给 N 叉树的每个节点都单独存一份加密的 HNSW 小索引,里面只包含这个价格分段里的商品向量。
        云端看不到任何价格数值,只维护「节点 ID → 对应加密向量集合 → 对应 HNSW 子索引」的映射关系。
        比如,节点 3 对应HNSW₃,索引了所有 80~120 元商品的 DCPE 加密向量;节点 4 对应HNSW₄,节点 5 对应HNSW₅。每个子索引都是独立的,可以单独执行搜索。
      • 用户告诉服务器 “搜第 3、4、5 号节点”,服务器就只去搜这三个对应的小索引,全程不用做任何范围判断,自然省掉了巨量的加密范围校验开销。

      三、再提速:「先粗筛,再精排」的两步查询策略

      光拆分还不够,他们又设计了 filter-and-refine(过滤 - 精修) 策略,进一步平衡速度和准确度:

      1. 第一步:粗过滤(快,但精度低) 用一种叫 DCPE 的加密方式,它的特点是:加密之后还能大概判断两个向量谁离查询更近,但算不出精确距离,好处是计算特别快。 服务器用 DCPE 从每个匹配的小索引里快速捞出一批 “大概相似” 的候选结果。

      2. 第二步:精排序(准,但计算慢,只用在少量数据上) 把所有候选合到一起,用另一种叫 DCE 的加密方式做精确距离比较,选出最终的 top k 个结果。 DCE 能精确比出谁更近,但计算成本很高;好在只需要对粗筛出来的一小撮候选做,整体就又快又准。

      四、这么做的效果怎么样?

      • 砍掉了最耗时的 “在线加密范围校验” 步骤;
      • 把昂贵的精确距离比较,只用到少量候选结果上,算力花在刀刃上;
      • 他们在公开标准数据集上测试,在召回率 95% 的常用标准下,查询速度比之前的安全方案快了至少 100 倍(两个数量级)。

      五、四个核心贡献(原文列的四点)

      1. 首次正式定义问题:系统地提出了外包加密场景下的 PP-RFANNS 问题,明确了「安全、准确、高效」三者难以兼顾的核心挑战。
      2. 提出混合索引结构:N 叉树 + HNSW 的组合,把范围判断放用户本地,向量搜索放服务器,服务器只搜和查询范围相关的子集。
      3. 设计两步查询策略:DCPE 粗筛 + DCE 精排,兼顾查询效率和搜索精度。
      4. 完整验证与分析:做了详细的计算、存储、通信、安全分析,大量实验证明方案在不同场景下都优于现有主流方案。

      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,属于密文可做精确欧氏距离比较的加密方案。

      核心能力

      1. 非交互、单服务器:云服务器不需要和客户端多轮交互,直接在密文上完成欧氏距离计算、距离大小比较;服务器只得到 “哪个向量距离更近” 的比较结果,看不到明文向量,也看不到明文距离数值。
      2. 密钥:由一系列随机可逆矩阵、随机掩码构成;数据库向量、查询向量经过矩阵变换 + 随机掩码得到密文。
      3. 目标:解决外包加密数据库上的 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.

      1. AME 只是作为已有相关密码组件被列举,作者没有把 AME 用于自己的方案。
      2. 原文评价:AME‑ and HE‑based methods incur relatively high computational overhead,即 AME 计算代价高,这也是本文不选用 AME 的原因。
      3. 本文采用 “DCPE 粗筛 + DCE 精确重排”,用近似加密完成大部分搜索,仅在小规模候选集调用昂贵的精确距离比较,以此平衡效率与精度。

      AME 的局限

      1. 矩阵运算带来较高计算开销,高维向量场景下延迟大;
      2. 只解决向量距离比较,原生不支持属性范围过滤,无法直接实现 RFANNS;
      3. 论文没有复用 AME,而是选用了同家族更新的 DCE 作为精确距离原语。

      补充:ASPE 是旧的矩阵类加密,存在已知安全漏洞;AME 是改进版本;DCE 又是后续进一步优化的精确距离比较原语。

      3.2 关键技术 1:N 叉树 - HNSW 混合索引结构

      论文设计了N 叉树 - HNSW 混合索引,将属性范围索引和向量索引分离,分别放在用户端和云端:

      (1)索引组成
      • N 叉属性树:由数据所有者构建,分发给授权查询用户本地保存。它将数值属性域分层划分为连续区间,每个树节点对应一个属性区间和该区间内的所有向量 ID。
      • HNSW 子索引集合:云端为 N 叉树的每个节点,都构建一个对应的 HNSW 向量索引,索引该节点区间内的加密向量。
      (2)自底向上的索引构建流程
      1. 向量双加密:对所有向量分别用 DCPE 和 DCE 两种方式加密,分别用于粗筛和精排
      2. N 叉树构建:对数值属性排序后,自顶向下递归分区,保证每个子节点的数据量大致均衡,形成平衡 N 叉树
      3. 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。

      这里有两样东西,千万不要搞混:

      1. 陷门密钥(Trapdoor Key,SK)【秘密,相当于做令牌的模具,永久保存在本地,绝不发送】
        是一套密码学的秘密参数,相当于 “制造令牌的模具”。只有我拥有。
      2. 陷门 Trapdoor 【查询令牌,发给服务器】
        用上面的陷门密钥SK + 我的原始查询向量 q,在本地加工,生产出来的一串数据。

      👉陷门就是加工出来的令牌(查询凭证)。

      服务器拿到陷门后,可以执行规定运算:拿陷门和数据库里的加密向量做距离比较、跑 HNSW 检索。(服务器有了陷门后,无法反推出我最开始的原始查询向量q是什么)

      就像你在家做月饼,想要给小区保安:

      原始向量 q = 月饼馅

      陷门密钥 SK = 月饼模具

      你用模具 + 馅料,在家做出月饼。模具和馅都在你家,不会拿给小区门卫。门卫拿到月饼就能吃,不用知道你怎么做的、原料是什么。

      第二步:云端过滤阶段(粗筛,用 DCPE)

      云端收到请求后,仅搜索匹配的三个子索引:

      1. 拿 DCPE 查询陷门,分别检索HNSW₃、HNSW₄、HNSW₅,每个子索引返回 k₀个候选(比如每个返回 40 个)

        核心:用 DCPE 陷门作为「查询基准」,在每个 HNSW 子索引的加密向量图里,近似找出离查询向量最近的一批向量。通俗说:你给了云端一个 “查询令牌(DCPE 陷门)”,云端拿着这个令牌,去每一个指定的子图里,快速找出 “和这个令牌最像” 的前 k₀ 个加密向量。
        DCPE 陷门的作用,就是给图遍历提供距离判断的依据。

      2. 把三个子索引返回的共 120 个候选合并,用 DCPE 计算的近似距离排序,取前 k 个进入精排(比如取前 50 个)

        每个子索引输出:k₀ 个候选向量的 ID + 对应的 DCPE 近似距离值。
        三个子索引跑完,一共得到 3×k₀ 个粗筛候选(比如 3×40=120 个)。

      这一步用计算成本极低的 DCPE 快速缩小候选范围,全程都是近似距离计算,速度极快。

      第三步:云端精化阶段(精排,用 DCE)

      对筛选出来的 50 个候选:

      1. 用 DCE 查询陷门,逐个做精确的距离比较(只能比较出谁离查询向量更近,无法得知具体距离数值)
      2. 用一个大小为 10 的最大堆维护当前最近的 10 个商品
      3. 全部候选比对完成后,把堆里的 10 个商品 ID 返回给用户

      核心性能优势的根源

      整个过程云端没有执行任何一次加密范围检查,完全避开了 iSHE 这类原语的高昂计算开销和跨服务器交互。范围判断的工作全部转移到了本地明文计算,云端只负责它最擅长的向量检索,这也是论文方案能实现几百到几千倍吞吐量提升的核心原因。

                                                           图:安全查询处理的工作流程

      。

      ##补充:DCPE、DCE加密特点

      普通加密(比如 AES)会把向量变成完全乱码,根本没法比距离、搜相似;但这篇论文用的不是普通加密,而是两种专门为「密态搜索」设计的特殊加密算法,它们的特点是:加密之后依然保留 “比较距离远近” 的能力,但不会泄露原始向量的具体数值。

      结合论文里的两个阶段给你拆开讲:

      一、粗筛阶段:用 DCPE 加密 —— 大概能比远近,足够快速找候选

      论文里粗筛用的是 DCPE(近似距离比较保持加密),你可以把它理解成「带模糊效果的保序加密」。

      它的原理(大白话版)

      它不是把向量随机打乱,而是做两件事:

      1. 整体缩放:给所有向量都乘一个只有用户知道的秘密系数;
      2. 微小扰动:给每个向量加一点点随机噪声。

      最终效果是:

      • ✅ 距离的大小关系大体保留:原始空间里 A 比 B 离查询更近,加密之后绝大多数时候依然是 A 比 B 更近;
      • ❌ 原始坐标和精确距离完全泄露不了:服务器只能算出密文空间里的距离,推不出原始向量是多少、真实距离是多少。

      服务器怎么用它搜索?

              服务器手里的 HNSW 索引,本身就是用 DCPE 加密后的向量建的。 搜索的时候,用户把查询向量也用 DCPE 加密成 “查询陷门” 发给服务器,服务器直接在密文空间里走 HNSW 的图遍历 —— 就像明文搜索一样,沿着邻居节点找更近的点,快速捞出一批候选结果。

      这个阶段速度很快,但精度稍差,因为扰动可能会打乱少量远近关系,所以只用来 “粗筛”。

      二、精排阶段:用 DCE 加密 —— 精确比远近,但只输出结果

      粗筛得到少量候选之后,就用 DCE(距离比较加密) 做精确排序。

      它的原理(大白话版)

      这是一种更强的加密,它支持一个非常有限的能力:

      给服务器两个加密向量和一个加密查询,服务器可以直接在密文上计算,输出「甲比乙离查询更近」还是「乙比甲离查询更近」。 但它算不出具体的距离数值,也还原不出任何一个原始向量。

      简单说:只能比大小,不能得数值。

      服务器怎么用它精排?

      服务器只需要对粗筛出来的几十个候选,两两用 DCE 比较和查询的远近,最终选出最近的 top-k 个返回。 因为只需要对少量候选做精确比较,所以虽然 DCE 计算成本高,但整体开销依然很低。

      三、总结:加密了到底怎么搜?

      全程服务器从来没见过明文向量,手里只有两种密文:

      1. 用 DCPE 密文建索引、跑图遍历,快速缩小范围(快但糙);
      2. 用 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

      1. 范围映射(N 叉树工作): 遍历本地明文 N 叉树,把数值范围 \([l,r]\) 映射为一组匹配的节点 ID(比如 [3,4,5])。

        这一步在本地明文完成,彻底代替了云端加密范围检查。

      2. 生成双陷门(DCPE 密钥 + DCE 密钥工作):

        • 用本地 \(SK_{DCPE}\) 加密查询向量 q → DCPE 查询陷门(给 HNSW 粗筛用)
        • 用本地 \(SK_{DCE}\) 加密查询向量 q → DCE 查询陷门(给最终精排用)
      3. 发给云端的只有:匹配节点 ID 列表、DCPE 陷门、DCE 陷门、k

        原始查询向量、密钥、属性数值全程不离开本地。

      第二步:CS 云端粗筛(HNSW + DCPE 陷门配合)

      云端收到请求后,只搜索匹配节点对应的 HNSW 子索引:

      1. 根据节点 ID,定位到对应的 HNSW₃、HNSW₄、HNSW₅ 等子索引
      2. 用 DCPE 陷门 作为查询基准,分别检索每个 HNSW 子索引
        • HNSW 图遍历过程中,所有距离判断都用 DCPE 密文计算
        • 每个子索引返回前 \(k_0\) 个候选
      3. 合并所有子索引的候选,按 DCPE 近似距离排序,取前 \(k'\) 个进入精排

      配合逻辑:HNSW 遍历需要海量距离比较,刚好搭配计算极快的 DCPE;用近似精度换检索速度,快速把候选从全库缩小到百级别。

      第三步:CS 云端精排(DCE 陷门工作)

      对粗筛出来的少量候选,用 DCE 做精确重排序:

      1. 用 DCE 陷门 逐个计算候选的精确距离顺序
      2. 用大小为 k 的最大堆维护当前最近的 k 个结果
      3. 返回最终 top-k 的向量 ID 给用户

      配合逻辑:DCE 计算昂贵,但只作用于极小的候选集;既保证了最终结果精度,又把整体开销控制在很低水平。

      四、为什么要这样配合?设计的核心智慧
      1. N 叉树与 HNSW 解耦:把范围过滤从云端密文域移到本地明文域,彻底干掉了 iSHE 基线中最昂贵的「加密范围检查」开销,这是性能提升几百倍的核心来源。
      2. DCPE 与 HNSW 适配:HNSW 的贪心遍历需要大量距离比较,DCPE 计算成本极低,刚好适配粗筛场景,用可接受的精度损失换数量级的速度提升。
      3. DCE 做尾段精排:只对小候选集使用昂贵的精确加密,在几乎不影响整体性能的前提下,把最终召回率拉满。
      4. 密钥与数据分离:用户持密钥、云端持加密索引,双方信息不对等,在诚实但好奇模型下同时保护了数据库隐私和查询隐私。

      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,改进版对称同态加密,专门做两件密文运算:

      1. 密文安全大小比较(SC):密文上判断:价格是否在 100‑200 之间
      2. 密文安全内积计算(SIP):密文上算向量相似度(内积)

      通俗讲 iSHE 基线是怎么跑隐私 RFANNS

      查询:找图片相似,价格 100‑200 元的商品。

      iSHE 传统基线完整流程:

      1. 用户把查询向量、价格上下限 100、200 全部加密,发给云服务器。
      2. 云端拿着密文向量库、密文价格属性,直接在密文域同时做两件事:
        • ①向量检索:密文内积,算向量相似度
        • ②范围过滤:每一条商品,都用 iSHE 密文比较,判断价格是否∈[100,200]
      3. 云端把同时满足 “向量相似 + 价格区间” 的密文结果返回给用户,用户本地解密。

      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 之间的整数属性,查询区间也随机生成,因此实验主要验证的是受控条件下的方法机制,而非真实业务属性分布。

      数据集向量维度数据量查询数量
      Sift1M1281,000,00010,000
      Gist9601,000,0001,000
      GloVe1001,183,51410,000
      Deep1M961,000,00010,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-RFANNS4182.51
      Secure Pre0.030.005
      Secure Post1500.79
      PP-iRangeGraph30711.49

      结果分析:

      • 安全预过滤和后过滤索引成本低,因为前者只有轻量 B 树,后者只有一个全局 HNSW
      • PP-RFANNS 构建速度比 PP-iRangeGraph 快 7 倍以上,因为 N 叉树深度更浅(7 层 vs 20 层),大幅减少了多层索引构建工作量
      • PP-RFANNS 索引大小略高于 PP-iRangeGraph,属于典型的空间换时间权衡
      • DCPE 和 DCE 加密是一次性离线操作,不影响在线查询性能
      4.5 参数敏感性实验(Exp.4~6)
      1. 分支因子 b 的影响:b 增大时树深度减小,但匹配节点数增多,需要搜索更多子索引。Sift1M、Gist、Deep1M 上 b=4 时性能最优,GloVe 上 b=2 最优。
      2. k0 的影响:每个子索引返回的候选数 k0 越大,Recall 越高但 QPS 越低,符合标准的精度 - 效率权衡规律。
      3. 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 学术上值得进一步探索的问题
      1. 动态数据库支持:当前方案假设数据库静态,不支持向量增删改。如何高效支持加密向量索引的动态更新,同时保持范围过滤能力,是落地的关键问题。
      2. 更强的威胁模型:当前仅考虑诚实但好奇模型,未来可研究恶意服务器模型下的方案,增加结果可验证性,防止服务器篡改或返回错误结果。
      3. 多属性范围过滤:当前仅支持单数值属性,真实场景通常有多个结构化条件(价格、时间、类别、评分等),扩展到多属性复合条件是重要方向。
      4. 泄漏的量化评估:论文仅定性描述了信息泄漏,未量化泄漏的实际可利用性。未来可研究 DCPE 距离泄漏能否被用来恢复原始向量,以及进一步降低泄漏的方法。
      5. 加密原语的融合优化:可以探索结合全同态加密、零知识证明、保序加密等其他技术,在安全性和性能之间找到更优的平衡点。
      6. 联邦检索场景扩展:将方案扩展到跨机构联邦向量检索,数据不出域即可支持带范围过滤的相似度查询。
      5.2 潜在的技术与投资机会
      1. 隐私增强型向量数据库:基于该技术打造支持加密检索的向量数据库产品,面向金融、医疗、政务等高隐私需求行业,是明确的产品化方向。
      2. 合规云检索服务:云厂商可推出带隐私保护的向量检索云服务,作为差异化竞争力,满足企业数据合规外包的刚需。
      3. RAG 隐私计算方案:结合大模型 RAG 场景,提供加密知识库的安全检索能力,解决企业私有知识库上云的隐私顾虑,是当前大模型落地的核心痛点。
      4. 多模态隐私检索引擎:扩展到图文、音视频等多模态数据的加密混合检索,支持多种结构化条件过滤,面向电商、内容平台等场景。

      六、论文的不足与学习借鉴

      6.1 论文的不足与存疑之处
      1. 静态数据库假设:仅支持静态数据集,不支持动态增删改,限制了大部分需要实时更新的业务场景。
      2. 威胁模型局限:只考虑半诚实模型,未考虑恶意服务器篡改结果、合谋攻击等更复杂的安全威胁。
      3. 单属性限制:仅支持一个数值属性的范围过滤,与真实业务中多条件过滤的需求差距较大。
      4. 属性分布假设:实验中属性为均匀随机分布,真实场景中属性往往是偏态分布(如价格集中在中低区间),此时 N 叉树的分区效率和匹配节点数可能下降。
      5. 索引存储开销较高:每个向量要在多层树节点的 HNSW 索引中重复出现,索引存储开销远高于单 HNSW 索引,超大规模数据集下存储压力较大。
      6. 安全性边界不清晰:依赖 DCPE 和 DCE 的现有安全性结论,但 DCPE 会泄漏近似距离关系,论文未评估这种泄漏的实际风险。
      7. 缺少技术路线横向对比:未与保序加密、全同态加密等其他技术路线的方案对比,无法全面评估方案的优劣势。
      6.2 可直接借鉴的创新思路

      如果从论文中提取可复用的创新点,重点关注这四个:

      1. “本地过滤 + 云端搜索” 的解耦架构:把结构化条件的过滤逻辑从云端移到本地,云端仅负责向量检索,彻底避免云端加密条件判断开销。该思路可推广到所有 “结构化条件 + 向量检索” 的隐私保护场景。
      2. “粗筛 + 精排” 的两级加密流水线:用轻量近似加密做大规模粗筛,用重量级精确加密做小范围精排,是隐私计算中非常通用的性能优化范式。
      3. 分层属性树 + 向量子索引的混合索引:用属性树对数据分区,每个分区建独立向量索引,查询时仅搜索匹配分区。该思路在明文场景下也能提升范围过滤性能。
      4. 自底向上的分层索引构建方法:构建父节点索引时复用最大子节点的索引,仅插入其他子节点数据,大幅减少索引构建计算量。
      6.3 启发与补充背景知识建议
      核心启发

      这篇论文最大的启发是:隐私保护的性能优化,架构设计往往比单纯优化加密算法更有效。通过合理的任务划分,把适合本地计算的部分留在本地,把云端加密计算量降到最低,可以获得数量级的性能提升。

      最值得“拿来即用”的创新不是某个加密算子,而是这条设计原则:

      先在最可信、最便宜的一侧做确定性约束定位;再让昂贵的隐私计算只处理必要候选;最后用更强但更慢的机制完成小规模精确决策。

      建议补充的背景知识

      如果要深入该方向,建议补充学习以下内容,优先补齐四类核心背景知识:

      一、基础技术

      1. 近似最近邻搜索基础:重点掌握 HNSW 的原理与实现,这是当前向量索引的主流技术,也是论文的基础组件;掌握 HNSW 相关评估指标 Recall@k / QPS 曲线。
      2. 向量数据库架构:了解向量数据库的索引体系、查询流程、混合查询处理方式,能更好地理解方案的设计动机。
      3. RFANNS 的 pre/post-filtering 与 iRangeGraph。

      二、密码学原语与泄露模型

      1. 密码学原语:了解保序加密(OPE)、同态加密(HE)、距离保持加密、可搜索加密(SSE)等常用原语的原理、安全性和开销特点。
      2. DCPE/DCE/ 同态加密的泄露模型。

      三、隐私威胁模型与安全分析

      1. 隐私计算威胁模型:理解诚实但好奇、恶意模型、共谋模型等不同威胁模型的定义与适用场景。
      2. 安全分析方法:学习密码协议的信息泄漏分析方法和安全性证明思路。

      四、访问模式泄露防护技术

      ORAM / PIR / TEE 对访问模式泄露的处理方式。

      船载 OpenHarmony AIS 航海工作台:告警与防碰撞预警系统 船载OpenHarmony AIS航海工作台的告警与防碰撞系统,集成十余类告警(超速、偏航、会遇、SOS等),通过网格空间索引实现高效邻近判定,保障实时性。告警管理器统一调度规则、去重、通知与日志,支持悬浮球、语音、跑马灯、弹窗多渠道触达,确保航行安全。SOS紧急通道独立运行,避免干扰。系统设计强调性能优化与多场景适配,为航海安全提供核心支撑。 阅读详情

      相关推荐

      万物皆可GAN ---普通GAN, pix2pix, CycleGAN和pix2pixHD的比较以及演变过程

      普通GAN, pix2pix, CycleGAN和pix2pixHD的原理、比较以及演变过程

      m0_61985580的博客 3724

      视频隐私脱敏工程化:CSRT/KCF追踪算法在本地推理中的实现与边界

      在短视频内容合规审查中,动态遮挡(Dynamic Masking)是高频且高耗时的环节。传统手动关键帧打码不仅效率低下,且在目标快速移动或遮挡时极易出现遮罩漂移。本文从计算机视觉工程角度,解析基于CSRT与KCF算法的目标追踪方案在视频隐私处理中的技术路径、性能权衡及落地实践。

      Mysssone的博客 228

      手把手教你用HiNet实现图像隐藏:可逆神经网络实战指南(附代码)

      本文提供了一份基于HiNet框架实现图像隐藏的实战指南。通过详细解析可逆神经网络原理,手把手指导环境搭建、模型构建、损失函数设计及训练流程,并附有完整代码。该方法利用单个可逆网络统一隐藏与恢复过程,结合小波变换提升隐蔽性,为信息隐藏应用提供了高效解决方案。

      rgv234567的博客 433

      6 款电商 AI 图片生成软件实测|国内 + 跨境卖家工具清单

      电商 AI 作图工具已经从 "能不能用" 进入了 "好不好用" 的阶段。对于绝大多数卖家而言,现在的 AI 工具已经可以覆盖 60%-80% 的基础商品图需求,显著降低拍摄和设计成本。选择工具的核心逻辑不是 "哪款最强",而是 "哪款最适配你的品类、平台规模和团队能力"。垂直电商工具胜在工作流效率,通用生图工具强在创意上限,模板类工具赢在上手速度。建议根据自身业务阶段,搭配 1-2 款主力工具 + 1 款辅助工具,形成适合自己的视觉生产流程。

      Mardi_Ladin的博客 401

      微处理器实验报告-实验四

      实验四 可编程定时/计数器8253实验 一、实验要求 利用8086外接8253可编程定时/计数器,可以实现方波的产生。 二、实验目的 1、学习8086与8253的连接方法。 2、学习8253的控制方法。 3、掌握8253定时器/计数器的工作方式和编程原理

      青竹小轩的博客 5112

      使用modelscope加载报错:ImportError: cannot import name ‘AutoTokenizer’ from ‘modelscope’...如何解决?| 提供多种解决方案

      🏆本文收录于 《全栈Bug调优(实战版)》 专栏,该专栏专注于分享我在真实项目开发中遇到的各类疑难Bug及其深层成因,并系统提供高效、可复现的解决思路和实操方案。无论你是刚入行的新手开发者,还是拥有多年项目经验的资深工程师,本专栏都将为你提供一条系统化、高质量的问题排查与优化路径,助力你加速成长,攻克技术壁垒,迈向技术价值最大化与职业发展的更高峰🚀!

      **My Coding Family** 1243

      我用 GPUWorks 在 M1 Pro 上搭了个发票识别原型

      公司里经常要看电子发票。我想先做个小原型:把 PDF 发给一个自己部署的图文模型,让它提取发票类型、日期、交易双方和金额,再把结果交给同事核对。这个原型不用先接财务系统,先看看从部署到调用要走多少步,模型返回的内容能不能帮上忙。

      鸽芷咕的博客 2万+

      R语言机器学习算法实战系列(十三)随机森林生存分析构建预后模型 (Random Survival Forest)

      本教程运用随机森林生存分析筛选与患者生存状态显著相关特征。该方法借随机森林这一强大机器学习算法,构建多棵决策树并集成结果,以提高生存分析准确性,识别关键生物标志物。接着,利用选定特征构建风险得分,将多个特征转化为单一数值,量化患者风险水平。之后,依据风险得分将患者分为高、低风险亚型,为临床治疗提供个性化指导。最后,通过分析时间依赖的 ROC 曲线评估模型长期预测能力。此曲线计算不同阈值下的真正例率与假正例率,在多个时间点评估,全面展现模型长期稳定性与准确性。

      专注生信领域 2022

      您您这可以把问小白的多个会话比如说。左侧的多个会话一次性导出吗?不是单条会话里面的多次会对话。AI导出鸭

      第三层是格式编译层。这个决策背后的判断很清晰:一个批量导出工具的价值,不在于“试三次”,而在于你真正用它处理了几十份技术文档、访谈记录或课程讲义之后,它是否值得留在你的工作流里。问小白的会话列表通过分页接口加载,AI导出鸭 在页面运行时建立旁路监听,捕获每一次分页请求返回的完整对话清单,包括会话 ID、标题、时间戳和隐藏的元数据字段。让AI导出回归优雅——这句话说的是:导出不该是体力活,而应该是一次完整的、可预期的文件交付。注意:这里的“批量”指的是左侧列表里的多个独立会话,不是一条会话内的多轮对话。

      laoyunsi的博客 248

      五步通关!宝塔Linux部署ASP.NET Core的魔法秘籍大公开!

      摘要: 本文提供ASP.NET Core应用五步部署攻略,涵盖从环境配置到线上运行的完整流程: 1️⃣ 环境准备:安装宝塔面板、ASP.NET Core运行时及开放端口; 2️⃣ 应用发布:通过dotnet publish生成独立部署包并上传服务器; 3️⃣ Nginx配置:设置反向代理将域名请求转发至应用端口; 4️⃣ 进程守护:使用Supervisor确保应用持续运行; 5️⃣ HTTPS加密:通过宝塔快速申请SSL证书并解决验证路径冲突。 关键点: 强调权限设置(755)、端口开放及反向代理细节; 提

      java专栏 969

      安装anaconda3时出现错误:Failed to link extracted packages to D:\anaconda!...如何解决?

      🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值 。

      **My Coding Family** 1481

      【从零理解 Spring AI · 12】MCP 的两种角色:做客户端还是做服务端

      上一篇讲了 MCP 的概念:标准协议、三大角色、M+N 替代 M×N。

      nice_lcj520的博客 503

      深度学习工具包 DeepLearningToolbox

      深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

      河道漂浮物目标检测数据集

      目标检测,yolo,河道漂浮物目标检测数据集

      DL_data_set的博客 203

      最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

      Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

      温度PID控制PLC程序

      温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

      AI Agent之核心框架

      A: 显式 Thought 有三类价值:可解释性(便于人类审计)、可调试性(定位哪一步选错工具)、学习信号(可做监督微调或评估中间步骤质量)。ReAct 把推理与 可执行行动 绑定,每一步行动后都有 真实 Observation 反馈,从而用工具结果约束生成,降低闭卷幻觉。做完不等于结束——还要 评估做得好不好,把 教训 记下来,下次 带着教训重试,反思作为 记忆,影响后续尝试的策略。工作流程:Action → Evaluation → Reflection → Retry。A: 普通 CoT 只在。

      剑雨巍巍的博客 201

      IDEA的使用指南

      IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

      AI 应用开发工程师技术实践:大模型接入、通用组件封装与性能优化

      本文提出AI应用从PoC到生产的核心挑战:模型调用的持续可用、可控与可优化。通过构建统一LLM网关实现多供应商路由与故障转移,封装对话、工具调用与RAG组件以解耦业务逻辑,结合前缀缓存、批处理与流式背压治理等性能优化手段,形成“接通→接稳→接快”的工程路径,最终以工程化能力决定AI应用的生产可用性。

      2301_79189962的博客 559

      AI前沿日报 · 2026-11-04 | 祛魅时刻:Astra“纯读权重“神话的崩塌

      ①Astra"裸权重通吃"被spaCy创始人Honnibal精准祛魅——仅1/3实验真裸读,数学能力提升依赖Python+50次迭代;②Simon Willison用Qwen 3.8-27B端侧复现权重空间编程;③Nvidia开源Auto-Ontology自动知识图谱;④$800开源全域抓取机器人Stringman;⑤OpenAI悄然重开Codex训练开关引信任危机;⑥DeepMind发布Gemini 4 Argon机器人基础模型;⑦美国科技巨头隐性AI债务达3.2万亿美元,6个月增90%。

      johnsong2009的博客 575

      大模型 Embedding 与向量相似度详解

      Embedding 解决的问题:计算机不懂文字,但懂数字│▼文本 → 向量(1024维浮点数数组)│▼相似度解决的问题:怎么判断两个向量(文本)有多接近│▼余弦相似度:看向量方向的夹角,越接近0°越相似│▼最终效果:语义搜索——理解意思,而非字面匹配一句话总结:Embedding 把文字变成数字,余弦相似度比较数字的方向,两者结合实现了"理解语义"的搜索。

      T3165919332的博客 92

      GPT-1 架构和计算细节

      下面配合框图,对 GPT-1 的每个组件做公式展开 + 数值实例(配置:12 层 × 768,12 头,FFN 3072,词表 40478,共 117M 参数)。GPT-1 把翻译模型的编码器-解码器砍掉一半,只留解码器,然后以"预测下一个词"为目标在 BooksCorpus 上预训练。与 2017 原版的四个架构差异(框图中标 ★):h0=E[token]+Epos[position],E∈R40478×768, Epos∈R512×768h^0 = E[\text{token}] + E_{pos}[\

      eloudy的专栏 280

      终端 AI 审计与 “龙虾” 类智能体风险治理:从可见性到闭环溯源

      生成式 AI 办公普及之后,数据泄露风险逐步下沉到终端。员工将合同、源代码、客户资料粘贴至公有大模型,以及龙虾(OpenClaw)这类本地开源 AI 智能体的滥用,成为企业安全新挑战。传统网络边界防护存在审计盲区,本文从风险链路拆解、核心能力模型、分级治理策略、落地踩坑点以及技术局限性多角度,分享终端侧 AI 安全治理的实践思路。

      2401_86491085的博客 642

      2.53 基于极稀疏指纹的室内定位注意力图元学习

      该论文发表于IEEE Transactions on Mobile Computing(TMC)2026年6月,面向极稀疏指纹条件下的WiFi室内定位,针对指纹采集人力成本高、标记指纹稀缺时定位精度大幅下降的痛点,提出注意力图元学习模型AGML(Attentional Graph Meta‑Learning),结合图神经网络、元学习、两种指纹数据增强与分布对齐技术,在标记指纹极少的场景实现高精度室内定位,同时公开了多套真实+仿真定位数据集用于基准测试。场景:二维室内空间,障碍物造成信号遮挡,

      weixin_42963026的博客 339

      语音识别与语音合成的技术原理及应用

      语音识别 #语音合成 #人工智能 #大模型。语音识别与语音合成的技术原理及应用。一、语音识别的核心原理。二、语音合成的核心原理。三、工程落地的主要难点。五、需要关注的现实问题。

      weixin_62919816的博客 213

      设计师工作室 GEO 实操:如何提升 AI 实体推荐概率

      设计工作室 GEO 的本质,是把创意服务转化为 AI 可理解的结构化信息。核心动作可归纳为:区分事实与审美、建立实体图谱、预判用户提问、输出脱敏内容、搭建多信源、持续测试验证。梳理工作室的 6 个实体属性:品类、城市、流程、边界、团队、渠道。在官网或作品集平台发布至少 3 篇结构化项目复盘,只陈述事实。输出 1 篇「设计报价影响因素」科普内容,覆盖甲方高频提问。争取 1 次行业媒体或本地媒体专访,形成第三方信源。每周用「XX 城市 + 品类 + 设计工作室推荐」指令测试,记录出现频率。

      goujunwe的博客 339

      AI作图软件技术选型:从4个技术维度出发的实测对比

      AI作图软件技术选型:从4个技术维度出发的实测对比

      Vbaoke的博客 207

      WorkBuddy 实战:一句话需求 → 七屏可交互原型,户外徒步 App 的 AI 设计全流程

      WorkBuddy 实战:一句话需求 → 七屏可交互原型,户外徒步 App 的 AI 设计全流程,跟着博主一起来还原整个过程。

      夜郎King的博客 4646

      影视场景怎么用AI生成3D镜头预演?从概念图、场景白模到网页审片

      概念图有氛围,不代表能直接用于镜头预演。本文围绕剧本拆镜、资料与尺度假设、场景白模、机位走位、动作节拍和网页审片,介绍 AI 生成 3D 场景的预演流程。通过稳定对象与相机编号、统一镜头表、意见关联版本和三轮审核,让讨论落到具体镜头,同时明确白模与网页预演不能替代真实场地勘景及现场安全判断。

      Solange__的博客 540
      上一篇: 联邦学习-威胁模型
      下一篇: 多模态数据集:存储 + 完整搜索链路拆解
      Swilderrr
      博客等级 码龄4年 40粉丝 34原创
      评论
      成就一亿技术人!
      拼手气红包6.0元
      还能输入1000个字符
       
       条评论被折叠 查看
      添加红包

      请填写红包祝福语或标题

      个

      红包个数最小为10个

      元

      红包金额最低5元

      当前余额3.43元 前往充值 >
      需支付:10.00元
      成就一亿技术人!
      领取后你会自动成为博主和红包主的粉丝 规则
      hope_wisdom
      发出的红包
      实付元
      使用余额支付
      点击重新获取
      扫码支付
      钱包余额 0

      抵扣说明:

      1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
      2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

      余额充值