国科网

2024-06-26 14:28:33  星期三
立足国科融媒,服务先进科技
选择最适合数据的嵌入模型:OpenAI 和开源多语言嵌入的对比测试

点赞

0
发布时间:2024年02月26日 浏览量:74次 所属栏目:人工智能 发布者:田佳恬

OpenAI最近发布了他们的新一代嵌入模型embedding v3,他们将其描述为性能最好的嵌入模型,具有更高的多语言性能。这些模型分为两类:较小的称为text- embeddings -3-small,较大且功能更强大的称为text- embeddings -3-large。

这些模型的设计和训练方式的信息披露得很少,模型只能通过付费API访问。所以就出现了很多开源的嵌入模型但是这些开源的模型与OpenAI闭源模型相比如何呢?

本文将这些新模型与开源模型的性能进行实证比较。我们将创建一个数据检索工作流,在这个工作流中,必须根据用户查询找到语料库中最相关的文档。

我们的语料库是欧洲人工智能法案,该法案目前处于验证的最后阶段。这个语料库除了是世界上第一个关于人工智能的法律框架外,还有一个重要的特点就是它有24种语言版本。这样我们可以比较不同语系的数据检索的准确性。

我们将从多语言文本语料库生成自定义合成问题/答案数据集,在此自定义数据集上比较OpenAI和最先进的开源嵌入模型的准确性。最后会提供完整的代码,因为本文所采用的方法可以适用于其他数据语料库。

生成自定义Q/ A数据集

让我们首先从生成自定义数据的问答(Q/ A)数据集开始,生成自定义数据集的好处可以通过确保数据集不是嵌入模型训练的一部分来避免偏差,这可能发生在MTEB等参考基准上。并且我们可以将评估调整为特定的数据语料库,这可能与检索增强应用程序(RAG)等情况相关。

我们将使用Llama Index在其文档中建议的简单流程。语料库首先被分成块。然后对于每个分块,通过大型语言模型(large language model, LLM)生成一组合成问题,使答案位于相应的分块中:

使用Llama Index之类的LLM数据框架实现此策略非常简单,如下面的代码所示。

from llama_index.readers.web import SimpleWebPageReader
 from llama_index.core.node_parser import SentenceSplitter
 
 language = "EN"
 url_doc = "https://eur-lex.europa.eu/legal-content/"+language+"/TXT/HTML/?uri=CELEX:52021PC0206"
 
 documents = SimpleWebPageReader(html_to_text=True).load_data([url_doc])
 
 parser = SentenceSplitter(chunk_size=1000)
 nodes = parser.get_nodes_from_documents(documents, show_progress=True)

分享说明:转发分享请注明出处。

    热点图讯
    最新图讯
    相关图讯
    网站简介  |   联系我们  |   广告服务  |   监督电话
    本网站由国科网运营维护 国科网讯(北京)技术有限公司版权所有  咨询电话:010-88516927
    地址:北京市海淀区阜石路甲69号院1号楼1层一单元114
    ICP备案号:京ICP备15066964号-8   违法和不良信息举报电话:010-67196565
    12300电信用户申诉受理中心   网络违法犯罪举报网站   中国互联网举报中心   12321网络不良与垃圾信息举报中心   12318全国文化市场举报网站
    代理域名注册服务机构:阿里巴巴云计算(北京)有限公司