You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从OpenAI批量嵌入作业获取数据失败及利用率优化咨询

批量嵌入30万+产品描述的问题解决:输出文件读取崩溃与效率优化

一、解决输出文件读取内核崩溃的问题

直接调用client.files.content(output_file_id).content会把整个输出文件的二进制内容一次性加载到内存,3万多条嵌入结果的体积大概率会撑爆当前内核的内存,导致崩溃。换成分块读取的方式,逐段写入本地文件即可解决:

import openai

client = openai.OpenAI()

# 分块读取并保存到本地文件
with open("embeddings_output.jsonl", "wb") as local_file:
    for chunk in client.files.content(output_file_id).iter_bytes(chunk_size=8192):
        local_file.write(chunk)

每次仅读取8KB的内容块,逐步写入本地,完全避免内存过载问题。之后直接读取本地的jsonl文件处理嵌入结果即可。

二、最大化利用批量嵌入能力

text-embedding-ada-002单批量作业最多支持90000条请求,而批量队列总上限为300万条。你当前每批仅放入34337条,远未用满单批上限,建议调整每批大小至90000条:

  • 30万条描述只需拆成4批(3个9万条批次+1个3万条批次),大幅减少作业数量,降低管理成本
  • 注意单个批量作业的jsonl文件不能超过512MB,拆分前可估算单条请求的平均大小,确保9万条的文件体积不超限
  • 队列总容量300万,完全能容纳30万条描述的所有批次,不存在冲突

另外,还能进一步优化请求结构:每个请求的body中,input支持传入字符串数组,可将多条产品描述打包进同一个请求。示例如下:

{"custom_id": "batch-request-0", "method": "POST", "url": "/v1/embeddings", "body": {"model": "text-embedding-ada-002", "input": ["Base Líquida Maybelline Superstay 24 Horas...", "Sandália Havaianas Top Animals...", ...], "encoding_format": "float"}}

这样一个请求可处理多条描述(注意单请求的token总数不超过8191),单批能容纳的总描述数会更多,进一步压缩批量作业数量,提升效率。

内容的提问来源于stack exchange,提问作者Marcio Bernardo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 09:40:14