当前位置: 首页 > 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.jsqmd.com/news/1072175/

相关文章:

  • Ansible:一台机器管所有服务器的自动化利器
  • 不用啃 SPSS 教程!Paperxie 一站式 AI 数据分析,搞定论文实证全流程
  • 异步消息管道:从 Redis Stream 到可靠消费的工程实践
  • GPU 租赁厂商量化排名:机房 PUE、隐性资费、训推工具实战对比
  • Blender到虚幻引擎一键迁移:5分钟完成3D资产无损转换的终极指南
  • 零门槛部署:2026年OpenClaw 云厂商 AI 智能体
  • 大气层整合包系统:解决Switch破解难题的终极完整指南
  • 如何为老旧Mac安装最新macOS:OpenCore Legacy Patcher终极指南
  • Boogu-Image - 闪电出图,产品图、海报、国风插画样样精通 一键整合包下载
  • VMware Workstation Pro 17:1000+许可证密钥与专业虚拟化环境搭建指南
  • 3个场景解决你的Mac窗口管理难题:Topit窗口置顶神器完全指南
  • YOLO26+辣椒病害识别:从数据集训练到部署全流程——识别尾孢菌叶斑病、卷叶病等,提升辣椒产量(项目源码+数据集+模型权重+UI界面+python+深度学习+远程环境部署)
  • Git 安装以及快速使用
  • 5 分钟搭建本地 AI 自动化,OpenClaw 2.7.9 Win/mac 双端实操手册
  • Blender Datasmith导出插件:5分钟实现Blender到虚幻引擎的无缝迁移
  • 计算机毕业设计之居家养老服务小程序
  • 为什么 doc_id 不够:version 与 checksum 才是企业 AI 证据链的硬地基
  • 3分钟让Figma说中文?这款神器让你的设计效率翻倍
  • 『手机号登录优化➕分销能力升级』|VortMall微服务商城系统v1.3.6全新上线
  • Rust 测试体系:从单元测试到集成测试,质量保障的完整拼图
  • Docker/Kubernetes为何成为AI智能体视觉(TVA)的“细胞与组织”(17)
  • 告别键盘连击烦恼:智能过滤让你的打字体验焕然一新
  • Paperxie AI 科研绘图:零门槛一键产出符合期刊标准的学术可视化图表
  • GNSS gpio引脚解释
  • AI 算法选型指南:从业务场景出发,避免“模型至上“的工程陷阱
  • 抖音无水印视频下载全攻略:3分钟学会获取纯净版短视频
  • 2026年京东云 618 活动介绍及 Hermes Agent/OpenClaw配置Token Plan安装步骤全解
  • SITS 2026实战手记:从数据基建到商业闭环,我们帮37家制造业客户完成AI能力分级(附可运行评估矩阵表)
  • Data Fabric vs 数据中台:企业数据整合架构正在发生什么变化
  • 独立开发者的奥卡姆剃刀:数据安全与极简异地备份的工程实践