利用混合搜索重排提高多语言嵌入模型的相关性

了解如何在 Elasticsearch 中使用 Cohere 的 reranker 和混合搜索提高 E5 多语言嵌入模型搜索结果的相关性。

从向量搜索到强大的 REST API,Elasticsearch 为开发人员提供了最全面的搜索工具包。探索 GitHub 上的示例笔记本,尝试新事物。您也可以立即开始免费试用在本地运行 Elasticsearch

引言

本系列的最后一部分,我们介绍了如何部署 Elastic 预训练的 E5 模型(以及 Hugging Face 提供的其他多语言文本嵌入模型),并深入探讨了如何使用 Elasticsearch 和 Kibana 从文本数据中生成密集向量嵌入。在本博客中,我们将研究这些嵌入的结果,并强调利用多语言模型的显著优势。

现在我们已经有了索引coco_multilingual ,执行搜索时将会得到多种语言的文档,其中的 "en "字段可供我们参考:

用英语进行搜索

让我们尝试用英语进行搜索,看看效果如何:

在这里,尽管查询看起来非常简单,但我们要搜索的是 "kitty "一词在所有语言的所有文档中的数字嵌入。由于我们执行的是矢量搜索,因此可以从语义上搜索所有可能与 "kitty "相关的词:猫"、"小猫"、"猫科动物"、"gatto"(意大利语)、"mèo"(越南语)、고양이(韩语)、猫(汉语)等。因此,即使我的查询是以英语进行的,我们也可以搜索到所有其他语言的内容。例如,搜索 kitty lying on something ,也会出现意大利语、荷兰语或越南语的文档。谈效率

搜索其他语言的内容

同样,用韩语("고양이")搜索关键词 "猫 "也会得到有意义的结果。令人惊叹的是,在这份索引中,我们甚至没有任何韩文文件!

这是因为嵌入模型在共享语义空间中表示意义,即使查询语言与索引标题不同,也能检索到相关图像。

利用混合搜索和重新排序增加相关搜索结果

我们很高兴相关结果如期出现。但是,在现实世界中,比如在电子商务或 RAG 应用程序中,需要缩小到前 5-10 个最适用的结果,我们可以使用 rerank 模型来优先处理最相关的结果。

在这里,用越南语查询 "猫是什么颜色的?"会得到很多结果,但前 1 或前 2 个结果可能不是最相关的。

结果都提到了猫或某种颜色:

因此,让我们来改进这一点!让我们结合Cohere的多语言 rerank 模型来改进与我们的问题相对应的推理。

现在,有了最重要的结果,我们的应用程序就可以肯定地回答,这只小猫的颜色是黑色或带条纹的棕色。更有趣的是,我们的矢量搜索实际上发现了原始数据集中英文标题的遗漏。尽管参考英译本忽略了这一细节,但它还是能找到那只棕色条纹的猫。这就是矢量搜索的威力。

结论

在这篇博客中,我们介绍了多语言嵌入模型的实用性,以及如何利用 Elasticsearch 来集成模型以生成嵌入,并通过混合搜索和重新分词器来有效提高相关性和准确性。您可以 创建一个 自己的 云集群 使用我们开箱即用的 E5 模型 在您选择的语言和数据集上尝试 多语言语义搜索 。

相关内容

准备好打造最先进的搜索体验了吗?

足够先进的搜索不是一个人的努力就能实现的。Elasticsearch 由数据科学家、ML 操作员、工程师以及更多和您一样对搜索充满热情的人提供支持。让我们联系起来,共同打造神奇的搜索体验,让您获得想要的结果。

亲自试用