当前位置: 首页 > news >正文

DashScope Embedding工具类详解(向量转换、Milvus知识库项目实战)

一、为什么需要Embedding?

在知识库项目中,Milvus 并不能直接存储和检索文本内容,而是需要先将文本转换成向量(Vector)。
例如:

新能源汽车 动力电池 电机控制系统

经过 Embedding 模型处理后:

[ 0.123, -0.456, 0.789, ... ]

这些向量会存入 Milvus,后续用户提问时再通过向量相似度检索相关知识。
本文使用阿里云 DashScope 的 text-embedding-v3 模型实现文本向量化。

二、工具类代码

importosfromdotenvimportload_dotenvfromdashscopeimportTextEmbedding load_dotenv()classEmbeddingUtil:api_key=os.getenv("DASHSCOPE_API_KEY")@staticmethoddefembedding(text_list:list[str]):vectors=[]# 🔥 分批(关键修复)batch_size=10foriinrange(0,len(text_list),batch_size):batch=text_list[i:i+batch_size]resp=TextEmbedding.call(model="text-embedding-v3",input=batch,api_key=EmbeddingUtil.api_key)ifnotresporresp.status_code!=200:raiseException(f"Embedding失败:{resp}")foriteminresp.output["embeddings"]:vectors.append(item["embedding"])returnvectors

三、代码解析

1. 加载环境变量
load_dotenv()

项目根目录创建 .env 文件:

DASHSCOPE_API_KEY=你的API_KEY

通过:

os.getenv("DASHSCOPE_API_KEY")

读取 API Key。

2.定义 Embedding 工具类
class EmbeddingUtil:

用于统一封装向量生成逻辑。

后续项目中只需要:

EmbeddingUtil.embedding(texts)

即可获得向量结果

3. 定义静态方法
@staticmethoddefembedding(text_list:list[str]):

参数:

["新能源汽车","动力电池","电机控制系统"]

返回:

[[0.12,0.45,...],[0.78,0.91,...],[0.34,0.56,...]]
4. 分批处理
batch_size=10

如果一次性提交大量文本,可能出现:

  • 请求超时
  • 接口限流
  • 请求体过大

因此采用分批策略:

foriinrange(0,len(text_list),batch_size):

例如:

len(text_list)=25

将被拆分为:

1批:1~102批:11~203批:21~25
5. 调用 Embedding 模型
resp=TextEmbedding.call(model="text-embedding-v3",input=batch,api_key=EmbeddingUtil.api_key)

发送:

["新能源汽车","动力电池"]

返回:

{"output":{"embeddings":[{"embedding":[...]},{"embedding":[...]}]}}
http://www.cnnetsun.cn/news/2998223.html

相关文章:

  • AMD Ryzen 处理器调试终极指南:解锁硬件性能潜力的专业工具
  • CrewAI新手使用指南
  • 2026年京东云 618 活动介绍及 Hermes Agent/OpenClaw配置Token Plan安装步骤全解
  • 3秒完成图片格式转换:Save Image as Type Chrome扩展终极指南
  • 计算机毕业设计之居家养老服务小程序
  • Onekey Steam游戏解锁器:5分钟快速解锁完整DLC的终极指南
  • SITS 2026实战手记:从数据基建到商业闭环,我们帮37家制造业客户完成AI能力分级(附可运行评估矩阵表)
  • Video Download Helper:你的网页视频离线收藏助手
  • 窗体 winform 显示失败
  • 生产环境采样策略:如何平衡数据完整性与存储成本?
  • 告别密码遗忘焦虑:Navicat密码解密工具的三大创新应用
  • 网络测速终极方案:iperf3 Windows版完整指南
  • OpenRocket火箭设计软件:从零开始掌握专业级火箭仿真
  • MapleStory资源编辑革命:Harepacker复活版全面指南
  • 3个理由告诉你为什么HTML转Figma工具正在改变设计工作流
  • AISMM价值创造评估实战手册:手把手教你用SITS 2026标准测算AI项目真实IRR(附可验证Excel模板)
  • Cat-Catch终极实战手册:3分钟快速掌握网页资源嗅探技巧
  • 2026江苏企业如何判断三维扫描项目是否真正有价值
  • 面向对象心得
  • 如何高效解决浏览器全屏API兼容性问题:screenfull.js进阶实战指南
  • 什么是牛客AI面试?一文讲清核心能力
  • VibePlayer v1.3.3 更新:全新 Logo + 修复音乐库高亮 Bug
  • Python Docker官方镜像深度解析:容器化Python应用终极指南
  • 数据库视图
  • AutoCAD Architecture 2027 下载安装全流程分享,建筑绘图效率利器
  • 婚内财产公证怎么办理?婚内财产公证办理流程是什么?
  • 零壹教育:数字化时代的遗忘困境
  • SwiftyBeaver Swift 项目的彩色日志库
  • 2026年首脑培训学校口碑怎么样
  • Article A (EN)