首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >拥抱变形金刚FAISS指数得分

拥抱变形金刚FAISS指数得分
EN

Stack Overflow用户
提问于 2022-08-08 20:01:46
回答 1查看 256关注 0票数 2

Huggingface库有一个非常棒的特性:它可以在嵌入数据集上创建FAISS索引,从而允许搜索最近的邻居。

代码语言:javascript
复制
train_ds['train'].add_faiss_index("embedding")
scores, sample = train_ds.get_nearest_examples("embedding", query_embedding, k=10)

我试图理解scores的意义和它背后的直觉。例如,如果我们将余弦相似性与faiss搜索分数联系起来,这就是我们得到的结果:

代码语言:javascript
复制
from scipy.spatial.distance import cosine
print("cosine sim", "faiss score")
for i in range(10):
  distance = cosine(query_embedding, sample["embedding"][i])
  print(np.round(1-distance, 3), scores[i])

我们得到了这个:

代码语言:javascript
复制
cosine sim   faiss score
0.9983       75.67109
0.9961       149.42262
0.9969       169.43077
0.9939       243.45598
0.9914       284.8134
0.9963       309.41052
0.9934       327.74158
0.9898       330.72858
0.9897       337.12408
0.99         337.60126 

正如你所看到的,余弦的相似性是相当一致的,并且非常接近1。然而,faiss搜索的分数差别很大。我试图了解这些数字代表了什么,以及它们是如何计算出来的。它们能用于返回搜索结果吗?不幸的是,文档没有涵盖这一点。

EN

回答 1

Stack Overflow用户

发布于 2022-08-26 15:26:44

FAISS使用binning和PQ (产品量化)快速获得近似答案,并且需要的内存大大减少。因此,分数可能会反弹,因为这个近似。它甚至不保证找到所有的KNN,因为它的近似(由于取样的一些桶,我认为)。

所以是的,如果你想要的话,你可以使用一个截止线,意识到FAISS正在采取的聪明的捷径永远不会产生与余弦相似的东西。但是余弦相似性不能完成FAISS所能完成的任务。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73283413

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档