语义搜索通过侧重于理解用户搜索中词语和短语背后的含义,而不是仅仅依赖于逐字匹配,从而改变了我们在线查找信息的方式。
它利用机器学习(ML)和自然语言处理(NLP)来解码意图、上下文和词语之间的关系,从而实现更具对话性的查询。这使得它成为需要从大型或复杂数据集中获得快速、准确和相关结果的企业的关键工具。
嵌入模型是机器学习技术,它将词语和短语转换为复杂的数字表示,然后根据它们的上下文和关系进行分类。然而,并非所有模型都相同。它们之间的准确性、速度、索引效率和定价可能差异很大。
选择正确的语义搜索模型对于为特定任务提供精确、高效和可扩展的搜索体验至关重要。
理解权衡——无论是多语言支持、搜索延迟还是计算效率——都将帮助您为您的品牌实施高性能的语义搜索系统。
什么是语义搜索?
语义搜索是一种先进的、由人工智能驱动的信息检索方法,它侧重于自然语言处理、机器学习和知识表示,以推断用户查询的意图和上下文含义。
传统的基于关键词的搜索引擎匹配精确的单词字符串,但这并不总是足够的。语义搜索通过结合**命名实体识别**、**词语之间的关系**和**上下文消歧**来提供更相关的结果,从而更进一步。
语义搜索引擎可以理解同义词、意译查询,甚至推断隐含意义,这完全是因为它们使用了深度学习模型,例如 Transformer。
鉴于其增强搜索能力的能力,人工智能驱动的搜索对于需要更快、更广泛甚至更少结构化的数据检索的应用程序至关重要。
为什么语义搜索很重要?
语义搜索很重要,因为它提高了搜索能力和相关性,从而帮助用户更快地找到信息,并减少不相关的结果。它还通过更清晰地解释自然语言查询来减少不确定性。
与相似性搜索一样,它允许用户以对话和直观的方式表达他们的问题,而不是使用特定的——有时甚至是长尾——关键词。这样想:如果你能在公交车上问你的邻居一个问题,那么你也可以通过快速语义搜索来提问。
此外,企业通过**增强客户体验**、**改进产品发现**和**优化知识管理系统**而受益于语义搜索。
例如,像 Bookshop.org 这样的电子商务商店可以通过实施 Meilisearch 等语义搜索工具,将基于搜索的销售额提高高达 43%。
语义搜索的核心组成部分是嵌入模型,通过它们可以实现相似性计算。
什么是嵌入模型?
嵌入模型是将词语、短语或文档转换为称为嵌入的密集数值表示的机器学习模型。
这些向量表示编码了词语关系,这使得搜索引擎能够比较语义含义和上下文,而不是仅仅依赖于词语之间的精确相似性。
例如,“**电话**”、“**手机**”和“**蜂窝**”等词语生成的嵌入在向量空间中的对齐程度将比“**蜂窝**”和“**铃铛**”更接近,即使后两者在字母相似性上更接近。
这允许搜索引擎在缺少精确关键词的情况下也能检索到相关结果,为各种自然语言处理和大型语言模型(LLM)应用程序提供了基础。
语义嵌入和搜索嵌入有什么区别?
语义嵌入和搜索嵌入在自然语言处理应用程序中,特别是在语义搜索中,服务于不同的目的。
**语义嵌入**捕获词语之间的含义和关系,这对于文档分类、推荐系统、语言翻译和情感分析等任务很有帮助。它们通过反映词语的概念相似性来做到这一点,即使它们不在相同的上下文中使用。
另一方面,**搜索嵌入**专门针对检索任务进行了优化,从而确保查询和索引文档在向量空间中有效对齐,以最大化搜索相关性。
与通用语义嵌入不同,搜索嵌入通常结合了特定领域和背景的优化,以微调特定检索活动的有效性。
例如,一个语义嵌入模型可能会了解到“mac”与意大利面、化妆品公司和苹果笔记本电脑有关。然而,一个针对计算机和硬件训练的*搜索嵌入模型*在处理该领域的搜索查询时会优先考虑第三种含义。
嵌入模型通过启用与用户意图对齐的基于相似性的检索机制,成为语义搜索的支柱。
嵌入模型在语义搜索中扮演什么角色?
嵌入模型通过将文本转换为可以高效索引和检索的结构化格式来支持语义搜索。
这些模型不是依赖精确的关键词匹配,而是将**查询**嵌入与**索引**文档嵌入进行比较。这使得最近邻搜索成为可能,并显著提高了传统依赖关键词匹配的算法的检索准确性。
这些模型通常使用基于 Transformer 的架构,例如 BERT(来自 Transformer 的双向编码器表示)、GPT(生成式预训练 Transformer)及其衍生神经网络来捕获上下文感知表示。
这就是它们如何在大规模下处理细微查询的方式。例如,即使“cat”(猫)和“bat”(蝙蝠)听起来(和看起来)相似,但其中只有一个可能在上下文中用作常见的家养宠物。
几种微调和预训练模型不断涌现,成为语义搜索的行业标准。每种模型都以自己的方式提高了精度、相关性、效率和/或可扩展性。
语义搜索最常用的模型有哪些?
不同的嵌入模型在向量维度、上下文长度和某些其他性能特征方面有所不同。
在大型语言模型的上下文中,维度指的是向量中的组件数量,每个组件对应于编码变量的一个属性。此外,上下文长度与模型在任何给定时间可以“记住”和引用的文本量(通常以标记衡量)有关。
为了评估这些差异,我们使用 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 | ±800ms |
Cloudflare bge-large-en-v1.5 | ±500ms |
Cohere embed-english-v3.0 | ±170ms |
Cohere embed-english-light-v3.0 | ±160ms |
本地 gte-small | ±20ms |
本地 all-MiniLM-L6-v2 | ±10ms |
本地 bge-small-en-v1.5 | ±20ms |
本地 bge-large-en-v1.5 | ±60ms |
Mistral | ±200ms |
Jina colbert | ±400ms |
OpenAI text-embedding-3-small | ±460ms |
OpenAI text-embedding-3-large | ±750ms |
VoyageAI voyage-2 | ±350ms |
VoyageAI voyage-large-2 | ±400ms |
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 | ±170ms | 43s | $0.10 |
Cohere embed-english-light-v3.0 | 384 | 512 | ±160ms | 16s | $0.10 |
OpenAI text-embedding-3-small | 1536 | 8192 | ±460ms | 95s | $0.02 |
OpenAI text-embedding-3-large | 3072 | 8192 | ±750ms | 151s | $0.13 |
Mistral | 1024 | 8192 | ±200ms | 409s | $0.10 |
VoyageAI voyage-2 | 1024 | 4000 | ±350ms | 330s | $0.10 |
VoyageAI voyage-large-2 | 1536 | 16000 | ±400ms | 409s | $0.12 |
Jina Colbert v2 | 128、96 或 64 | 8192 | ±400ms | 375s | $0.18 |
OSS all-MiniLM-L6-v2 | 384 | 512 | ±10ms | 880s | 免费 |
OSS bge-small-en-v1.5 | 1024 | 512 | ±20ms | 3379s | 免费 |
OSS bge-large-en-v1.5 | 1536 | 512 | ±60ms | 9132s | 免费 |
选择最佳的语义搜索模型取决于您希望通过特定用例、预算和性能要求实现什么(以及如何实现)。在大多数情况下,Cohere 或 OpenAI 提供的基于云的解决方案可能是最佳选择。
随着您组织需求增长,升级到本地或自托管解决方案可能值得付出成本和努力。了解您自己的需求对于做出明智的决定至关重要。
如果您不确定哪个模型最适合您,或者您正在寻找定制解决方案,请联系 Meilisearch 的搜索专家。
常见问题 (FAQs)
语义搜索与基于关键词的搜索有何不同?
语义搜索侧重于理解含义,而基于关键词的搜索则依赖于精确的单词匹配。
一个好的语义搜索模型有哪些关键特征?
一个好的模型应该具有高准确性、低延迟、高效索引和成本效益。
基于 Transformer 的模型如何改进语义搜索?
Transformer 在上下文中处理文本,捕获词语之间的上下文关系,以增强搜索相关性并减少停机时间。
向量数据库如何增强语义搜索?
向量数据库可以高效地存储嵌入,从而实现快速和可扩展的搜索操作。
有哪些开源的语义搜索模型?
流行的开源语义搜索模型包括 all-MiniLM-L6-v2 和 Universal Sentence Encoder。