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

如何估算RAG管道中OpenAI的完整使用成本及追踪Token消耗

解决RAG管道中OpenAI Token消耗追踪及FAISS检索成本问题

一、追踪text-embedding-ada-002的Token消耗

LangChain的get_openai_callback()可以覆盖嵌入阶段的Token统计,只需在调用嵌入模型的代码块外包裹这个上下文管理器即可,示例代码如下:

from langchain.embeddings.openai import OpenAIEmbeddings
from langchain.callbacks import get_openai_callback

embeddings = OpenAIEmbeddings(model="text-embedding-ada-002")
texts = ["待嵌入文本1", "待嵌入文本2"]

with get_openai_callback() as cb:
    embedding_results = embeddings.embed_documents(texts)
    print(f"嵌入阶段总Token数: {cb.total_tokens}")
    print(f"嵌入阶段费用: ${cb.total_cost:.6f}")
  • 核心逻辑:OpenAIEmbeddings调用OpenAI API时会触发回调统计,total_tokens对应嵌入请求的Token总量,total_cost会根据ada-002的定价自动计算(当前定价为$0.0001/1k Token)。
  • 单文本嵌入场景下,使用embed_query()方法也可通过相同方式统计。

二、FAISS检索的Token消耗确认

从FAISS索引检索信息完全不会产生OpenAI Token消耗。FAISS是本地/服务器端运行的向量数据库,检索过程仅在本地计算向量相似度,无需调用任何OpenAI API,因此无Token或费用产生。

全流程Token追踪提示

若要统一统计整个RAG流程(嵌入+检索+生成)的Token和费用,可将全流程代码放入get_openai_callback()上下文,回调会自动拆分各阶段消耗:

with get_openai_callback() as cb:
    # 1. 文本嵌入
    embedding_results = embeddings.embed_documents(texts)
    # 2. FAISS索引构建与检索
    # ... 你的FAISS操作代码 ...
    # 3. GPT-4生成回答
    response = llm.generate(...)
    
    print(f"总Token数: {cb.total_tokens}")
    print(f"嵌入阶段Token: {cb.total_tokens - cb.prompt_tokens - cb.completion_tokens}")
    print(f"生成阶段Prompt Token: {cb.prompt_tokens}")
    print(f"生成阶段Completion Token: {cb.completion_tokens}")
    print(f"总费用: ${cb.total_cost:.6f}")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 14:22:04