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

创建OpenAI Embeddings时遭遇RateLimitError的解决方案求助

解决方案与替代方法

一、针对Azure OpenAI配额的核心处理

  • 提交配额提升申请:直接在Azure门户中找到对应OpenAI资源,提交Embeddings_Create操作的配额提升请求,明确说明业务调用量需求。
  • 错峰执行任务:避开工作日白天等业务高峰时段,选择凌晨或低峰期批量处理文档,降低瞬时调用压力。

二、LangChain层面的进阶优化

你已调整部分参数,可尝试以下额外优化:

  • 延长请求超时时间:设置request_timeout=60(或更长),避免因超时触发不必要的重试,加剧配额消耗。
  • 自定义重试策略:使用tenacity库定制更灵活的重试规则,增加重试间隔的随机抖动,避免固定间隔导致的集中请求:
from tenacity import retry, stop_after_attempt, wait_exponential_jitter
from langchain.embeddings import AzureOpenAIEmbeddings

embeddings = AzureOpenAIEmbeddings(
    azure_deployment="你的部署名称",
    openai_api_version="2023-07-01-preview"
)

@retry(stop=stop_after_attempt(10), wait=wait_exponential_jitter(min=2, max=60))
def custom_embed_documents(texts):
    return embeddings.embed_documents(texts)
  • 限制并发请求数:若使用异步调用,通过asyncio.Semaphore控制同时发起的请求数量,比如限制为5个并发,避免瞬间打满配额:
import asyncio
from langchain.embeddings import AzureOpenAIEmbeddings

embeddings = AzureOpenAIEmbeddings(azure_deployment="你的部署名称")
semaphore = asyncio.Semaphore(5)

async def async_embed(text):
    async with semaphore:
        return await embeddings.aembed_query(text)

三、替代方案

如果配额问题无法短期解决,可切换以下方案:

1. 本地开源嵌入模型

使用LangChain的HuggingFaceEmbeddings加载开源模型,完全脱离API配额限制,适合大规模文档处理:

from langchain.embeddings import HuggingFaceEmbeddings

# 示例:中文用BGE大模型,英文用MiniLM
embeddings = HuggingFaceEmbeddings(
    model_name="BAAI/bge-large-zh",
    model_kwargs={"device": "cuda"},  # 有GPU就用cuda,无则设为"cpu"
    encode_kwargs={"normalize_embeddings": True}
)

2. 其他云厂商嵌入API

替换为国内云厂商的嵌入服务,只需更换LangChain对应的Embeddings类,适配各自的API参数即可。

3. 分批缓存处理

将文档拆分为极小批次,每处理完一批就将嵌入结果缓存到本地文件(如JSON)或本地向量数据库(如FAISS),中途失败可从断点继续,避免重复消耗配额。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 06:10:13