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

OpenAI Token工作原理解析及Langchain项目Token消耗优化咨询

OpenAI Token工作机制
  • Token是OpenAI模型处理文本的最小单位,1个Token大致对应英文4个字符/中文2个字符,会根据模型词库做智能拆分(比如专业术语、长词可能拆成多个Token)。
  • Embeddings生成消耗:调用OpenAIEmbeddings时,所有输入文本都会被转换成Token发送给API,每处理1个Token就产生对应消耗——你启动脚本时的4万+Token消耗,大概率是批量处理93篇文档生成Embeddings导致的。
  • 模型问答阶段的消耗分为输入Token(用户问题+检索到的上下文)和输出Token(AI回答),但你的场景是启动即消耗,所以核心是Embeddings生成环节的问题。
针对你的场景的Token消耗优化方案

1. 彻底规避重复生成Embeddings

  • 首次构建FAISS向量库后,直接将索引和Embeddings本地持久化:用faiss.write_index保存FAISS索引,用pickle或joblib保存分割后的文本片段,后续启动脚本直接加载本地文件,完全跳过调用OpenAI API生成Embeddings的步骤——这是最有效的优化,能直接消除启动时的Token消耗。

2. 优化文本处理流程

  • 收紧文本清洗规则:去掉93篇文档里的重复内容、页眉页脚、系统自动生成的无意义文本(比如Zendesk的工单编号、签名栏),减少需要处理的总文本量。
  • 调整文本分割参数:检查GPT2TokenizerFast的chunk_size和chunk_overlap:
    • 若chunk_size过小,会分割出过多细碎片段,导致总Token量飙升;可以根据文档内容复杂度,把chunk_size从默认512调整到800-1200区间(平衡检索精度和Token消耗)。
    • 降低chunk_overlap数值(比如从100降到50),减少片段间重复文本的Token消耗。

3. 更换轻量Embeddings模型

  • OpenAI的text-embedding-3-small模型,Token消耗比text-embedding-ada-002或text-embedding-3-large低很多,同时检索精度能满足大多数客服文档问答场景,直接切换该模型可降低单文本的Token消耗。

4. 排查隐性调用问题

  • 检查代码是否在启动阶段触发了ConversationalRetrievalChain的隐性测试调用(比如初始化时的predict、invoke操作),确保只有用户发起提问时才触发Chain的问答逻辑,避免意外的Token消耗。

5. 精准监控Token消耗

  • 用tiktoken库统计每一步的Token用量,精准定位消耗来源,示例代码:
import tiktoken
# 对应text-embedding-3系列模型的编码方式
tokenizer = tiktoken.get_encoding("cl100k_base")

def count_tokens(text):
    return len(tokenizer.encode(text))

# 统计单篇清洗后文档的Token数
for doc in cleaned_docs:
    print(f"文档Token数:{count_tokens(doc.page_content)}")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 08:40:08