使用SGlang快速部署bge-large-zh-v1.5中文嵌入模型
在语义搜索、RAG系统和向量数据库构建中,高质量的文本嵌入模型至关重要。bge-large-zh-v1.5 是一款专为中文优化的嵌入模型,在多项基准测试中表现优异。结合 SGlang 推理框架,可快速将其部署为高性能 Embedding 服务。
环境准备与服务启动
使用预构建镜像可省去手动安装依赖和下载权重的步骤。进入工作目录后,服务默认监听 http://localhost:30000,并通过 /v1/embeddings 提供 OpenAI 兼容接口。
# 进入工作目录
cd /root/workspace
通过日志确认模型加载状态:
cat sglang.log
成功加载时应包含如下信息:
INFO: Model bge-large-zh-v1.5 loaded successfully
INFO: Uvicorn running on http://0.0.0.0:30000
调用示例
使用标准 OpenAI SDK 即可发起请求,无需真实 API Key:
import openai
client = openai.Client(
base_url="http://localhost:30000/v1",
api_key="EMPTY"
)
response = client.embeddings.create(
model="bge-large-zh-v1.5",
input="今天天气怎么样?"
)
print(response.data[0].embedding) # 输出1024维向量
支持批量处理多个文本:
texts = ["人工智能的发展趋势", "大模型在企业中的应用场景"]
response = client.embeddings.create(model="bge-large-zh-v1.5", input=texts)
embeddings = [item.embedding for item in response.data]
计算语义相似度:
import numpy as np
from sklearn.metrics.pairwise import cosine_similarity
def embed(text):
resp = client.embeddings.create(model="bge-large-zh-v1.5", input=text)
return np.array(resp.data[0].embedding).reshape(1, -1)
v1 = embed("机器学习算法原理")
v2 = embed("深度学习模型工作机制")
sim = cosine_similarity(v1, v2)[0][0]
print(f"相似度: {sim:.4f}")
性能调优建议
根据硬件选择合适配置:
| 设备 | 推荐 batch_size | 数据类型 |
|---|---|---|
| CPU (16GB RAM) | 1-4 | FP32 |
| RTX 3090 | 16 | FP16 |
| A100 | 64 | FP16 + KV Cache |
启动时启用半精度加速:
python3 -m sglang.launch_server \
--model-path bge-large-zh-v1.5 \
--dtype half \
--port 30000
对于超过512 token 的长文本,可采用分段平均策略:
def encode_long(text, max_len=512):
chunks = [text[i:i+max_len] for i in range(0, len(text), max_len)]
vecs = []
for chunk in chunks:
resp = client.embeddings.create(model="bge-large-zh-v1.5", input=chunk)
vecs.append(resp.data[0].embedding)
return np.mean(vecs, axis=0).tolist()
常见问题排查
- 服务未启动:检查日志是否存在显存不足或端口冲突;尝试减小 batch size 或更换端口。
- 向量维度错误:确认模型名称拼写为
bge-large-zh-v1.5,避免误用小型版本。 - 响应延迟高:启用 FP16、使用批量请求、升级 GPU 硬件。
可通过健康检查接口验证服务状态:
curl http://localhost:30000/health