基于阿里通义 Qwen3 混合推理模型才是优化 RAG 和 MCP 的最佳范式 原创

发布于 2025-5-13 06:44
浏览
0收藏

阿里巴巴推出了全新的 Qwen3 系列模型。令人惊叹的是,在短短的12个小时内,这个系列在 GitHub 上的星标数就超过了17,000个,而在 Hugging Face 上的下载量更是达到了每小时23,000次的高峰。

更让人兴奋的是,Qwen3 系列这次一共推出了八种不同的模型,包括两款 MoE 模型:Qwen3-235B-A22B(2350多亿总参数、 220多亿激活参),以及 Qwen3-30B-A3B(300亿总参数、30亿激活参数);以及六个 Dense 模型:Qwen3-32B、Qwen3-14B、Qwen3-8B、Qwen3-4B、Qwen3-1.7B和Qwen3-0.6B。


基于阿里通义 Qwen3 混合推理模型才是优化 RAG 和 MCP 的最佳范式-AI.x社区

它们都是混合推理模型,这意味着它们既能快速思考,也能深入思考。这些模型在推理能力、遵循指令、调用工具以及多语言处理等方面都有了显著的提升,而且它们还刷新了所有国产模型以及全球开源模型的性能纪录。

接下来结合 Qwen3 构建 RAG 和 MCP 详细分析之。

1、Qwen3 更强,更多选择,更低门槛,更适合企业落地

Qwen3 系列模型亮点:混合推理、云端与本地、小尺寸高能、多语言支持

(1)混合推理模型:Qwen3 系列的所有模型都是推理与非推理相结合的混合模型,满足老板对成本和性能的双重要求。

(2)MoE 与 Dense 模型:系列包含两款 MoE(专家混合)模型和六款Dense(稠密)模型,前者适合云端部署,后者在本地表现更优。

(3)小尺寸高能:基于小尺寸的能力升级,只需4张 H20 显卡即可部署完整的 Qwen3 模型。

(4)MCP 与多语言:支持 MCP 和多语言能力,降低开发成本。

详解 Qwen3 系列模型的四大关键词:

第一、混合推理模型:Qwen3 系列全部采用混合推理模型,兼具推理(深思熟虑)与非推理(快速反应)能力,符合行业发展趋势,平衡算力成本与输出效果。

第二、MoE 与 Dense 模型:包括两款 MoE 模型和六款 Dense 模型,MoE 模型适合云端,Dense 模型本地表现更佳。


基于阿里通义 Qwen3 混合推理模型才是优化 RAG 和 MCP 的最佳范式-AI.x社区

第三、小尺寸高能:Qwen3 系列训练数据量达36T tokens,最大模型 Qwen3-235B-A22B 拥有2350多亿总参数,但部署成本不高,支持动态量化,仅需4张H20显卡。

第四、MCP 与多语言:Qwen3 系列支持 MCP,便于与外部数据库、工具交互,同时支持119种语言和方言,服务全球开发者,助力企业全球业务拓展。

总结:Qwen3 系列模型以其混合推理、云端与本地部署、小尺寸高能、多语言支持等特点,非常适合企业场景中落地,帮助开发者构建性能与成本全面可控的产品。

2、基于推理模式和非推理模式实现 RAG 对比

RAG 的构建流程和步骤详细看这里《​​​别搞 GraphRAG 了,拥抱新一代 RAG 范式 DeepSearcher​​​》,这里不再赘述。下面通过一个具体问题详细对比剖析。 

基础数学问题:甲和乙从同一地点出发,甲先走2小时,速度5km/h,乙以15km/h追赶,多久追上?


基于阿里通义 Qwen3 混合推理模型才是优化 RAG 和 MCP 的最佳范式-AI.x社区

第一、基于 Qwen3 推理模式的参考代码如下:

import os
import time
from openai import OpenAI
os.environ["DASHSCOPE_API_KEY"] = "sk-*************************"
client = OpenAI(
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
)
############################################
# Think
# 记录开始时间
start_time = time.time()
stream = client.chat.completions.create(
    # 模型列表:https://help.aliyun.com/zh/model-studio/getting-started/models
    model="qwen3-235b-a22b",
    messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "甲和乙从同一地点出发,甲先走2小时,速度5km/h,乙以15km/h追赶,多久追上?"},
    ],
    # Qwen3模型通过enable_thinking参数控制思考过程(开源版默认True,商业版默认False)
    extra_body={"enable_thinking": True},
    stream=True,
)
answer_content = ""
for chunk in stream:
    delta = chunk.choices[0].delta
    if delta.content is not None:
        answer_content += delta.content
print(answer_content)
# 记录结束时间并计算总耗时
end_time = time.time()
print(f"\n\n总耗时:{end_time - start_time:.2f}秒")

从答案的质量来看,推理模式成功识别出了这是一个追及问题。它分析了题目中给出的条件,并提出了两种不同的解题方法和正确的答案。这表明模型对这个问题进行了深入的思考。特别是,它最后提供的 Markdown 格式答案,其中的数学公式显示得非常精准。

整个过程的代码运行时间是 35.73秒。

(下面是我们将模型生成的 Markdown 答案转换成可视化图像的截图,为了让读者更容易理解)


基于阿里通义 Qwen3 混合推理模型才是优化 RAG 和 MCP 的最佳范式-AI.x社区


基于阿里通义 Qwen3 混合推理模型才是优化 RAG 和 MCP 的最佳范式-AI.x社区

第二、基于 Qwen3 非推理模式的参考代码如下:

在以上代码设置中,只需将 `"enable_thinking"` 设置为 `False`。

接下来,让我们看看非推理模式是如何处理这个问题的:

非推理模式采用逐步求解的方法,使用了常规的相对速度法,并迅速得出了正确答案。

