如何选择最适合语义搜索的模型
探索用于语义搜索的最佳嵌入模型。了解我们在构建语义搜索时的模型性能、成本和相关性比较。

语义搜索通过专注于理解用户搜索中词语和短语背后的含义,而不是仅仅依赖于逐字匹配,从而改变了我们在线查找信息的方式。
它使用机器学习 (ML) 和自然语言处理 (NLP) 来解码意图、上下文以及词语之间的关系,从而实现更具对话性的查询。这使其成为需要从大型或复杂数据集中获得快速、准确和相关结果的企业的重要工具。
嵌入模型是将词语和短语渲染成复杂数值表示的 ML 技术,然后根据其上下文和关系对其进行分类。然而,并非所有模型都相同。它们之间的准确性、速度、索引效率和定价可能差异很大。
选择正确的语义搜索模型对于为特定任务提供精确、高效且可扩展的搜索体验至关重要。
了解权衡——无论是针对多语言支持、搜索延迟还是计算效率——都将帮助您为您的品牌实施高性能的语义搜索系统。
什么是语义搜索?
语义搜索是一种先进的 AI 驱动的信息检索方法,它侧重于 NLP、ML 和知识表示,以推断用户查询的意图和上下文含义。
传统的基于关键词的搜索引擎匹配单词的确切字符串,但这并不总是足够。语义搜索通过结合命名实体识别、词语之间的关系和上下文消除歧义来提供更相关的结果,从而更进一步。
语义搜索引擎可以理解同义词、释义查询,甚至可以推断出隐含含义,这完全是因为它们使用了诸如 Transformer 之类的深度学习模型。
鉴于其增强搜索标准的能力,AI 驱动的搜索对于需要更快、更广泛甚至更少结构的数据检索的应用程序至关重要。
为什么语义搜索很重要?
语义搜索之所以重要,是因为它可以提高搜索能力和相关性,从而帮助用户更快地找到信息,并减少不相关的结果。它还可以通过更清晰地解释自然语言查询来减少不确定性。
与相似性搜索一样,它允许用户以对话式和直观的方式措辞提问,而不是使用特定的——有时甚至是长尾——关键词。可以这样想:如果您可以向公交车上的邻居提问,那么您可以使用快速语义搜索来提问。
此外,企业可以通过增强客户体验、改进产品发现和优化知识管理系统从语义搜索中受益。
例如,像 Bookshop.org 这样的电子商务商店可以通过实施像 Meilisearch 这样的语义搜索工具,将基于搜索的销售额提高多达 43%。
语义搜索的核心组成部分是嵌入模型,通过它可以进行相似性计算。
什么是嵌入模型?
嵌入模型是机器学习模型,它将单词、短语或文档转换为称为嵌入的密集数值表示。
这些向量表示编码了词语关系,这使得搜索引擎可以比较语义意义和上下文,而不是仅仅依赖于词语之间的确切相似性。
例如,为“手机”、“移动电话”和“蜂窝电话”生成的嵌入在向量空间中将比“蜂窝电话”和“铃铛”更紧密地对齐,即使后两者在逐字母相似性方面更接近。
这使得搜索引擎即使在缺少确切关键词的情况下也能检索到相关结果,从而支撑各种 NLP 和 LLM(大型语言模型)应用程序。
语义嵌入和搜索嵌入之间有什么区别?
语义嵌入和搜索嵌入在 NLP 应用程序中(尤其是在语义搜索中)服务于不同的目的。
语义嵌入捕获词语之间的含义和关系,这对于诸如文档分类、推荐系统、语言翻译和情感分析之类的任务很有帮助。它们通过反映词语的概念相似性来实现这一点,即使它们没有在相同的上下文中被使用。
另一方面,搜索嵌入专门针对检索任务进行了优化,从而确保查询和索引文档在向量空间中有效对齐,以最大化搜索相关性。
与通用语义嵌入不同,搜索嵌入通常结合了特定领域和背景的优化,以微调特定检索活动的有效性。
例如,语义嵌入模型可能会学习到“mac”与意大利面、化妆品公司和 Apple 笔记本电脑有关。但是,在计算机和硬件上训练的搜索嵌入模型在处理该领域的搜索查询时将优先考虑第三个含义。
嵌入模型充当语义搜索的支柱,通过启用与用户意图对齐的基于相似性的检索机制。
嵌入模型在语义搜索中扮演什么角色?
嵌入模型通过将文本转换为可以有效索引和检索的结构化格式来支持语义搜索。
这些模型不是依赖于确切的关键词匹配,而是比较查询嵌入与索引文档嵌入。这实现了最近邻搜索,并显着提高了检索准确性,优于依赖于关键词匹配的传统算法。
这些模型通常使用基于 Transformer 的架构,例如 BERT(来自 Transformer 的双向编码器表示)、GPT(生成式预训练 Transformer)及其派生的神经网络,以捕获上下文感知的表示。
这就是它们如何大规模处理细微的查询。例如,即使“cat”和“bat”听起来(和看起来)相似,但它们中只有一个可以在上下文中用作传统的家养宠物。
几种微调的和预训练的模型继续成为语义搜索的行业标准。每种模型都以自己的方式提高了精度、相关性、效率和/或可扩展性。
语义搜索最常用的模型有哪些?
不同的嵌入模型在向量维度、上下文长度和某些其他性能特征方面有所不同。
在 LLM 的上下文中,维度指向向量中组件的数量,每个组件对应于编码变量的属性。此外,上下文长度与模型可以在任何给定时间“记住”和引用的文本量(通常以标记衡量)有关。
为了评估这些差异,使用 Meilisearch 进行了一系列基准测试,评估了每种模型在您将遇到的真实世界搜索场景中的有效性。
这些测试衡量了诸如检索准确性、索引速度和查询延迟之类的因素,这就是他们如何评估每种模型在特定搜索条件下的性能。
模型/服务 | 维度 | 上下文长度 |
---|---|---|
Cohere embed-english-v3.0 | 1024 | 512 |
Cohere embed-english-light-v3.0 | 384 | 512 |
Cohere embed-multilingual-v3.0 | 1024 | 512 |
Cohere embed-multilingual-light-v3.0 | 384 | 512 |
OpenAI text-embedding-3-small | 1536 | 8192 |
OpenAI text-embedding-3-large | 3072 | 8192 |
Mistral | 1024 | 8192 |
VoyageAI voyage-2 | 1024 | 4000 |
VoyageAI voyage-large-2 | 1536 | 16000 |
VoyageAI voyage-multilingual-2 | 1024 | 32000 |
Jina Colbert v2 | 128、96 或 64 | 8192 |
OSS all-MiniLM-L6-v2 | 384 | 512 |
OSS bge-small-en-v1.5 | 1024 | 512 |
OSS bge-large-en-v1.5 | 1536 | 512 |
您对语义搜索模型的选择将取决于多种因素,包括但不限于其准确性、计算效率和成本。
在选择最佳语义搜索模型时应考虑哪些因素?
1. 结果相关性
相关性是有效语义搜索的基石,尤其是在实现最佳用户体验方面。正确的模型应平衡精度、召回率和速度,以确保用户在没有过多干扰的情况下收到高度相关的结果。
当比较诸如向量和全文搜索之类的混合方法时,这种平衡尤其重要。在选择嵌入模型时,请考虑以下几点
- 多语言支持;
- 处理多模式数据;
- 特定领域的性能。
在这种情况下,越大可能并不总是意味着越好。虽然较大的模型通常提供更好的准确性,但较小的模型可以以较低的计算成本提供有竞争力的结果。
此外,有效地组织数据(例如使用 Meilisearch 中优化的文档模板)可以提高搜索质量。
2. 搜索性能
搜索延迟是用户体验中的一个关键因素。即时搜索已成为面向客户的应用程序的标准,因为快速、响应迅速的搜索结果可以提高用户参与度和保留率。
本地嵌入模型是实现闪电般快速性能的理想选择,因为它们消除了往返外部服务的需要并减少了延迟。如果您必须依赖远程模型,则将搜索服务托管在靠近嵌入服务的位置可以最大程度地减少延迟并改善用户体验。
下表展示了各种本地嵌入模型和嵌入 API 的延迟基准。所有请求均来自托管在 AWS 伦敦数据中心的 Meilisearch 实例。
模型/服务 | 延迟 |
---|---|
Cloudflare bge-small-en-v1.5 | ±800 毫秒 |
Cloudflare bge-large-en-v1.5 | ±500 毫秒 |
Cohere embed-english-v3.0 | ±170 毫秒 |
Cohere embed-english-light-v3.0 | ±160 毫秒 |
本地 gte-small | ±20 毫秒 |
本地 all-MiniLM-L6-v2 | ±10 毫秒 |
本地 bge-small-en-v1.5 | ±20 毫秒 |
本地 bge-large-en-v1.5 | ±60 毫秒 |
Mistral | ±200 毫秒 |
Jina colbert | ±400 毫秒 |
OpenAI text-embedding-3-small | ±460 毫秒 |
OpenAI text-embedding-3-large | ±750 毫秒 |
VoyageAI voyage-2 | ±350 毫秒 |
VoyageAI voyage-large-2 | ±400 毫秒 |
在 Meilisearch 中进行的基准测试突出了各种模型之间延迟的显着差异,本地模型的响应时间低至 10 毫秒,而某些基于云的服务则达到 800 毫秒。
3. 索引性能
高效索引是搜索解决方案可扩展性的另一个关键因素。正如预期的那样,处理和存储嵌入所需的时间在模型之间差异很大。影响处理时间的显着指标是 API 速率限制、批量处理能力和模型维度。
由于处理能力有限,没有 GPU 的本地模型可能会遇到较慢的索引速度,而第三方服务的速度因其基础设施和协议而异。
如前所述,最大限度地减少应用程序和模型之间的数据传输时间可以减少延迟并优化索引。评估这些因素可确保您选择的模型和服务能够有效地满足您的需求。
下面的基准比较了 10k 个电子商务文档集合的索引性能(使用自动嵌入生成)。
Meilisearch 基准测试表明,索引时间从优化的基于云的解决方案的不到一分钟到某些没有 GPU 加速的本地模型的数小时不等。
当您权衡应用程序中数据更新的频率和数量时,这些应该是重要的思考点。这是因为它们直接影响您的系统处理频繁或大量数据更新的速度,这对于保持搜索解决方案的性能和响应能力至关重要。
4. 定价
嵌入模型成本因提供商和使用模式而异。虽然本地模型可以免费运行,但它们需要计算资源,可能需要 GPU 投资。
另一方面,基于云的服务按百万个标记(或 Cloudflare 的每千个神经元)收费,成本范围为每百万个标记 0.02 美元到 0.18 美元。
提供商 | 价格 |
---|---|
Cohere | Embed 3 每百万个标记 0.10 美元 |
OpenAI | text-embedding-3-small 每百万个标记 0.02 美元 |
text-embedding-ada-002 每百万个标记 0.10 美元 | |
text-embedding-3-large 每百万个标记 0.13 美元 | |
Cloudflare | 每 1,000 个神经元 0.011 美元 |
Jina | 每百万个标记 0.18 美元 |
Mistral | 每百万个标记 0.10 美元 |
VoyageAI | voyage-3-lite 每百万个标记 0.02 美元 |
voyage-3 每百万个标记 0.06 美元 | |
voyage-multimodal-3 每百万个标记 0.12 美元 | |
voyage-code-3 每百万个标记 0.18 美元 | |
voyage-3-large 每百万个标记 0.18 美元 | |
本地模型 | 免费 |
因此,根据搜索需求和性能要求分析成本效益。通常最好从一个易于设置且具有强大的社区支持的知名模型开始。必要时,您可以迁移到像 AWS 这样的云提供商以获得更高的性能。
或者,您可以选择一个开源模型进行自托管,从而为您提供更大的灵活性。请注意,优化本地模型以实现大容量可能需要扩展您的基础设施。
5. 其他优化技术
为了最大限度地提高搜索性能,结合全文搜索和向量搜索的混合搜索方法可以产生最佳结果。为了改进语义搜索性能,请考虑以下优化
- 尝试模型预设,因为某些模型允许调整查询与文档嵌入,这可以提高相关性。
- 评估专用模型,尤其是那些采用检索增强生成的模型,因为特定领域的模型可以为特定用例提供卓越的结果。
- 探索提供重新排序功能的模型,这些功能可以进一步提高搜索精度。
- 测试更高级别的帐户,因为高级级别可能会提供更快的处理速度和减少的速率限制。
- 使用量化选项优化数据传输,以减少 API 响应大小并提高效率。
仔细评估这些因素将有助于您选择最适合您需求的语义搜索模型。
底线
现在我们已经一起经历了这段旅程,让我们总结一下我们所发现的。
模型/服务 | 维度 | 上下文长度 | 延迟 | 索引时间 | 定价(每百万个标记) |
---|---|---|---|---|---|
Cohere embed-english-v3.0 | 1024 | 512 | ±170 毫秒 | 43 秒 | $0.10 |
Cohere embed-english-light-v3.0 | 384 | 512 | ±160 毫秒 | 16 秒 | $0.10 |
OpenAI text-embedding-3-small | 1536 | 8192 | ±460 毫秒 | 95 秒 | $0.02 |
OpenAI text-embedding-3-large | 3072 | 8192 | ±750 毫秒 | 151 秒 | $0.13 |
Mistral | 1024 | 8192 | ±200 毫秒 | 409 秒 | $0.10 |
VoyageAI voyage-2 | 1024 | 4000 | ±350 毫秒 | 330 秒 | $0.10 |
VoyageAI voyage-large-2 | 1536 | 16000 | ±400 毫秒 | 409 秒 | $0.12 |
Jina Colbert v2 | 128、96 或 64 | 8192 | ±400 毫秒 | 375 秒 | $0.18 |
OSS all-MiniLM-L6-v2 | 384 | 512 | ±10 毫秒 | 880 秒 | 免费 |
OSS bge-small-en-v1.5 | 1024 | 512 | ±20 毫秒 | 3379 秒 | 免费 |
OSS bge-large-en-v1.5 | 1536 | 512 | ±60 毫秒 | 9132 秒 | 免费 |
选择最佳语义搜索模型取决于您希望通过特定用例、预算和性能要求实现什么(以及如何实现)。对于大多数情况,诸如 Cohere 或 OpenAI 提供的基于云的解决方案可能是最佳选择。
随着您的组织需求的增长,升级到本地或自托管解决方案可能值得花费成本和精力。了解您自己的需求对于做出明智的决定至关重要。
如果您不确定哪种模型最适合您,或者您正在寻找量身定制的解决方案,请联系 Meilisearch 的搜索专家。
常见问题解答 (FAQ)
语义搜索与基于关键词的搜索有何不同?
语义搜索侧重于理解含义,而基于关键词的搜索则依赖于确切的单词匹配。
好的语义搜索模型的关键特征是什么?
好的模型应提供高精度、低延迟、高效索引和成本效益。
基于 Transformer 的模型如何改进语义搜索?
Transformer 在上下文中处理文本,捕获单词之间的上下文关系,以提高搜索相关性,同时减少停机时间。
向量数据库如何增强语义搜索?
向量数据库有效地存储嵌入,从而实现快速且可扩展的搜索操作。
有哪些用于语义搜索的开源模型?
流行的开源语义搜索模型包括 all-MiniLM-L6-v2 和 Universal Sentence Encoder。