
基于阿里通义 Qwen3 混合推理模型才是优化 RAG 和 MCP 的最佳范式 原创
阿里巴巴推出了全新的 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 详细分析之。
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 系列训练数据量达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 推理模式的参考代码如下:
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 非推理模式的参考代码如下:
在以上代码设置中,只需将 `"enable_thinking"` 设置为 `False`。
接下来,让我们看看非推理模式是如何处理这个问题的:
非推理模式采用逐步求解的方法,使用了常规的相对速度法,并迅速得出了正确答案。
它的总耗时大约是:6.89秒,大约是推理模式耗时的五分之一。可以看出,推理模式相比非推理模式会进行更多的思考。
这种额外的思考可以使回答内容更加丰富,逻辑性更强。但是,非推理模式的回答速度更快。这两种模式在处理不同类型的问题时各有优势。因此,用户可以根据自己的需求来选择使用哪种模式。
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 作者:玄姐
