Open 128Ghe980 opened 7 months ago
排序指标的测试逻辑:给定一个query, 从候选集corpus中找到相似度最大的k条文本,判断positive是否在这k条样本中。 因此需要一个corpus。没有的话,也可以把所有query的positive都合在一起作为候选集。
排序指标的测试逻辑:给定一个query, 从候选集corpus中找到相似度最大的k条文本,判断positive是否在这k条样本中。 因此需要一个corpus。没有的话,也可以把所有query的positive都合在一起作为候选集。
明白喽。谢谢
在eval_msmarco中出现:
eval_data = datasets.load_dataset("namespace-Pt/msmarco", split="dev") corpus = datasets.load_dataset("namespace-Pt/msmarco-corpus", split="train")
之后将corpus作为faiss_index,eval_data 作为query。 为什么会这样验证呢? 我自己的理解的验证应该是一个QA对数据,将Q作为query,A作为corpus,然后检索,计算各个指标。应该使用一个数据集就够了,为什么不只使用namespace-Pt/msmarco呢?它有query和positive。 还是说以下这些指标就是需要两个数据集这么算。
{ 'MRR@1': 0.2330945558739255, 'MRR@10': 0.35786976395142633, 'MRR@100': 0.3692618036917553, 'Recall@1': 0.22606255969436478, 'Recall@10': 0.6412965616045848, 'Recall@100': 0.9012774594078318 }