问题标签 [faiss]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - faiss:如何从 python 中通过 id 检索向量
我有一个 faiss 索引,想在我的 python 脚本中使用一些嵌入。嵌入的选择应该由 id 完成。由于 faiss 是用 C++ 编写的,因此 swig 被用作 API。
我想我需要的功能是重建:
因此,我在python中调用了这个方法,例如:
但这会导致以下错误:
vector = index.reconstruct(0) 文件“lib/python3.8/site-packages/faiss/ init .py”,第 406 行,replacement_reconstruct self.reconstruct_c(key, swig_ptr(x)) 文件“lib/python3.8 /site-packages/faiss/swigfaiss.py",第 1897 行,在重建中返回 _swigfaiss.IndexFlat_reconstruct(self, key, recons)
TypeError:在方法“IndexFlat_reconstruct”中,“faiss::Index::idx_t”类型的参数 2 python-BaseException
有人知道我的方法有什么问题吗?
c++ - 什么是 C++ 中 python 的 faiss.normalize_L2() 的等价物?
我想使用 FAISS 对 C++ 中的 100k 面部嵌入执行相似性搜索。对于距离计算器,我想使用余弦相似度。为此,我选择 faiss::IndexFlatIP
. 但是根据文档,我们需要在将向量添加到索引之前对其进行规范化。文档在 python 中建议了以下代码:
但是因为我想在 C++ 中实现同样的东西,我注意到我在 C++ 中找不到任何与 python 中的函数相似的函数faiss.normalize_L2()
。任何人都可以帮忙吗?提前致谢。
c++ - 编译hello.cpp。标志 - C++ FAISS GPU
我想在另一个仓库中外部使用 FAISS C++ GPU。因此,我创建了一个 hello.cpp 并尝试在不进入 faiss 目录的情况下对其进行编译。在 faiss 目录中,编译对我来说似乎很好。
- hello.cpp(C++ Faiss GPU):
命令:
/usr/local/cuda/bin/nvcc /home/hossamamer/hello.cpp -lcublas -lfaiss -o myCublasApp
输出:
有什么帮助吗?我也可以使用 make 命令执行此操作吗?命令是什么?
python - 如何存储 FAISS IndexFlatL2 对象以便在其他模块中进一步使用?
我正在使用 FAISS 库为大型数据语料库构建示意图搜索模型。对于搜索操作,我使用 FAISS 库中的“IndexFlatL2”方法,该方法在后台使用欧几里德距离来查找最近的邻居。python实现如图所示。
现在,我试图将 fs_index 对象存储为模型文件(即像传统的 ML 模型 pickle 或 joblib 文件),以便我可以使用相同的文件来预测其他模块/其他包中的其他查询。
那么,有没有办法将此索引对象存储为 joblib/pickle 文件,以便根据需要在任何其他地方进一步使用此模型?
提前致谢
vector - 有谁知道 Milvus 2.0 GA 独立版的基准测试吗?
当使用 docker compose 独立运行 Milvus 2.0 ga 时,对于 100M 的 256 维向量集合(具有 IVF_SQ8 索引,nlist = 65536)的预期性能水平是多少,以 # 次查询/秒计?我观察到的当前性能似乎很慢(在具有丰富 cpu 和内存的非常大的 EC2 服务器上,在最好的情况下不能超过 1 req/second 的峰值)。对于具有像我这样的集合的 Milvus 2.0 独立实例的预期性能,最大 1 个请求/秒是预期性能,还是应该更快?
c++ - 在 FasterTransformer 中编译和运行 C++ FAISS GPU
我想将 FAISS C++ GPU 代码写入 FasterTransformer C++ GPU。
我在 sample/cpp/CMakeLists.txt 中这样做了:
在 fasttransformer/decoding_beamsearch.h 中,我写道:
我在其中一个函数中写了以下内容:
这是我的 FasterTransformer 的 CMake 命令:
我看到这个警告:
当 make -j 时,代码构建良好。当我运行时,我看到这个错误:
OSError:/FasterTransformer/FasterTransformer/build/lib/libpyt_fastertransformer.so:未定义符号:_ZN5faiss3gpu20StandardGpuResourcesD1Ev
如果您对从 Faiss 到 FT 的链接警告/错误有所了解,请分享。
pyinstaller - 使用 Pyinstaller 打包 Faiss 的问题
我正在尝试从使用 Faiss 进行集群的程序创建一个 EXE,即使我能够将脚本转换为 EXE,当我尝试执行该程序时也会收到以下错误消息。关于我可以做些什么来解决这个问题的任何想法?
nlp - Milvus 在 150K 记录的 CPU 上的索引速度非常慢
我们使用 milvus 和 CPU 部署的默认配置,每条新记录都被引入 milvus,我们正在为这个集合在 milvus 中重建索引,但是我们发现构建索引所需的时间增加了(当单个工作区中的记录达到大约150K)大约半分钟
所以我们删除了手动构建索引,让 milvus 重建基于,index_file_size
但是那里有一些东西,因为在另一个工作区中搜索,在禁用手动索引之前已经正确索引变得比以前慢得多
所以我的问题是?
- 工作空间中的索引会受到非索引工作空间的影响吗?
- 为什么插入和建立索引需要这么长时间?
- 如何选择完美
index_file_size
?您对cpu
在生产中使用 milvus 有什么建议吗?
faiss - 如何以最小距离> 0在faiss中搜索knn
我在 faiss 中执行搜索,但有时我查询的样本被编入索引,这没关系。但是当查询 k 最近邻时,返回的样本之一就是查询的样本。我可以在搜索后将其删除,但随后我得到了 k-1 个样本,这不是我想要的。有什么方法可以在搜索过程中忽略完全相似的样本?例如,通过将最小距离设置为 > 0?或任何其他方法。