跟上資訊檢索技術的發展很重要,但維護現有且經過實證、已經展現商業價值的組件同樣重要。
儘管 AI 驅動的向量搜尋不斷成長,事實上大多數公司仍依賴傳統搜尋技術,通常使用 BM25 演算法的變體。這是一項可靠且經過時間考驗的技術。完全切換到新系統不僅是一個重大的步驟,往往也會因為需要大量資源和徹底改造營運而變得不切實際。此外,BM25 是詞彙搜尋引擎的基石,常用於 Elasticsearch 和 Solr 等廣泛使用的搜尋引擎平台。對許多使用情境來說,它已經能提供良好的結果。
因此,儘管有令人信服的證據表明基於 AI 的搜尋能顯著提升用戶滿意度和結果品質,許多公司仍然猶豫是否要完全轉向神經網路搜尋。
tag與檢索無關的神經網路重排序
Reranker 是搜尋系統領域的一項突破性進展。它被設計用來增強像 Elasticsearch 這樣的現有搜尋引擎,作為一個額外的層級,像附加元件一樣優化搜尋品質。它不需要知道它所連接的是什麼樣的搜尋技術,只需要接收一個匹配列表並重新排序以獲得更好的結果。
Jina Reranker 為傳統搜尋技術增添了更深層的理解能力。像 BM25 這樣的演算法在基於詞頻檢索文件方面做得很好,但在評估檢索文本的含義與用戶意圖的相關性時卻有困難。這正是 AI 所擅長的:Reranker 幫助產生更符合用戶需求的結果。
因此,對於想要將 AI 模型的強大優勢帶入搜尋框架的企業來說,添加 Jina Reranker 可能是一個明智的決定,且不會帶來替換現有搜尋基礎設施的負擔。這是關於優化搜尋結果,使其不僅可接受,而且出色:更相關、更準確。
tag為什麼選擇 Jina Reranker?
在重排序模型中,Jina Reranker 模型以其在性能基準測試中的領先表現而脫穎而出。

在本文中,我們將展示如何為電子商務平台實現推薦系統。首先,我們將分析單獨使用 BM25 檢索器的性能。然後,我們將 Jina Reranker 加入檢索管道,看看結果如何變得更相關和更有效。
tag將 Jina Reranker 加入您的現有工作流程:

以下是整合 Jina Reranker 的更新工作流程的細節:
- 初始檢索:當輸入查詢時,BM25 搜尋引擎主要基於查詢詞與文檔的匹配來檢索相關文檔。
- 重排序:jina-reranker-v1-base-en 接收這些初始結果,並使用最先進的 AI 來評估每個檢索文檔與用戶查詢的相關性。
- 回傳結果:Jina Reranker 然後重新排序搜尋結果,確保最相關的文檔顯示在頂部。
我們的易用 API 和完整文檔將指導您完成整個過程,只需對系統進行最小的改動。

tag實際應用:用 Jina Reranker 增強電子商務搜尋

