NLPJCL / RAG-Retrieval

Unify Efficient Fine-tuning of RAG Retrieval, including Embedding, ColBERT,Cross Encoder
MIT License
441 stars 38 forks source link

训练问题 #12

Closed shiztong closed 4 months ago

shiztong commented 4 months ago

请教一下作者, 你的这个实现,比BGE自有的训练效果会更好么?

NLPJCL commented 4 months ago

您好,训练模型主要还是看数据和场景。BGE是很好的训练框架,我们目前这一版本主要做了一些场景适配的工作。目前RAG-Retrieval这一版本,主要还是兼容多种不同的开源模型。

1.比如embedding,可以无缝衔接各大开源的。而不用关注pooling方法。 2.比如cross encoder的reranker,bge的reranker用交叉熵loss,预测的时候才用sigmoid归一化到0-1,其实分布不是特别均匀,无法很好的完成筛选不相关doc的功能。BCE的reranker支持这种功能,但其没有开源训练代码,它也不能用BGE来训练,否则会失去这个功能。而RAG-Retrieval在训练的过程中,采用BCE loss 或者支持MSE loss,其可以将query和doc的score可以归一化到0-1中间,可以完成筛选掉不相关的负例doc的功能。 3.另外,colbert,bge的训练代码(将稀疏,向量和colbert和在一起),这里单独实现了colbert。

此外,我们也招募一些社区的朋友,在贡献更多的功能,具体可以参考我们的RoadMap,后续将支持LLM-base的训练以及预测,或者用LLM来人造数据等等。 https://saber-roof-e9f.notion.site/RAG-Retrieval-Roadmap-c817257e3e8a484b8850cac40a3fcf88?pvs=4