選擇最適合語義搜尋的模型
關於建立語義搜尋的模型效能、成本和相關性的比較。

語義搜尋透過提供更精確和相關的結果,正在改變搜尋技術。然而,由於有許多嵌入模型可用,選擇合適的模型可能具有挑戰性。本指南將協助您了解選擇用於建立語義搜尋模型時要考量的關鍵因素。
概述
在本指南中,我們將使用開源搜尋引擎 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. 搜尋效能
您現在隨處可見。時間就是金錢。網路也沒什麼不同。如今,邊輸入邊搜尋是用戶端應用程式的基準。為使用者節省時間,能大大提高他們的滿意度,並讓他們持續使用您的平台。
為了實現閃電般的快速搜尋效能,請考慮使用本機模型,以透過消除往返嵌入服務的需求來最大限度地減少延遲。如果您需要使用遠端模型,那麼將您的搜尋服務(例如您的 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 呼叫大小、供應商的速率限制,以及模型支援的維度數都會影響索引過程的效率和可擴展性。
以下的基準測試比較 1 萬個電子商務文件(使用自動嵌入產生)的索引建立。
模型/服務 | 索引建立時間 |
---|---|
Cohere embed-english-v3.0 | 43 秒 |
Cohere embed-english-light-v3.0 | 16 秒 |
OpenAI text-embedding-3-small | 95 秒 |
OpenAI text-embedding-3-large | 151 秒 |
Cloudflare bge-small-en-v1.5 | 152 秒 |
Cloudflare bge-large-en-v1.5 | 159 秒 |
Jina Colbert V2 | 375 秒 |
VoyageAI voyage-large-2 | 409 秒 |
Mistral | 409 秒 |
本機 all-MiniLM-L6-v2 | 880 秒 |
本機 bge-small-en-v1.5 | 3379 秒 |
本機 bge-large-en-v1.5 | 9132 秒 |
4. 定價
雖然本機嵌入器是免費的,但大多數服務會按每百萬個字符收費。以下是每個平台的定價明細
供應商 | 價格 |
---|---|
Cohere | 每百萬個字符 $0.10 |
OpenAI | text-embedding-3-large 每百萬個字符 $0.13 |
text-embedding-3-small 每百萬個字符 $0.02 | |
Cloudflare | 每 1,000 個神經元 $0.011 |
Jina | 每百萬個字符 $0.18 |
Mistral | 每百萬個字符 $0.10 |
VoyageAI | voyage-2 每百萬個字符 $0.10 |
voyage-large-2 每百萬個字符 $0.12 | |
voyage-multilingual-2 每百萬個字符 $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 社群或訂閱電子報。您可以查看其路線圖並參與產品討論,以了解更多有關該產品的資訊。