全面提升 RAG 質量!Zilliz 攜手智源集成 Sparse Embedding、Reranke

Zilliz 持續爲 AI 應用開發者賦能!

近期,Zilliz 與智源研究院達成合作,將多種 BGE(BAAI General Embedding) 開源模型與開源向量數據庫 Milvus 集成。得益於 Milvus 2.4 最新推出的 Sparse Vector(稀疏向量)和 Multi-vector(多向量)支持,開發者獲得了多種選擇,不僅有業界廣泛採用的 Dense Embedding(稠密向量模型),還能使用 BGE 最新推出的 Sparse Embedding(稀疏檢索模型)、Reranker(重排序) 模型。開發者可以輕鬆組合這些工具構建更加強大的召回方案,覆蓋語義檢索、全文檢索和精排的能力。

BGE 與 Milvus 的集成在全面提升 RAG 質量的同時兼具靈活性,可以更好地爲 AI 應用開發者服務。

01.Sparse Embedding 和 Reranker:提升 RAG 的新趨勢

RAG(Retrieval Augmented Generation,檢索增強生成)是一種利用檢索外部知識庫的信息來增強大語言模型準確性和可靠性的技術。RAG 已經被證明能夠有效解決一系列阻礙大模型應用的核心問題(例如出現幻覺、時效性差、專業領域知識不足、數據安全問題等)。而 Embedding 模型和向量數據庫是實現這一方案的關鍵,更好的模型、功能更豐富的向量數據庫,能夠有效提升 RAG 的回覆質量,幫助大語言模型實現更好的終端問答體驗。

然而,由於基礎 Dense Embedding 和向量召回方案的限制,一些場景下RAG 最終所呈現的效果還不盡如人意。目前,業界傾向於採取兩種方案來提升 RAG 的問答質量:

方案一,使用 Sparse Vector 配合 Dense Vector 進行兩路召回的方式。其中,Sparse Vector 可以覆蓋傳統全文檢索的能力,幫助識別和捕捉特定的關鍵詞,而 Dense Vector 則可以更有效地抓住文本中的整體語義信息。通過將這兩種向量召回的結果整合,可以獲得更豐富、更全面的信息,從而提升 RAG 的效果。

方案二,使用 Cross-Encoder Reranker(交叉編碼重排序) 作爲第二層的精排。首先使用 Dense Vector、Sparse Vector 或二者的組合進行粗排;隨後通過使用 Reranker 模型對第一階段的結果進行進一步的篩選和排序,以提高最終結果的質量。

值得注意的是,方案一既可以獨立使用,即採用基於規則的算法來合併兩路召回的結果,例如常用的 RRF Reciprocal Rank Fusion (RRF),也可以疊加方案二使用,即採用 Cross-Encoder Reranker 對兩路結果合併重新排序。

02.Milvus 攜手 BGE:靈活解決 RAG 的質量難題

Milvus 是一款面向 AI 應用,服務向量搜索和非結構化數據管理的開源向量數據庫。它最初由 Zilliz 公司發起,並在 2019 年開源。自推出以來,Milvus 在 AI 開發者社區和企業用戶中大受歡迎並被廣泛採用,在 GitHub 上擁有超過 26,000 個星標和 260 多位貢獻者,全球下載和安裝量超過 2000 萬次,已成爲全球使用最廣泛的向量數據庫之一。

不久前,Zilliz 創始人兼 CEO 星爵在 NVIDIA GTC 大會上正式發佈了 Milvus 2.4 版本,堪稱業界的革命性升級。除了被熱烈討論的基於 GPU 的向量索引和搜索加速能力,對 Sparse Vector 和 Multi-Vector 的支持也是一大亮點。Milvus 與智源 BGE 的集成不僅一次性聚集了提升 RAG 質量所需的 Sparse Embedding、多路召回、Reranker 能力,更是爲開發者提供了多種類、多層次的召回方案,幫助開發者根據實際需求靈活地構建AI應用。

