从向量搜索到强大的 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 模型 在您选择的语言和数据集上尝试 多语言语义搜索 。




