最新|用Qwen3 Embedding+Milvus,搭建最强企业知识库

最新|用Qwen3 Embedding+Milvus,搭建最强企业知识库

这几天阿里低调放出两款 Qwen3 家族的新模型:Qwen3-EmbeddingQwen3-Reranker(都分别包括0.6B轻量版、4B平衡版、8B高性能版三种尺寸)。两款模型基于 Qwen3 基座训练,天然具备强大的多语言理解能力,支持119种语言,覆盖主流自然语言和编程语言。

我简单看了下 Hugging Face 上的数据和评价,有几个点蛮值得分享

  • Qwen3-Embedding-8B 在 MTEB 多语言榜上拿到 70.58 分,超过 BGE、E5、甚至 Google Gemini 等一众明星模型。
  • Qwen3-Reranker-8B 在多语言排序任务中得分 69.02,中文得分达到 77.45,在现有开源 reranker 模型中也是顶流。
  • 文本向量统一在同一个语义空间,中文问句可以直接命中英文结果,特别适合做全球化场景下的智能搜索或客服系统。

这意味着,这两款模型不只是“在开源模型里还不错”,而是“全面追平甚至反超主流商用API”,在RAG 检索、跨语种搜索、代码查找等系统,尤其是中文语境中,这两款模型已经具备可直接上生产的实力

那么如何用它来搭建一个RAG系统,本文将给出深度教程。

教程亮点:手把手教你利用Qwen3最新发布的embedding模型和reranker模型搭建一个RAG,两阶段检索设计(召回+重排)平衡了效率与精度!

Requires transformers>=4.51.0

Requires sentence-transformers>=2.7.0

在本示例中,我们将使用 OpenAI 作为文本生成的大型语言模型,因此您需要将 API 密钥 OPENAI_API_KEY 作为环境变量准备给大型语言模型使用。


数据准备

我们可以使用Milvus文档2.4. x中的FAQ页面作为RAG中的私有知识,这是构建一个基础RAG的良好数据源。

下载zip文件并将文档解压缩到文件夹milvus_docs


我们从文件夹milvus_docs/en/faq中加载所有markdown文件,对于每个文档,我们只需用“#”来分隔文件中的内容,就可以大致分隔markdown文件各个主要部分的内容。


准备 LLM 和Embedding模型

本示例中使用 Qwen3-Embedding-0.6B 来进行文本嵌入,使用Qwen3-Reranker-0.6B对检索的结果进行重排序。


输出结果示例

定义一个函数,利用 Qwen3-Embedding-0.6B 模型生成文本嵌入。该函数将用于生成文档嵌入和查询嵌入。


定义重排序函数以提升检千问 Qwen 教程索质量。这些函数使用Qwen3-Reranker实现完整的重排序管道,根据文档与查询的相关性对候选文档进行评估和重新排序。其中各函数主要作用分别是:

  1. format_instruction(): 将查询、文档和任务指令格式化为重排序模型的标准输入格式
  2. process_inputs(): 对格式化后的文本进行分词编码,并添加特殊token用于模型判断
  3. compute_logits(): 使用重排序模型计算“查询-文档”对的相关性得分(0-1之间)
  4. rerank_documents(): 基于查询相关性对文档进行重新排序,返回按相关性得分降序排列的文档列表

生成一个测试向量,并打印其维度以及前几个元素。


结果示例:


将数据加载到Milvus


关于MilvusClient的参数设置:

  • 将URI设置为本地文件(例如./milvus.db)是最便捷的方法,因为它会自动使用Milvus Lite将所有数据存储在该文件中。
  • 如果你有大规模数据,可以在Docker或Kubernetes上搭建性能更强的Milvus服务器。在这种情况下,请使用服务器的URI(例如http://localhost:19530)作为你的URI。
  • 如果你想使用Zilliz Cloud(Milvus的全托管云服务),请调整URI和令牌,它们分别对应Zilliz Cloud中的公共端点(Public Endpoint)和API密钥(Api key)。

检查集合是否已经存在,如果存在则将其删除。


创建一个具有指定参数的新集合。

如果未指定任何字段信息,Milvus将自动创建一个默认的ID字段作为主键,以及一个向量字段用于存储向量数据。一个预留的JSON字段用于存储未在schema中定义的字段及其值。


插入集合

逐行遍历文本,创建嵌入向量,然后将数据插入Milvus。

下面是一个新的字段text,它是集合中的一个未定义的字段。 它将自动创建一个对应的text字段(实际上它底层是由保留的JSON动态字段实现的 ,你不用关心其底层实现。)


输出结果示例:


结合重排序技术增强RAG

检索数据 我们来指定一个关于Milvus的常见问题。


在集合中搜索该问题,并获取具有最高语义匹配度的前 10 个候选答案,然后使用重排序器来选出最佳的 3 个匹配项。


让我们来看看此次查询的重新排序结果吧!


输出结果示例:

从结果中我们可以看到Qwen3-Reranker的重排序效果明显,相关性得分区分度较好


使用大型语言模型(LLM)构建检索增强生成(RAG)响应 将检索到的文档转换为字符串格式。


为大语言模型提供系统提示(system prompt)和用户提示(user prompt)。这个提示是通过从Milvus检索到的文档生成的。


使用Open AI 的大语言模型gpt-4o,根据提示生成响应。


输出结果展示:


通过以上教程和输出结果展示,不难发现,通义千问团队在Qwen3系列中推出的embedding和reranker模型表现相当不错。这两个模型的结合使用为RAG系统提供了一个相对完整且实用的解决方案。

在设计理念上Embedding模型支持query和document的差异化处理,体现了对检索任务的深入理解;Reranker采用交叉编码器架构,能够捕捉query-document间的精细交互;教程中的两阶段检索设计(召回+重排)更是平衡了效率与精度。特别是Qwen3-Embedding-0.6B(1024维)和Qwen3-Reranker-0.6B都采用了相对轻量的参数规模,支持本地部署,减少了对外部API的依赖,在保证性能的同时,降低了硬件要求,适合中小企业和个人开发者使用。

事实上,Qwen3系列推出embedding和reranker模型,其实不是个例,不是巧合,而是产业共识。

原因很简单,这两个模块,决定了大模型是否具备产品化能力。

生成式大模型最大的问题在于:不确定性高、评估难、成本重。

要解决以上问题,无论是 RAG、LLM Memory、Agent ,本质上都依赖一个前提:能否将语义压缩成机器可高效检索和判断的向量表达。

Embedding 与 Ranking 则是目前的最优路径:标准清晰、性能可测、成本可控、易于灰度。Embedding 决定你能不能“找得到”,Ranking 决定你能不能“选得准”。这使它们成为模型商品化最先跑通的 API 模块之一:调用频率高(每次检索都需要)、切换成本高(与索引绑定)、商业价值高(可用作底层 infra)。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:Ai探索者,转载请注明出处:https://javaforall.net/262359.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月12日 下午10:40
下一篇 2026年3月12日 下午10:40


相关推荐

关注全栈程序员社区公众号