此次與 Milvus 攜手的 BGE 是由智源研究院打造的通用語義模型。自 2023 年 8 月首次發佈以來,智源團隊陸續推出了中英文模型 BGE v1.0、v1.5、以及支持多達 100 多種語言和多種召回方式的 BGE-M3 模型。截至目前,BGE 系列模型全球下載量已經超過 1500萬,位居國內開源 AI 模型首位。BGE-M3 模型更是一度躍居 Hugging Face 熱門模型前三名。在最新推出的 Milvus 2.4 客戶端中,爲 BGE 模型提供了簡單易用的函數封裝。開發者可以更加方便地使用多種 BGE 開源模型,配合 Milvus 向量數據庫構建多路、多級的召回方案,全面提升 RAG 質量。目前已經集成的 BGE 開源模型包括:

Embedding 模型

  • BAAI/bge-m3

  • BAAI/bge-large-en-v1.5

  • BAAI/bge-base-en-v1.5

  • BAAI/bge-small-en-v1.5

  • BAAI/bge-large-zh-v1.5

  • BAAI/bge-base-zh-v1.5

  • BAAI/bge-small-zh-v1.5

Reranker 模型

  • BAAI/bge-reranker-v2-m3

  • BAAI/bge-reranker-large

  • BAAI/bge-reranker-base

03.代碼樣例展示

從 2.4 版本開始,Milvus Python 客戶端新加入了 pymilvus[model]組件,無論是 Sparse Vector 配合 Dense Vector 的多路召回,還是使用 Cross-Encoder Reranker 提升第一層召回的相關度,Milvus 所提供的 Model 組件都能靈活地支持。

例如,僅需pip install pymilvus[model],就可以方便地使用 BGE-M3 模型生成的 Dense Vector 進行向量最近鄰搜索,並用 BGE Reranker 模型對結果進行精排:

from pymilvus.model.hybrid import BGEM3EmbeddingFunction
from pymilvus.model.reranker import BGERerankFunction

client = MilvusClient(uri="http://localhost:19530")
embed_fn = BGEM3EmbeddingFunction(device='cuda:0')
rerank_fn = BGERerankFunction(device="cuda:0")
query = "tell me information about France."
query_vector = [embed_fn([query])["dense"][0]]
# Search for top 20 nearest neighbour vectors
retrieved_results = client.search(collection_name="my_collection", data=query_vector, limit=20, output_fields=["text"])
# Rerank the vector search results and select the top 5
final_results = rerank_fn(query, [result['entity']['text'] for result in retrieved_results[0]], top_k=5)

除此之外,更多案例可以訪問鏈接查看(https://github.com/milvus-io/pymilvus/blob/master/examples/hello_hybrid_sparse_dense.py)。

04.未來展望

Zilliz 作爲向量數據庫行業的引領者,此次與業界領先的智源研究院合作,支持基於開源 BGE 模型和 Milvus 向量數據庫的多種召回方案,集成了兩者對 Sparse Embedding 和 Reranker 的支持,極大地便利了 RAG 開發者。

Zilliz 生態集成和 AI 平臺負責人陳將表示:“未來,Milvus 將持續與智源在模型研究、開發者推廣等方面深度合作,助力 AI 應用的進一步普及和提升。”

智源研究院 BGE 團隊負責人表示:“ 智源研究院 BGE 負責人表示:“ BGE 和 Milvus 的集成,爲社區用戶快速搭建“三位一體的”(稠密檢索、稀疏檢索、重排序)檢索流水線帶來的極大便利。未來期待與像 Zilliz 這樣行業優秀的企業進一步合作,共同爲 AI 應用開發者賦能。”

閱讀原文


  • 好消息,Milvus 社區正全網尋找「北辰使者」!!! ​
  • 如果在使用 Milvus 或 Zilliz 產品有任何問題,可添加小助手微信 “zilliz-tech” 加入交流羣。 ​
  • 歡迎關注微信公衆號“Zilliz”,瞭解最新資訊。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章