它的总耗时大约是:6.89秒,大约是推理模式耗时的五分之一。可以看出,推理模式相比非推理模式会进行更多的思考。


基于阿里通义 Qwen3 混合推理模型才是优化 RAG 和 MCP 的最佳范式-AI.x社区

这种额外的思考可以使回答内容更加丰富,逻辑性更强。但是,非推理模式的回答速度更快。这两种模式在处理不同类型的问题时各有优势。因此,用户可以根据自己的需求来选择使用哪种模式。

3、MCP 的支持 

第一、MCP 的支持

Qwen3 在工具调用能力方面表现出色。我们推荐使用 Qwen-Agent 来充分发挥 Qwen3 的 Agent 能力。Qwen-Agent 内部封装了工具调用模板和工具调用解析器,大大降低了代码复杂性。

要定义可用的工具,您可以使用 MCP 配置文件,使用 Qwen-Agent 内置的工具,或者自行集成其他工具。

MCP 功能支持的代码如下所示:

from qwen_agent.agents import Assistant
# Define LLM
llm_cfg = {
    'model': 'Qwen3-30B-A3B',
    # Use the endpoint provided by Alibaba Model Studio:
    # 'model_type': 'qwen_dashscope',
    # 'api_key': os.getenv('DASHSCOPE_API_KEY'),
    # Use a custom endpoint compatible with OpenAI API:
    'model_server': 'http://localhost:8000/v1',  # api_base
    'api_key': 'EMPTY',
    # Other parameters:
    # 'generate_cfg': {
    #         # Add: When the response content is `<think>this is the thought</think>this is the answer;
    #         # Do not add: When the response has been separated by reasoning_content and content.
    #         'thought_in_content': True,
    #     },
}
# Define Tools
tools = [
    {'mcpServers': {  # You can specify the MCP configuration file
            'time': {
                'command': 'uvx',
                'args': ['mcp-server-time', '--local-timeznotallow=Asia/Shanghai']
            },
            "fetch": {
                "command": "uvx",
                "args": ["mcp-server-fetch"]
            }
        }
    },
  'code_interpreter',  # Built-in tools
]
# Define Agent
bot = Assistant(llm=llm_cfg, function_list=tools)
# Streaming generation
messages = [{'role': 'user', 'content': 'https://qwenlm.github.io/blog/ Introduce the latest developments of Qwen'}]
for responses in bot.run(messages=messages):
    pass
print(responses)

第二、软切换机制

Qwen3 提供了一种软切换机制,允许用户在 enable_thinking=True 时动态控制模型的行为。具体来说,可以在用户提示或系统消息中添加 /think 和 /no_think 来逐轮切换模型的思考模式。在多轮对话中,模型会遵循最近的指令。

以下是一个多轮对话的示例:

from transformers import AutoModelForCausalLM, AutoTokenizer
class QwenChatbot:
    def __init__(self, model_name="Qwen3-30B-A3B/Qwen3-30B-A3B"):
        self.tokenizer = AutoTokenizer.from_pretrained(model_name)
        self.model = AutoModelForCausalLM.from_pretrained(model_name)
        self.history = []
    def generate_response(self, user_input):
        messages = self.history + [{"role": "user", "content": user_input}]
        text = self.tokenizer.apply_chat_template(
            messages,
            tokenize=False,
            add_generation_prompt=True
        )
        inputs = self.tokenizer(text, return_tensors="pt")
        response_ids = self.model.generate(**inputs, max_new_tokens=32768)[0][len(inputs.input_ids[0]):].tolist()
        response = self.tokenizer.decode(response_ids, skip_special_tokens=True)
        # Update history
        self.history.append({"role": "user", "content": user_input})
        self.history.append({"role": "assistant", "content": response})
        return response
# Example Usage
if __name__ == "__main__":
    chatbot = QwenChatbot()
    # First input (without /think or /no_think tags, thinking mode is enabled by default)
    user_input_1 = "How many r's in strawberries?"
    print(f"User: {user_input_1}")
    response_1 = chatbot.generate_response(user_input_1)
    print(f"Bot: {response_1}")
    print("----------------------")
    # Second input with /no_think
    user_input_2 = "Then, how many r's in blueberries? /no_think"
    print(f"User: {user_input_2}")
    response_2 = chatbot.generate_response(user_input_2)
    print(f"Bot: {response_2}") 
    print("----------------------")
    # Third input with /think
    user_input_3 = "Really? /think"
    print(f"User: {user_input_3}")
    response_3 = chatbot.generate_response(user_input_3)
    print(f"Bot: {response_3}")

4、总结

总的来说,这次发布的 Qwen3 系列模型不仅在各个专业领域达到了最佳性能(SOTA),还特别注重实际应用和工程化部署。它们为构建 RAG(检索增强生成)或智能体(AI Agent)提供了很好的范例,帮助在成本和性能之间找到平衡点。

比如,与 DeepSeek 相比,Qwen3 模型的参数更少,这有助于降低部署成本;支持更多语言,增加了全球开发者的使用便利性;支持 MCP(模型上下文协议),增强了与其他系统的集成能力;还有混合推理模型的设计,让用户可以自由选择是否进行深度推理,从而精确控制输出成本。

在最近开源的 DeepSearcher 项目(由 Zilliz 开发的深度检索和报告生成工具)中,现在 DeepSearcher 已经迅速支持了 Qwen3 模型,帮助用户找到性能和成本之间的最佳平衡点。

Github 地址:

​https://github.com/zilliztech/deep-searcher?tab=readme-ov-file​​#configuration-details


本文转载自​​玄姐聊AGI​​  作者:玄姐


©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
已于2025-5-13 06:47:02修改
收藏
回复
举报
回复
相关推荐