FlagEmbedding icon indicating copy to clipboard operation
FlagEmbedding copied to clipboard

请问BGE embedding中eval_msmarco里为什么要用train和dev两个数据集测试

Open 128Ghe980 opened this issue 2 years ago • 2 comments

在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 }

128Ghe980 avatar Jan 18 '24 04:01 128Ghe980

参考评估代码:https://github.com/FlagOpen/FlagEmbedding/blob/master/FlagEmbedding/baai_general_embedding/finetune/eval_msmarco.py#L146

排序指标的测试逻辑:给定一个query, 从候选集corpus中找到相似度最大的k条文本,判断positive是否在这k条样本中。 因此需要一个corpus。没有的话,也可以把所有query的positive都合在一起作为候选集。

staoxiao avatar Jan 18 '24 07:01 staoxiao

参考评估代码:https://github.com/FlagOpen/FlagEmbedding/blob/master/FlagEmbedding/baai_general_embedding/finetune/eval_msmarco.py#L146

排序指标的测试逻辑:给定一个query, 从候选集corpus中找到相似度最大的k条文本,判断positive是否在这k条样本中。 因此需要一个corpus。没有的话,也可以把所有query的positive都合在一起作为候选集。

明白喽。谢谢

128Ghe980 avatar Jan 19 '24 01:01 128Ghe980