前言
2025年6月30日,百度正式开源文心大模型4.5系列,涵盖10款不同参数规模的模型,目前,这些模型已可在GitCode代码托管平台进行下载,博主这里第一时间对文心开源模型和国内外知名开源模型进行了横向对比测评,此外并根据自身业务场景选择文心开源模型ERNIE-4.5-0.3B-Paddle构建了一个企业智能客服系统。
一起来轻松玩转文心大模型吧👉一文心大模型免费下载地址: https://ai.gitcode.com/paddlepaddle/ERNIE-4.5-VL-424B-A47B-Paddle
一、文心开源模型(ERNIE 4.5)模型架构解析
我们从GitCode平台可以看到,百度此次开源的文心大模型有十多款,形成了从0.3B到424B参数的梯度覆盖,不仅包含文本模型还包含了视觉多模态模型(VLM),除最小的0.3B 模型外,其余模型都采用异构多模态MoE(专家混合模型:Mixture of Experts)架构。
百度开源的ERNIE 4.5模型是一种异构混合型,也就是通过“分而治之”策略提升模型性能的人工智能架构:将多个不同类型的专家模块集成在一起,每个输入仅激活部分相关的专家模块,从而在不显著增加计算量的前提下大幅提升模型容量。
1.1、异构多模态MoE架构
ERNIE 4.5采用异构模态专家混合架构,突破传统单一模态训练的局限:
- 专家分工:模型包含文本专家、视觉专家和共享专家三类,文本专家处理语言理解,视觉专家专注图像特征提取,共享专家实现跨模态知识融合。
- 参数隔离:视觉专家参数量仅为文本专家的三分之一,既保证视觉处理效率,又避免干扰文本能力。
- 路由机制:通过模态隔离路由(Modality-Isolated Routing)和路由器正交损失(Router Orthogonal Loss),确保专家负载均衡,提升训练稳定性
1.2、适配器与多模态对齐
- 时空压缩:通过空间(2x2补丁)和时间(序列长度减半)压缩,减少序列长度,提升处理效率。
- 像素混洗(Pixel Shuffle):重新排列相邻token特征,结合MLP层处理,实现模态对齐到文本嵌入空间。
- 统一模态处理:将静态图像视为合成两帧视频,统一图像和视频的时间建模。
1.3、多模态位置编码
采用了3D RoPE方案,独立编码时间、宽度和高度维度,低频分配给时间轴,剩余频率交错分配至空间轴,支持长视频理解及序列长度外推。
1.4、视觉编码器创新
- 自适应分辨率:图像输入时独立调整宽高至ViT补丁大小的最近倍数,保留原始宽高比,避免固定分辨率导致的失真。
- 2D RoPE编码:采用二维旋转位置嵌入(Rotary Position Embedding),分别编码高度和宽度维度的空间信息,提升图像空间理解能力。
- 图像打包技术:高效处理多张图像,保持补丁间空间一致性,优化计算资源利用。
二、模型性能测评对比
本次测评的模型主要有开源的ERNIE-4.5系列(ERNIE-4.5-0.3B-Base, ERNIE-4.5-21B-A3B-Base, ERNIE-4.5-300B-A47B, ERNIE-4.5-VL-28B-A3B, ERNIE-4.5-VL-424B-A47B)以及其他主流开源模型:如Qwen3.0、DeepSeek、GPT4等。
我们将分别从通用能力、推理能力、数学能力、知识能力、编码能力等五个维度来测评和对比模型的性能指标。
2.1、通用能力
从测评数据中看到ERNIE-4.5-300B-A47B模型在C-Eval、CMMLU等中文和多语言基准测试中的性能表现都是排名第1,显示出其在通用语言理解和生成方面的强大实力。
在通用能力方面,ERNIE-4.5系列模型对中文语境有着深刻的理解,这种优势来自于百度规模庞大且高质量的中文语料数据集上,在此语料库上进行进行的深度预训练,以及对中文特有的词法结构、句法规则和语义内涵进行的精细算法优化,使的文心模型在中文及多语言通用能力上实现了显著跃升。
- C-Eval 大模型中文理解能力
- CMMLU 中文语境下的知识和推理能力方面
- MMLU 评估模型在多个任务上的语言理解能力
2.2、 推理能力
在模型的推理能力测评这一方面,我们可以从测评数据可以看到ERNIE-4.5-300B-A47B在BBH(Big-Bench Hard)、DROP等具有挑战性的常识推理与复杂推理基准上也表现优异,优于deepseek模型和GPT4模型,进一步展示了其处理复杂、多步骤推理问题的强大能力。
- BBH:由Google、斯坦福等研究人员开发的数据集,包含大量复杂语言理解任务的集合,可能包含需要深度推理、常识运用或复杂认知技能的任务
- DROP :评测任务的形式是让机器理解一个篇章,并回答篇章中的问题,但与其他大多数阅读理解评测任务不同,DROP主要考察模型的数学推理能力
2.3、 数学能力
在数学解题能力这一块,我们可以看到不同模型在CMath数学基准测试中得分是非常接近的,但ERNIE-4.5-300B-A47B会更高一些,展示其在逻辑思维、问题分解和逐步推理方面的优势。
当然Qwen3和DeepSeek系列模型在部分数学任务上也表现良好,基本都在94分以上,但ERNIE-4.5的整体表现更为均衡和领先,拿到了96.7分。可能源于其在训练过程中加入了更多的数学问题集,以及对思维链等推理范式的有效学习。
- CMath: 模型在数学应用题中的解题能力
2.4、知识能力
在知识能力方面,ERNIE-4.5-300B-A47B在ChineseSimpleQA和SimpleQA等知识问答任务中展现出领先优势,尤其是在ChineseSimpleQA上,得分高达77.1,表明其拥有丰富的中文知识储备和问答能力。这清晰反映了模型经过海量知识学习后所具备的丰富中文知识库和精准问答能力。
- SimpleQA :测量语言模型回答简短的事实性问题的能力
- ChineseSimpleQA:评估大型语言模型在中文环境下回答简短问题事实性能力的基准测试,包含3000个高质量问题。
2.5 、编码能力
随着各类AI编程工具的不断创新应用,模型的代码生成能力也显得尤为重要。而且程序员群体大部分也会用到模型的编程能力来辅助开发。
从测评数据可以看到,ERNIE-4.5在HumanEval+和MBPP+等代码生成和理解任务中表现出色,与GPT4模型能力不相上下,其在HumanEval+上与GPT-4.1并列第一,得分92.1,充分证明了咱们国产开源模型的编码能力已达到和国外模型并肩水准。
- HumanEval+ :包含164个精心设计的Python编程问题,这些问题通过一系列测试用例来检验代码LLMs在零样本条件下生成代码的能力
- MBPP+:包含了500个编程问题,专注于评估模型在给定少量样本情况下的代码生成性能
2.6 总结
本次测评基于其官方技术报告及相关参考文献进行展开,根据以上测评指标,综合评估得出结论:ERNIE-4.5系列模型在各项核心能力基准测试中的表现,其在通用语言能力、数学计算、逻辑推理、代码生成以及多模态理解方面均展现出业界领先的性能水平。
图1:模型能力雷达图对比
图二:模型多维能力雷达图汇总
三、基于文心开源大模型开发一个智能客服系统
我们可以使用文心开源模型在本地化部署成功后,使用可以调用的API接口,基于模型接口再加上补充的知识库,就可以开始进行我们的应用系统开发工作了。
3.1、知识库构建
主要流程:加载 → 分割 → 向量 → 存储 → 检索 → 生成
-
文本分割处理:首先对产品资料进行分块处理,将长文档转化为适合语义检索的知识单元
-
数据向量化处理及入库:将文本块转化为向量(embedding)。建立原始文本与向量数据的关联存储,形成高效检索的"文本-向量"双索引结构存储在知识向量库中。
-
知识库的构建使得系统能够通过计算问题向量与知识库向量的相似度,快速定位最相关的文本片段,为大模型生成精准回答提供数据支撑
3.2、技术架构
本项目主要采用以下前沿技术和工具:
- Vue 3 +vite:项目基于 Vue 3 构建,并采用 TS 语法,使组件书写更简洁、代码更加严谨。
- TDesign Vue Next:集成TDesign 前端组件库,实现了对话框、按钮、输入框、弹窗等多种 UI 组件,保证了界面的一致性和良好的用户体验。
- marked和Localstorage:用于解析和渲染大模型返回的Markdown字符串,使得消息中内容能够友好显示;Localstorage:用于实现对话记录的本地存储
- 流式 API 请求封装:通过 Fetch API 的流式请求与 SSE 技术,实现了聊天机器人实时响应,保证用户体验的流畅性。
- 知识库的构建:加载专业文档、处理文本、创建向量嵌入及数据入库
- 文心开源大模型私有化部署:为应用提供智能问答服务.
- 基于知识库的智能问答:检索问题改写、知识库检索、 使用大模型基于检索回来的相关文本段落整理检索结果,生成最终的回答。专业领域知识语料补充,解决模型数据时效性和回答幻觉问题.
3.3、功能介绍
3.3.1 智能客服能进行多轮对话与意图识别
精准解析用户问题:【文心开源大模型+知识库】提供准确回答,电商场景商品咨询应答准确率提升35%,政务业务合规性检查准确率达80%。
3.3.2 对话展示
消息以气泡样式展示,支持 markdown格式文件渲染,用户与系统的对话清晰分隔。每条消息下方附有删除、引用及反馈按钮,方便用户管理和互动。
3.3.3 历史数据存储
通过Localstorage本地存储,支持用户将历史问答记录本地存储,便于存档或再次询问。
3.3.4消息反馈
针对每条对话,用户可点赞或点踩,通过反馈组件记录用户对回答满意度,同时可以点击引用按钮快速将消息内容导入输入框继续讨论。方便模型进一步调优
3.4、核心代码展示
3.4.1文本分割、向量化处理
# 安装必要库 (运行前取消注释)
# !pip install chromadb sentence-transformers nltk
import re
import nltk
from nltk.tokenize import sent_tokenize
from sentence_transformers import SentenceTransformer
import chromadb
from chromadb.config import Settings
# 下载NLTK数据(句子分割需要)
nltk.download('punkt')
# 1. 文本分割函数
def text_segmenter(text, max_length=200):
"""
将长文本分割为语义段落
策略:先分句,然后合并短句直到达到最大长度
"""
sentences = sent_tokenize(text)
segments = []
current_segment = ""
for sentence in sentences:
# 清理句子中的多余空格
cleaned_sentence = re.sub(r'\s+', ' ', sentence).strip()
if len(current_segment) + len(cleaned_sentence) <= max_length:
current_segment += " " + cleaned_sentence if current_segment else cleaned_sentence
else:
if current_segment:
segments.append(current_segment)
# 如果单句就超过max_length,直接截断
if len(cleaned_sentence) > max_length:
chunks = [cleaned_sentence[i:i+max_length] for i in range(0, len(cleaned_sentence), max_length)]
segments.extend(chunks)
else:
current_segment = cleaned_sentence
if current_segment:
segments.append(current_segment)
return segments
# 2. 向量化处理函数
def vectorize_texts(texts):
"""
使用Sentence Transformer模型生成文本向量
"""
# 加载轻量级模型(首次运行会自动下载)
model = SentenceTransformer('all-MiniLM-L6-v2')
embeddings = model.encode(texts)
return embeddings.tolist()
# 3. 向量数据库入库
def store_in_chroma(segments, embeddings, collection_name="doc_segments"):
"""
将文本片段和向量存入ChromaDB
"""
# 创建客户端(持久化到本地目录)
client = chromadb.Client(Settings(
chroma_db_impl="duckdb+parquet",
persist_directory="./vector_db" # 向量数据库存储路径
))
# 创建或获取集合
collection = client.get_or_create_collection(name=collection_name)
# 生成文档ID
ids = [f"doc_{i}" for i in range(len(segments))]
# 添加到集合
collection.add(
documents=segments,
embeddings=embeddings,
ids=ids
)
print(f"成功存储 {len(segments)} 个文本片段到集合 '{collection_name}'")
return client
# 示例使用
if __name__ == "__main__":
# 示例文本(替换为你的实际内容)
sample_text = """
大型语言模型(LLM)是人工智能领域的重要突破。它们通过分析海量文本数据学习语言模式,
能够生成人类般的文本。Transformer架构是LLM的核心,它使用自注意力机制处理文本序列。
LLM的应用包括:机器翻译、文本摘要、对话系统等。例如,ChatGPT展示了LLM在对话生成方面的强大能力。
然而,LLM也存在挑战,如训练成本高、可能产生有偏见的输出等。
研究人员正在开发更高效的训练方法,如参数高效微调(PEFT)。未来LLM可能会与多模态技术结合,
处理图像、音频等非文本信息。这将开启人工智能应用的新篇章。
"""
# 文本分割
segments = text_segmenter(sample_text, max_length=150)
print("\n分割后的文本片段:")
for i, seg in enumerate(segments):
print(f"[Segment {i+1}]: {seg[:80]}...") # 显示前80字符
# 向量化处理
embeddings = vectorize_texts(segments)
print(f"\n生成 {len(embeddings)} 个向量,维度: {len(embeddings[0])}")
# 存储到向量数据库
chroma_client = store_in_chroma(segments, embeddings)
# 查询示例
collection = chroma_client.get_collection("doc_segments")
query = "语言模型有哪些应用?"
query_embedding = vectorize_texts([query])[0]
results = collection.query(
query_embeddings=[query_embedding],
n_results=2
)
print("\n相似性查询结果:")
for i, doc in enumerate(results['documents'][0]):
print(f"结果 {i+1}: {doc}")
# 注意:实际使用时可能需要处理更长的文本,建议添加错误处理和大文件处理逻辑
3.4.2 应用端调用模型api接口实现智能问答
/**
* 调用模型api接口实现智能问答
*/
const getChatData = async (messages, options) => {
const { success, fail, complete, cancel } = options;
const controller = new AbortController();
const { signal } = controller;
cancel?.(controller);
// your-api-key
const apiKey = "";
const responsePromise = fetch("/v1/chat", {
method: "POST",
headers: {
"Content-Type": "application/json",
Authorization: `Bearer${apiKey ? ` ${apiKey}` : ""}`,
},
body: JSON.stringify({
messages, // 消息列表
model: "", // 模型
stream: true, // 流式输出
}),
signal,
}).catch((e) => {
const msg = e.toString() || "流式接口异常";
complete?.(false, msg);
return Promise.reject(e); // 确保错误能够被后续的.catch()捕获
});
responsePromise
.then((response) => {
if (!response?.ok) {
complete?.(false, response.statusText);
fail?.();
throw new Error("Request failed"); // 抛出错误以便链式调用中的下一个.catch()处理
}
const reader = response.body.getReader();
const decoder = new TextDecoder();
if (!reader) throw new Error("No reader available");
const bufferArr = [];
let dataText = ""; // 记录数据
const event = { type: null, data: null };
async function processText({ done, value }) {
if (done) {
complete?.(true);
return Promise.resolve();
}
const chunk = decoder.decode(value);
const buffers = chunk.toString().split(/\r?\n/);
bufferArr.push(...buffers);
let i = 0;
while (i < bufferArr.length) {
const line = bufferArr[i];
if (line) {
dataText += line;
const response = line.slice(6);
if (response === "[DONE]") {
event.type = "finish";
dataText = "";
} else {
try {
const choices = JSON.parse(response.trim())?.choices?.[0];
if (choices.finish_reason === "stop") {
event.type = "finish";
dataText = "";
} else {
event.type = "delta";
event.data = choices;
}
} catch (error) {
console.error("解析错误:", error);
}
}
}
if (event.type && event.data) {
const jsonData = { ...event };
success(jsonData);
event.type = null;
event.data = null;
}
bufferArr.splice(i, 1);
}
return reader.read().then(processText);
}
return reader.read().then(processText);
})
.catch(() => {
// 处理整个链式调用过程中发生的任何错误
fail?.();
});
};
//传参messgaes 示例
messages=[
{"role": "system",
"content": "你是一位电商售后客服专家,擅长处理客户售后服务问题,对产品使用体验、物流配送、售后服务、退换货流程和日常保养等都有丰富的实践经验。"},
{"role": "user",
"content": "请问一般的产品售后有哪些保障,如何退换货?."},
]
四、总结
百度开源的文心ERNIE-4.5-0.3B-Paddle模型凭借其创新的架构、轻量化设计与PaddlePaddle框架的工业级支持,为智能客服系统提供了高性能、低成本的解决方案。通过方便部署、实时响应与行业定制化功能,该模型已在客服、政务、零售等领域验证了其价值,未来将进一步整合在线学习与多模态能力,推动智能客服从“效率工具”向“体验引擎”升级。
文心是百度自主研发的产业级知识增强大模型,以创新性的知识增强技术为核心,从单模态大模型到跨模态、从通用基础大模型到跨领域、跨行业持续创新突破,构建了模型层、工具与平台层,百度开源文心大模型这一动作,大幅降低人工智能开发和应用门槛,加快人工智能大规模产业化进程并拓展人工智能技术边界。
如果文章前的你也想自己私有化部署来构建自己的项目应用话,不妨考虑文心开源模型成为你的首选基座:
-
使用轻量化模型?推荐使用文心4.5-0.3B-Base,实测英伟达4090显卡运行没问题。
-
想使用多模态智能体?文心4.5-VL-28B-A3B 只需要80G显存就可以运行部署。
-
本地资源有限,不想部署?直接用百度千帆API,省心还便宜。