FlagOpen / FlagEmbedding

Retrieval and Retrieval-augmented LLMs
MIT License
7.44k stars 534 forks source link

关于使用BGE-M3做自然语言推理任务 #1073

Open leomeow33 opened 2 months ago

leomeow33 commented 2 months ago

我希望用bge-m3做自然语言推理任务,就是输入[前提,假设],做一个三分类,分类得到假设和前提的关系是[蕴含,无关,矛盾]中的一者。

我觉得这个自然语言推理任务可以用来缓解RAG场景大模型的幻觉问题,因为RAG检索到的大段文档全都让LLM去理解的话,LLM很容易产生幻觉,就是其【输出的内容】与【供它参考的上下文】矛盾或者无关。

请问有相关的经验或者建议吗?可以为我指个路吗?我目前简单地用bge计算嵌入的余弦相似度,用高相似度代表蕴含,低相似度代表无关,感觉这种方法的效果很一般。NLI任务在中文方面的工作不多,中文语料也很少,如果自己训练分类器的话大概是什么样的路径呢?或者有别的基于bge实现NLI的方法吗?

万分感谢。

staoxiao commented 2 months ago

可以尝试使用bge-reranker-v2-m3模型去计算分数,这个分数比向量相似度更准确。 自己训练的话主要是数据问题。也可以直接用大模型来判断是否相关。

leomeow33 commented 2 months ago

可以尝试使用bge-reranker-v2-m3模型去计算分数,这个分数比向量相似度更准确。 自己训练的话主要是数据问题。也可以直接用大模型来判断是否相关。

感谢!这个reranker模型好用多了,之前都不知道有直接计算相似度的办法。划了一个4分以上算支持,-1以下算矛盾的分类阈值,效果还不错。 我计划接下来按https://github.com/FlagOpen/FlagEmbedding/tree/master/examples/reranker里的流程去训一下,感谢回复!