#5581·faiss

IndexShards 将选择器应用于具有 successive_ids 启用的本地 ID

作者: rioyu123创建于 2026年9月5日更新于 2026年9月5日

□ 总结

IndexShards(success-ids=True)',SearchParameters.sel'进行了评价。 反向每个沙德的本地身份, 而返回的标签被转移到 缩放 ID 空间 。 这可以省略选定的全局ID并返回全局ID 选择者不包含。

用于两个 " IndexFlatL2 " 的硬盘,每个有两个向量,选择 ID " 2 " 返回 无结果; 选择 ID “ 0” 返回“ 2” 和“ 0” 。 搜索等效数据 单平的索引只返回所选的ID。 串行和线程 `IndexShards ' 复制了这种行为。

□ 平台

  • Linux, CPU. (英语).
  • 现有资料来源:`2ed4c106e9fb9686e7727e5daf8ad6ad1e164109'(费斯1.15.0), 用GCC 13.3、C++20、通用CPU执行和BLAS/LAPACK建成。 通过一个独立的C++程序将同样的案例复制到一起 对抗这个源建.
  • 下面的Python复制机是用`faiss-cpu== 1.15.0'单独运行的。 在Python 3.12.3号机上。 轮子是确凿的证据 不是现在的来源 建设。
  • 没有关于GPU或全部存储器测试套装的报道。

□ 复制指令

将数字导入为 np
导入窗体

矢量=np.array ([[0.0], [10.0], [20.0], [30.0]], dtype="float32").
查询=np.array([[200.0]]],dtype="浮点32").

参考文献=faiss。 指数FlatL2(1)
引用.add(显示器)

用于线程( False, True) :
先来 = faiss. 指数FlatL2(1)
第二为法斯. 指数FlatL2(1)
一. 添加( 显示器 [: 2] )
第二. 添加( 显示器 [2:])
(原始内容存档于2018-10-21). shards = faiss. IndexShards (1, 有线性, True) (帮助)
shards.add shard(第一个)
shards.add shard( 第二次) (简体中文).

用于所选编号的( 2, 0) :
ids = np.array([所选 id], dtype="int64").
选择器 = faiss.ID 选择器批次
parms = faiss. (中文(简体) ). 搜索参数( sel=选择器)
 , 期望 = 引用. search( query, 2 params=params)
 , 实际 = shards.search (query, 2 params = params)
打印(已删除、已选择的 id、预期的.tolist()、实际.tolist())

输出( “ 被绑定的” 、 选定的ID、 参考标签、 硬化标签) :

页:1 False 2 [[[2,-1]][[1,-1]]] 假 0 [[[0,-1]][[2,0]]] True 2 [[[2,-1]][[1,-1]]] 0 [[0,-1]][[2,0]]]


预期:被压碎的指数应与这些情况中的参考标签相匹配,
将选择器与包装器的结果在同一ID空间中进行解释。

附加 C++ 控件: 没有选择器, 折叠索引正确
返回;带有“successive ids=False”的,选择本地编号`0' 返回
`[0]',两个标签都使选择者满意。

□ 可能导致并固定方向

[`IndexShards::search' (https://GitHub.com/facebookresearch/faiss/blob/2ed4c106e9fb9686e7727e5daf8ad6ad1e164109/faiss.cpp#L214-L237] (中文(简体) ).
将未修改的 “params” 传递到每个子索引,然后在
每个搜索。 因此,选择成员使用不同于
返回标签。 4387号增加了参数通过.

我很乐意准备一个有重点的定案 但希望得到关于
预定办法
. . . . . . .

内容来源: facebookresearch/faiss