讓我們通過一個實際的電子商務範例來展示 Jina Reranker 在實際應用中的影響。這裡的目標是根據用戶的查詢來搜尋產品列表。
為了說明這一點,我們將使用流行的 AI 搜尋和編排框架 Haystack by deepset 設置兩個搜尋管道。第一個管道單獨使用 BM25。第二個將 jina-reranker-v1-base-en 整合到 BM25 系統中。如果您有現有的 Elasticsearch 集群,可以輕鬆地將 Haystack 的 InMemoryDocumentStore
組件替換為 ElasticsearchDocumentStore
來進行相同的實驗。
我們將使用 Kaggle 上的範例數據集。您可以直接在這裡下載 CSV。這個並排比較展示了將 Jina Reranker 整合到搜尋工作流程中帶來的改進。
首先,安裝所有必要的組件:
pip install --q haystack-ai jina-haystack
將 Jina API Key 設置為環境變數。您可以在這裡生成一個。
import os
import getpass
os.environ["JINA_API_KEY"] = getpass.getpass()
基於產品名稱查詢產品。例如:
short_query = "Nightwear for Women"
將每個 CSV 行轉換為 Document
:
import csv
from haystack import Document
documents = []
with open("fashion_data.csv") as f:
data = csv.reader(f, delimiter=";")
for row in data:
row_text = ''.join(row)
row_doc = Document(content=row_text, meta={"prod_id": row[0], "prod_image": row[1]})
documents.append(row_doc)
tagPipeline #1:僅使用 BM25
from haystack import Pipeline
from haystack.document_stores.types import DuplicatePolicy
from haystack.document_stores.in_memory import InMemoryDocumentStore
from haystack.components.retrievers.in_memory import InMemoryBM25Retriever
document_store=InMemoryDocumentStore()
document_store.write_documents(documents=documents, policy=DuplicatePolicy.OVERWRITE)
retriever = InMemoryBM25Retriever(document_store=document_store)
rag_pipeline = Pipeline()
rag_pipeline.add_component("retriever", retriever)
result = rag_pipeline.run(
{
"retriever": {"query": query, "top_k": 50},
}
)
for doc in result["retriever"]["documents"]:
print("Product ID:", doc.meta["prod_id"])
print("Product Image:", doc.meta["prod_image"])
print("Score:", doc.score)
print("-"*100)
以下是 BM25 返回的 50 個結果的縮圖:

我們可以看到,這些結果與睡衣相關,部分匹配查詢,但最相關的匹配項(網格中加粗的圖片)似乎在 BM25 檢索的眾多產品中迷失了。在實際應用中,僅使用 BM25 意味著用戶會在頁面頂部主要收到不相關的結果。
tagPipeline #2:BM25 + Jina Reranker
以下腳本概述了如何逐步構建這個 pipeline:
from haystack_integrations.components.rankers.jina import JinaRanker
ranker_retriever = InMemoryBM25Retriever(document_store=document_store)
ranker = JinaRanker()
ranker_pipeline = Pipeline()
ranker_pipeline.add_component("ranker_retriever", ranker_retriever)
ranker_pipeline.add_component("ranker", ranker)
ranker_pipeline.connect("ranker_retriever.documents", "ranker.documents")
result = ranker_pipeline.run(
{
"ranker_retriever": {"query": query, "top_k": 50},
"ranker": {"query": query, "top_k": 10},
}
)
for doc in result["ranker"]["documents"]:
print("Product ID:", doc.meta["prod_id"])
print("Product Image:", doc.meta["prod_image"])
print("Score:", doc.score)
print("-"*100)
以下是 Jina Reranker 返回的前 10 個結果:

與 BM25 相比,Jina Reranker 返回了更相關的答案集合。在我們的電商環境中,這意味著更好的用戶體驗和更高的購買可能性。
tag整合 Jina Reranker 與 BM25 的影響
根據我們在電商領域的案例研究,很明顯 Jina Reranker 與 Elasticsearch 等傳統搜尋引擎的整合標誌著搜尋技術的重大躍進。以下是這種整合如何改善搜尋體驗的概述:
- 提升命中率:Jina Reranker 和傳統搜尋的融合顯著提高了相關結果的出現頻率。這使搜尋過程更準確,更貼近用戶查詢。
- 改善用戶體驗:搜尋結果的質量有明顯提升。這表明 Jina Reranker 和 BM25 的組合能力更能滿足用戶的特定需求,提升整體搜尋體驗。
- 複雜查詢的高精度:在處理困難搜尋時,這種協同作用確保了對查詢和相關內容有更詳細的理解。這轉化為更精準、更準確的結果。
tag準備提升您的搜尋體驗?
Jina Reranker 是提高搜尋結果相關性的理想解決方案。它可以無縫整合到您現有的搜尋系統中,並且只需少量程式碼即可快速實現。
如果您對到目前為止閱讀的內容感興趣,並渴望看到 Jina Reranker 能帶來的改變,何不試一試呢?開始您的旅程,親身體驗 Jina AI's Search Foundation models 在您自己環境中的變革力量。