亚马逊AWS官方博客

尝试使用 Amazon OpenSearch Service 向量引擎进行语义搜索

Amazon OpenSearch Service 自 2020 年推出 kNN 插件以来,一直支持词法和向量搜索。随着生成式人工智能的最新发展,包括 AWS 在 2023 年初推出 Amazon Bedrock,您现在可以将 Amazon Bedrock 托管的模型与 OpenSearch Service 的向量数据库功能结合使用,从而基于高质量的向量搜索实现语义搜索、检索增强生成(RAG)、推荐引擎和富媒体搜索。最近推出的 Amazon OpenSearch 无服务器的向量引擎使部署此类解决方案变得更加容易。

OpenSearch Service 支持各种搜索和相关性排名技术。词汇搜索在文档中查找查询中出现的单词。在向量嵌入的支持下,语义搜索将文档和查询嵌入到一个语义高维向量空间中,在这个空间中,具有相关含义的文本在向量空间中是邻近的,因此在语义上是相似的,因此即使这些文本与查询不共享任何字词,它也会返回相似的项目。

我们在公共 OpenSearch Playground 上提供了两个演示,向您展示不同技术的优缺点:一个是文本向量搜索与词汇搜索的比较,另一个是跨模态文本和图像搜索与文本向量搜索的比较。使用 OpenSearch 的搜索比较工具,您可以比较不同的方法。在演示中,我们使用 Amazon Bedrock 上托管的 Amazon Titan 基础模型进行嵌入,没有进行任何微调。数据集由亚马逊服装、珠宝和户外产品组成。

背景

搜索引擎是一种特殊的数据库,允许您存储文档和数据,然后运行查询来检索最相关的文档和数据。最终用户搜索查询通常由在搜索框中输入的文本组成。使用该文本的两个重要技术是词汇搜索语义搜索。 在词汇搜索中,搜索引擎将搜索查询中的字词与文档中的字词进行比较,逐字匹配。只有包含用户键入的全部或大部分字词的项目才与查询匹配。在语义搜索中,搜索引擎使用机器学习(ML)模型将源文档中的文本编码为高维向量空间中的密集向量,这也称为将文本嵌入向量空间。它同样将查询编码为向量,然后使用距离度量在多维空间中查找附近的向量。查找附近向量的算法称为 kNN(k 最近邻)。语义搜索并不匹配单个查询词,而是查找其向量嵌入接近查询在向量空间中的嵌入、因而在语义上与查询相似的文档,因此用户可以检索到查询中没有任何字词的项目,即使这些项目具有高度相关性。

文本向量搜索

文本向量搜索的演示展示了向量嵌入如何捕获查询的上下文,而不仅仅是构成查询的字词。

在顶部的文本框中,输入查询网球服装。左边(查询 1)是使用 amazon_products_text_embedding 索引进行的 OpenSearch DSL(用于查询的域特定语言)语义查询,右边(查询 2)是使用 amazon_products_text 索引进行的简单词法查询。您会发现,词汇搜索不知道衣服可以是上衣、短裤、连衣裙等,但语义搜索知道。

搜索比较工具

比较语义和词汇结果

同样,在搜索温暖天气的帽子时,语义搜索结果会出现很多适合温暖天气的帽子,而词汇搜索结果则会出现“温暖”和“帽子”,所有这些都是适合寒冷天气的温暖帽子,而不是适合温暖天气的帽子。同样,如果您要寻找长袖连衣裙,您可以搜索长袖连衣裙。词汇搜索最终找到了一些长袖短裙,甚至还有一件儿童裙衫,因为描述中出现了“裙子”一词,而语义搜索则找到了更多相关结果:大部分是长袖长裙,只有几个错误。

跨模态图像搜索

跨模态文本和图像搜索的演示展示了使用文本描述搜索图像。其工作原理是通过预制的多模态嵌入找到与文本描述相关的图片。我们将比较视觉相似性搜索(左侧)和文本相似性搜索(右侧)。在某些情况下,我们得到的结果非常相似。

搜索比较工具

比较图像和文本嵌入

例如,搜索帆船鞋时,两种方法的表现都很好,但搜索白色帆船鞋时,视觉相似性搜索的表现更好。使用视觉相似性查询独木舟,找到的大多是独木舟,这可能是用户所期望的,但使用文本相似性查询独木舟和独木舟配件(如桨),找到的则是独木舟的混合物。

如果您有兴趣探索多模态模型,请联系您的 AWS 专家。

利用语义搜索构建高质量的搜索体验

通过这些演示,您可以了解基于向量的语义搜索与基于字词的词汇搜索的功能,以及利用 OpenSearch 无服务器的向量引擎来构建搜索体验可以实现什么。当然,高质量的搜索体验还会使用更多的技术来改进搜索结果。特别是,我们的实验表明,在行业标准测试集上,结合词汇和向量方法的混合搜索通常能比单独的词汇或向量搜索提高 15% 的搜索结果质量,具体衡量标准是 NDCG@10(前 10 个结果的归一化折损累计增益)。之所以有这样的改进,是因为在处理非常具体的事物名称时,词汇优于向量,而在处理更广泛的查询时,语义效果更好。例如,在语义与词汇比较中,查询 saranac 146(一个独木舟品牌)在词汇搜索中效果很好,而语义搜索却不会返回相关结果。这就说明了为什么语义搜索和词汇搜索结合能提供更好的结果。

结论

OpenSearch Service 包括一个支持语义搜索和经典词汇搜索的向量引擎。演示页面中的示例展示了不同技术的优缺点。在 OpenSearch 2.9 或更高版本中,您可以对自己的数据使用搜索比较工具。

更多信息

有关 OpenSearch 语义搜索功能的更多信息,请参阅以下资源:


Original URL: https://aws.amazon.com/id/blogs/big-data/try-semantic-search-with-the-amazon-opensearch-service-vector-engine/

关于作者

Stavros Macrakis 是 Amazon Web Services OpenSearch 项目的高级技术产品经理。他热衷于为客户提供提高搜索结果质量的工具。