选择语义搜索的最佳模型
关于构建语义搜索的模型性能、成本和相关性的比较。
语义搜索 通过提供更准确和相关的结果正在改变搜索技术。 然而,由于有许多可用的嵌入模型,选择合适的模型可能具有挑战性。本指南将帮助您了解在选择用于构建语义搜索的模型时要考虑的关键因素。
概述
在本指南中,我们将使用开源搜索引擎 Meilisearch 来执行语义搜索。 为了测试,我们使用了 Meilisearch Cloud 的入门级套餐(即 构建计划。)
本指南将涵盖以下模型
模型/服务 | 维度 | 上下文长度 |
---|---|---|
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. 搜索性能
您现在到处都能看到。 时间就是金钱。 Web 也一样。 如今,即时搜索 是面向客户的应用程序的基准。 节省用户的时间可以大大提高他们的满意度并让他们参与到您的平台中。
为了实现闪电般的搜索性能,请考虑使用本地模型,以最大限度地减少延迟,从而无需往返于嵌入服务。 如果您需要使用远程模型,那么将您的搜索服务(例如,您的 Meilisearch 数据库)托管在嵌入服务附近可以显着减少延迟。
下表展示了各种本地嵌入模型和嵌入 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 毫秒 |
在这里,您可以看到在延迟方面有一些明显的赢家。 不幸的是,延迟与吞吐量不同,因此我们也需要仔细查看索引时间。
3. 索引性能
索引性能是 比较搜索解决方案 时的另一个关键方面。 嵌入模型的性能将直接影响搜索解决方案的索引速度。 以及索引数据的速度将直接影响搜索解决方案的整体效率和可扩展性。
由于处理能力有限,没有 GPU 的本地模型可能索引速度较慢。 相比之下,第三方服务根据其基础设施和服务协议提供不同的速度和限制。 评估这些因素对于确保您选择的模型和服务能够有效满足您的需求至关重要。
在优化索引时,有几个因素会起作用。 同样,延迟起着重要作用:减少数据在您的应用程序和模型之间传输的时间始终会改善您的体验。 此外,API 接受的 API 调用的最大大小、提供商的 速率限制 以及模型支持的 维度数量 都会影响索引过程的效率和可扩展性。
下面的基准测试比较了 10k 电子商务文档的索引(使用 自动嵌入生成)
4. 定价
虽然本地嵌入器是免费的,但大多数服务按每百万个 token 收费。 以下是每个平台的定价细分
提供商 | 价格 |
---|---|
Cohere | 每百万个 token 0.10 美元 |
OpenAI | text-embedding-3-large 每百万个 token 0.13 美元 |
text-embedding-3-small 每百万个 token 0.02 美元 | |
Cloudflare | 每 1,000 个神经元 0.011 美元 |
Jina | 每百万个 token 0.18 美元 |
Mistral | 每百万个 token 0.10 美元 |
VoyageAI | voyage-2 每百万个 token 0.10 美元 |
voyage-large-2 每百万个 token 0.12 美元 | |
voyage-multilingual-2 每百万个 token 0.12 美元 | |
本地模型 | 免费 |
随着您的搜索需求增长和扩展,投资您自己的 GPU 机器可能会更具成本效益。 通过拥有自己的硬件,您可以更好地控制搜索解决方案的性能和可扩展性,并有可能从长远来看降低成本。
最好从提供的列表中选择一个知名的模型开始。 它们通常易于设置,您将很容易找到社区资源来帮助您。 随着需求的出现,您可以考虑将模型迁移到 AWS 等云提供商。 许多服务都提供此选项,允许您利用其基础设施来提高性能和可扩展性。
或者,您可以选择一个等效的开源模型进行自托管,从而在长期内为您提供更大的灵活性和对搜索解决方案的控制。请注意,优化本地模型以获得性能或高容量可能需要相应地扩展您的基础设施。
准备好提升您的搜索体验了吗?
深入了解
虽然本文提供了全面的概述,但我们没有深入探讨优化技术。 还有一些额外的优化可以探索,以进一步增强语义搜索的性能。
以下是为您的搜索体验选择模型时需要研究的其他领域列表
- 尝试为提供此选项的模型使用不同的预设(查询 vs. 文档),以潜在地提高相关性
- 评估针对特定应用的专业模型,以评估其性能和是否适合您的用例
- 探索提供重排功能的模型,以进一步优化搜索结果
- 在每个平台上测试更高级别的帐户,以检查性能是否提高并减少速率限制
- 研究用于直接从 API 接收量化数据的参数,以优化数据传输和处理
结论
模型/服务 | 维度 | 上下文长度 | 延迟 | 索引时间 | 定价(每百万个 token) |
---|---|---|---|---|---|
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 之类的云服务提供出色的相关性和合理的延迟,其中 Cohere 的 embed-english-light-v3.0 因其速度和性能的平衡而脱颖而出。
- 本地模型提供最快的搜索延迟,但在有限的硬件上可能会在索引速度方面遇到困难。
- Mistral 和 VoyageAI 等新兴服务在具有竞争力的价格和性能方面展现出潜力。
- 对于那些愿意管理自己基础设施的人来说,开源模型提供了经济高效的解决方案。
最终,最佳选择取决于您的具体用例、预算和性能要求。 对于许多应用程序而言,从 Cohere 或 OpenAI 等云服务开始,可以很好地平衡易用性、性能和成本。 随着您的需求增长,请考虑探索本地或专业模型,或联系 Meilisearch 的销售团队以获取量身定制的解决方案。
Meilisearch 是一个开源搜索引擎,使开发人员能够构建最先进的体验,同时享受简单直观的 DX。
有关 Meilisearch 的更多信息,您可以在 Discord 上加入社区,或订阅 新闻通讯。 您可以通过查看其 路线图 并参与 产品讨论 来了解有关该产品的更多信息。