赞
踩
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 应用开发者服务。
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 对两路结果合并重新排序。
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 开源模型包括:
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
BAAI/bge-reranker-v2-m3
BAAI/bge-reranker-large
BAAI/bge-reranker-base
从 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)。
Zilliz 作为向量数据库行业的引领者,此次与业界领先的智源研究院合作,支持基于开源 BGE 模型和 Milvus 向量数据库的多种召回方案,集成了两者对 Sparse Embedding 和 Reranker 的支持,极大地便利了 RAG 开发者。
Zilliz 生态集成和 AI 平台负责人陈将表示:“未来,Milvus 将持续与智源在模型研究、开发者推广等方面深度合作,助力 AI 应用的进一步普及和提升。”
智源研究院 BGE 团队负责人表示:“ 智源研究院 BGE 负责人表示:“ BGE 和 Milvus 的集成,为社区用户快速搭建“三位一体的”(稠密检索、稀疏检索、重排序)检索流水线带来的极大便利。未来期待与像 Zilliz 这样行业优秀的企业进一步合作,共同为 AI 应用开发者赋能。”
本文由 mdnice 多平台发布
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。