资讯动态

bge-large-zh-v1.5快速上手:手把手教你调用中文Embedding模型API

发布时间:2026/8/23 9:12:22 来源:尧图企业网站定制
bge-large-zh-v1.5快速上手手把手教你调用中文Embedding模型API1. 认识bge-large-zh-v1.5模型1.1 什么是Embedding模型Embedding模型是一种将文本转换为数值向量的技术。想象一下它就像是一个翻译官能把人类可读的文字转换成计算机能理解的数字语言。这些数字不是随机的而是包含了文本的语义信息——意思相近的文本它们的向量在数学空间里也会很接近。1.2 bge-large-zh-v1.5的特点bge-large-zh-v1.5是目前中文领域表现优异的Embedding模型之一由北京智源人工智能研究院开发。它有几个突出的特点中文优化专门针对中文语言特点训练能更好理解成语、俗语和专业术语高维向量输出1024维的稠密向量能捕捉更丰富的语义信息长文本支持最多可处理512个token约250-300个汉字领域适应性强在通用领域和垂直领域都有不错表现1.3 典型应用场景这个模型可以用于智能搜索让搜索结果更符合用户真实意图文档去重识别内容相似但表述不同的文档推荐系统根据用户兴趣推荐相关内容问答系统为问题找到最相关的答案段落2. 环境准备与模型验证2.1 检查模型服务状态首先我们需要确认模型服务是否正常运行。按照以下步骤操作cd /root/workspace cat sglang.log如果看到类似下面的输出说明服务启动成功[INFO] Embedding model bge-large-zh-v1.5 loaded successfully [INFO] API server started on port 300002.2 理解API接口这个镜像提供了兼容OpenAI格式的API接口主要参数包括model固定为bge-large-zh-v1.5input要处理的文本可以是字符串或字符串列表其他参数保持默认即可3. 基础API调用实战3.1 单文本Embedding生成让我们从最简单的单文本处理开始import openai # 初始化客户端 client openai.Client( base_urlhttp://localhost:30000/v1, api_keyEMPTY # 这个镜像不需要认证 ) # 生成单个文本的Embedding response client.embeddings.create( modelbge-large-zh-v1.5, input今天天气真好适合出去散步, ) print(f向量维度: {len(response.data[0].embedding)}) print(f前5个维度值: {response.data[0].embedding[:5]})运行后会输出一个1024维的向量前几个值可能是这样的向量维度: 1024 前5个维度值: [0.023, -0.045, 0.118, -0.207, 0.356]3.2 批量处理多个文本处理多个文本时只需将input改为列表texts [ 人工智能正在改变世界, 机器学习是AI的核心技术, 今天超市苹果打折 ] batch_response client.embeddings.create( modelbge-large-zh-v1.5, inputtexts, ) for i, emb in enumerate(batch_response.data): print(f文本{i1}的向量范数: {sum(x**2 for x in emb.embedding)**0.5:.3f})你会注意到前两个关于AI的文本向量范数更接近而关于苹果打折的文本则明显不同。4. 实际应用示例4.1 计算文本相似度有了Embedding向量我们可以计算文本之间的语义相似度import numpy as np def cosine_similarity(vec1, vec2): return np.dot(vec1, vec2) / (np.linalg.norm(vec1) * np.linalg.norm(vec2)) # 获取两个文本的Embedding text1 我喜欢吃火锅 text2 四川麻辣火锅是我的最爱 emb1 client.embeddings.create(modelbge-large-zh-v1.5, inputtext1).data[0].embedding emb2 client.embeddings.create(modelbge-large-zh-v1.5, inputtext2).data[0].embedding similarity cosine_similarity(emb1, emb2) print(f{text1} 和 {text2} 的语义相似度: {similarity:.3f})输出可能是我喜欢吃火锅 和 四川麻辣火锅是我的最爱 的语义相似度: 0.8724.2 简单文本分类我们可以利用Embedding实现基础的文本分类from sklearn.cluster import KMeans # 准备一些示例文本 documents [ Python是一种流行的编程语言, Java也有广泛的应用, 今天天气晴朗适合出游, 明天可能会下雨记得带伞, TensorFlow是深度学习框架, PyTorch也很受研究人员欢迎 ] # 获取所有文本的Embedding embeddings [] for doc in documents: resp client.embeddings.create(modelbge-large-zh-v1.5, inputdoc) embeddings.append(resp.data[0].embedding) # 使用K-Means聚类 kmeans KMeans(n_clusters2, random_state42).fit(embeddings) # 查看分类结果 for i, label in enumerate(kmeans.labels_): print(f{documents[i]} → 类别 {label})输出可能如下Python是一种流行的编程语言 → 类别 0 Java也有广泛的应用 → 类别 0 今天天气晴朗适合出游 → 类别 1 明天可能会下雨记得带伞 → 类别 1 TensorFlow是深度学习框架 → 类别 0 PyTorch也很受研究人员欢迎 → 类别 0可以看到模型成功将编程相关文本和天气相关文本分开。5. 性能优化与最佳实践5.1 批量处理提升效率相比单条处理批量发送请求能显著提高效率# 不好的做法循环发送单个请求 for text in large_text_list: response client.embeddings.create(modelbge-large-zh-v1.5, inputtext) # 好的做法一次性发送批量请求 response client.embeddings.create(modelbge-large-zh-v1.5, inputlarge_text_list)建议的批量大小是8-16条文本具体取决于你的GPU内存。5.2 处理长文本策略当文本超过模型最大长度限制时可以采用以下策略截断法直接截取前512个tokenlong_text ... # 很长的文本 truncated long_text[:500] # 简单截断分段法将文本分成多段分别获取Embedding后取平均def split_text(text, chunk_size400): return [text[i:ichunk_size] for i in range(0, len(text), chunk_size)] chunks split_text(long_text) chunk_embeddings [ client.embeddings.create(modelbge-large-zh-v1.5, inputchunk).data[0].embedding for chunk in chunks ] avg_embedding np.mean(chunk_embeddings, axis0)5.3 缓存常用Embedding对于不常变化的文本如产品描述、知识库内容可以缓存它们的Embeddingimport pickle from pathlib import Path cache_file Path(embedding_cache.pkl) # 尝试从缓存加载 if cache_file.exists(): with open(cache_file, rb) as f: embedding_cache pickle.load(f) else: embedding_cache {} def get_cached_embedding(text): if text not in embedding_cache: resp client.embeddings.create(modelbge-large-zh-v1.5, inputtext) embedding_cache[text] resp.data[0].embedding # 更新缓存文件 with open(cache_file, wb) as f: pickle.dump(embedding_cache, f) return embedding_cache[text]6. 总结通过本教程你已经学会了基础调用如何使用API生成单个文本和批量文本的Embedding实际应用计算文本相似度和简单文本分类的方法性能优化批量处理、长文本处理和缓存策略bge-large-zh-v1.5是一个强大的中文语义理解工具通过简单的API调用你可以为各种应用添加智能语义处理能力。记住以下最佳实践尽量使用批量请求提高效率对长文本采用合理的分段策略缓存不变的文本Embedding减少重复计算相似度阈值建议设置在0.7-0.8之间现在你可以开始尝试将这个模型集成到你的项目中了获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价