作者:Aris Papadopoulos, Gilad Gal
寻找意义,而不仅仅是文字
我们很高兴地与大家分享,在 8.8 中,Elastic ® 提供开箱即用的语义搜索。语义搜索旨在根据文本的意图或含义进行搜索,而不是词汇匹配或关键字查询。与传统的基于词汇术语的搜索相比,这是质的飞跃,提供了突破性的相关性。它在概念层面捕获单词之间的关系,理解上下文并根据含义显示相关结果,而不是简单地查询术语。
为了消除人工智能搜索的障碍,我们在 8.8 中引入了一种新的语义搜索模型(目前为技术预览版),该模型由 Elastic 训练和优化。使用它可以立即利用 Elastic 中原生的向量搜索和混合搜索的卓越语义相关性。
引入 Elastic Learned Sparse Encoder,一种用于语义搜索的新文本扩展模型
Elastic 在向量搜索和 AI 方面投入了三年时间,并在 8.0 中发布了对近似最近邻搜索的支持(在 Lucene 中使用 HNSW)。认识到实现语义搜索的工具正在迅速发展,我们以编程方式和通过 UI 提供了第三方模型部署和管理。借助组合功能,您可以载入向量模型(embedding)并通过熟悉的,已被增强的 search API 执行向量搜索。
假设一名员工正在寻找领导力课程。借助 Elastic Enterprise Search 中的向量搜索,我们可以更好地了解用户的意图并返回为其行业、组织和角色量身定制的课程。
- Jon Ducrou,Go1 工程高级副总裁
使用向量搜索的效果令人惊叹。但要实现这些目标,组织需要远远超出典型软件产品化的大量专业知识和努力。这包括在搜索将要执行的领域内对足够数量的查询进行注释(通常在数万个的数量级),在领域内重新训练机器学习(所谓的 “embedding”)模型以实现域适应,并维护模型以防止漂移。同时,出于隐私、支持、竞争或许可方面的考虑,您可能不想依赖第三方模型。因此,AI 驱动的搜索仍然超出了大多数用户的能力范围。
考虑到这一点,我们在 8.8 中引入了 Elastic Learned Sparse Encoder——技术预览版。您可以通过在 Elastic UI 中单击一个按钮来开始使用这个新的检索模型,适用于各种各样的用例,而且您不需要任何机器学习专业知识或部署工作。
机器学习训练模型管理
开箱即用的高级语义搜索
Elastic 的 Learned Sparse Encoder 使用文本扩展 为简单的搜索查询注入含义并提高相关性。它捕捉了英语单词之间的语义关系,并基于这些关系扩展搜索查询,包括查询中不存在的相关术语。这比使用词汇评分 (BM25) 添加同义词更强大,因为它使用这种更深层次的语言尺度知识来优化相关性。不仅如此,上下文也被考虑在内,有助于消除在不同句子中可能有不同解释的单词的歧义。
因此,该模型有助于缓解词汇不匹配问题:即使文档中不存在被查询术语,Elastic Learned Sparse Encoder 也会返回相关文档(如果存在)。
根据我们的比较,这种新颖的检索模型在 12 个重要的相关性基准测试中有 11 个优于词汇搜索,而结合两者的混合搜索在所有 12 个相关性基准中都表现最好。换句话说,你可以在不同的领域中获得很好的性能,而在某些情况下,与词汇搜索的结合可以获得最佳的性能。如果你已经花了精力在你的领域中对词汇搜索进行了微调,你可以从混合评分中获得额外的提升!
为什么选择 Elastic 的 Learned Sparse Encoder?
最重要的是,您可以开箱即用地使用这个新模型,无需域适应——我们将在下面详细解释;它是一个稀疏向量模型,在领域外或零样本中表现良好。让我们来看看这些特性如何直接转化为您的搜索应用程序的价值:
- 我们的模型的训练和架构方式使您不需要对其进行数据微调。作为一个跨领域模型,它在没有应用特定领域重新训练的情况下,优于密集向量模型。换句话说,只需在 UI 上点击 “deploy”,就可以使用最先进的语义搜索与您的数据一起使用。
- 我们的模型在相同基准测试下优于 SPLADE(稀疏词汇和扩展模型),这是之前的跨领域、稀疏向量、文本扩展冠军。
- 此外,您不必担心许可证、支持、竞争力的连续性以及超出 Elastic 许可证层次的可扩展性。例如,SPLADE 仅适用于非商业用途。我们的模型可在我们的 Platinum 订阅层次中使用。
- 作为稀疏向量表示,它使用 Elasticsearch、基于 Lucene 的倒排索引。这意味着可以利用数十年的优化来提供最佳性能。因此,Elastic 提供了市场上最强大和最轻松的混合搜索解决方案之一。
- 出于同样的原因,它既更高效,也更可解释。与密集表示相比,激活的维度更少,并且它们通常直接映射到单词,而不是密集表示的不透明性。在词汇不匹配的情况下,这将清楚地显示查询中不存在的哪些词触发了结果。
让我们来谈谈性能和 Elasticsearch 作为向量数据库的问题
保留数万个维度的向量并在它们上执行向量相似度可能听起来像是一个规模和延迟的挑战。然而,稀疏向量压缩效果非常好,而 Elasticsearch(和 Lucene)倒排索引是这种用例的强大技术方法。此外,对于 Elastic 来说,向量相似度是一种计算强度较小的操作,因为 Elasticsearch 隐藏了一些巧妙的倒排索引技巧。总体而言,使用我们的稀疏检索模型时,查询性能和索引大小都非常出色,并且与典型的密集向量索引相比,需要更少的资源。
话虽如此,无论平台如何,向量搜索(稀疏或密集)与词汇搜索相比,在内存占用和时间复杂度方面都具有固有的更大占用。Elastic 作为向量数据库进行了优化,并在所有层面(数据结构和算法)提供了所有可能的优势。尽管与词法搜索相比,学习稀疏检索可能需要更多资源,但根据您的应用程序和数据,它提供的增强功能很值得投资。
未来:市场上最强大的混合搜索
在第一个技术预览版中,我们将输入的长度限制为 512 个标记(tokens),这大约是每个字段中通过推理管道的前 300-400 个单词。这对于许多用例来说已经足够了,我们正在研究在未来版本中处理更长文档的方法。为了成功进行早期评估,我们建议使用大部分信息存储在前 300-400 个单词中的文档。
在评估了不同的相关性模型之后,我们发现最好的结果来自于不同排名方法的集合。您可以通过我们简化的搜索 API,将向量搜索(使用或不使用新的检索模型)与 Elastic 的词汇搜索相结合。将每种方法的归一化分数线性组合可以提供出色的结果。
但是,我们想要突破界限,通过消除基于分数、数据、查询等的微调的任何搜索科学努力,提供市场上最强大的混合搜索功能。为此,我们在 8.8 中发布了 Reciprocal Rank Fusion(RRF),最初可与 Elastic 中的第三方模型一起使用,并且我们正在努力通过 RRF 将我们的稀疏检索模型和词汇搜索集成到后续版本中。这样,您将能够利用 Elastic 的创新混合搜索架构,通过您熟悉并信任多年成熟的 Elastic 搜索 API,结合语义、词汇和多媒体进行混合搜索。
最后,在努力实现 GA 生产就绪版本的过程中,我们正在探索处理长文档和整体优化的策略,以进一步提高性能。
立即开始使用 Elastic 的人工智能搜索
要试用 Elastic Learned Sparse Encoder,请前往经过训练的模型视图中的机器学习或企业搜索,只需单击一个按钮,即可开始使用语义相关的术语丰富您摄取的数据。如果您还没有访问 Elastic 的权限,您可以在此处请求访问所需的高级试用版。
要更深入地了解新模型的架构和训练,请阅读我们机器学习专家的博客。
要了解如何使用该模型进行语义搜索和混合搜索,请访问我们的 API 和需求文档。
本博文中描述的任何特性或功能的发布和时间安排均由 Elastic 自行决定。当前不可用的任何特性或功能可能无法按时交付或根本无法交付。