Qwen3-Embedding-4B 本地部署:llama.cpp 与 vLLM 集成
1. 模型先看清楚
Qwen3-Embedding-4B 是通义千问团队在 2025 年 8 月开源的文本嵌入模型,定位很明确:不是拿来聊天的,而是拿来做检索、聚类、分类这类向量任务。它的参数量是 4B,默认输出 2560 维向量,最长支持 32k token,官方还提供了 MRL 投影能力,方便把向量压到 32 到 2560 维之间,按精度和存储成本自己取舍。
这类模型最实用的地方在于,它把'能跑'和'好用'兼顾得还不错。多语言覆盖广,官方给出的 MTEB、CMTEB、Code 类任务分数也比较能打,商用协议还是 Apache 2.0。对做本地知识库的人来说,基本上已经把该省的手续省掉了。
2. 先说选型,再说部署
如果目标只是做一个能在本地跑起来的 embedding 服务,llama.cpp 更轻,折腾成本也低。它对 GGUF 支持很好,适合 CPU/GPU 混合推理,老机器、消费级显卡都能凑合上。
如果你还想要界面、知识库管理和更完整的 RAG 流程,vLLM + Open WebUI 更顺手。它不是最省资源的方案,但上手快,后面扩展也省心。
3. 用 llama.cpp 跑起来
llama.cpp 是用 C/C++ 写的推理框架,重点就是轻量。Qwen3-Embedding-4B 已经有官方 GGUF 镜像,直接下载就能用,不需要自己转格式。
先把仓库拉下来,编译时如果打算走 GPU,就把 CUDA 环境准备好。
git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp
make clean && make LLAMA_CUBLAS=1 -j
然后下载模型。量化版本一般优先看 Q4_K_M 或 Q5_K_S,前者更省显存,后者精度通常会好一点,具体选哪个看你机器余量。
wget https://huggingface.co/Qwen/Qwen3-Embedding-4B-GGUF/resolve/main/Qwen3-Embedding-4B-GGUF-Q4_K_M.gguf
启动时打开 embedding 模式,顺手把批大小和线程数调一下。
./main \
-m ./models/Qwen3-Embedding-4B-GGUF-Q4_K_M.gguf \
--port 8080 \
--embedding \
--n-gpu-layers 35 \
--batch-size 512 \
--threads 8
几个参数里,--n-gpu-layers 对显存最敏感。12GB 以上的卡可以尝试多卸载一些层;如果机器紧张,少放几层反而更稳。
服务起来后,可以用下面这个接口拿向量:
POST http://localhost:8080/embedding
Content-Type: application/json
{
"content": "这是一段需要编码的中文文本"
}
返回结果大致长这样:
{
"embedding": [0.123, -0.456, ..., 0.789],

