在rag过程中,需要消耗token的地方在哪

张开发
2026/4/10 16:33:34 15 分钟阅读

分享文章

在rag过程中,需要消耗token的地方在哪
RAG 的成本控制和性能优化。我给你按“完整调用链”拆清楚每一步的 token 消耗总结RAG 主要消耗 token 的地方 1️⃣ embedding少量 2️⃣ LLM 输入大头 3️⃣ LLM 输出大头一、完整 RAG 流程 token 消耗点用户问题 ↓ ① embeddingquery ↓ Retriever检索不耗token ↓ 相关 chunks ↓ ② LLM 输入prompt ↓ ③ LLM 输出completion二、逐步拆解1️⃣ Query Embedding检索前embedding.embed_query(query)✔ 消耗情况✅ 消耗 token计费 ❌ 不占 LLM 上下文✔ 特点token 很少通常 20成本很低2️⃣ 文档 Embedding离线阶段embedding.embed_documents(docs)✔ 消耗情况✅ 一次性消耗建库时 ❌ 查询时不再消耗 这是预处理成本3️⃣ Retriever 检索阶段retriever.invoke(query)✔ 消耗情况❌ 不消耗 token 只是向量搜索或关键词匹配4️⃣ LLM 输入最大成本 ⚠️llm.invoke(prompt)prompt 结构用户问题 检索到的 chunks✔ token 计算input_tokens query (chunk_size × top_k) 举例假设query 20 tokenschunk_size 200 tokenstop_k 5总输入 20 (200 × 5) 1020 tokens 这是最大成本来源5️⃣ LLM 输出第二大成本模型生成的回答✔ 举例回答长度 200 tokens 也计费三、总成本公式总token ≈ embedding(query) LLM输入query chunks LLM输出四、结论❗ 1成本大头在哪里 LLM 输入chunks最大 LLM 输出其次 embedding 最小❗ 2Retriever 本身不耗 token❌ Retriever 不消耗 token但✅ Retriever 决定你喂多少 token 给 LLM 间接影响成本五、一个直观对比阶段是否耗 token成本占比Query embedding✅很小文档 embedding✅一次性中Retriever❌0LLM 输入✅⭐ 最大LLM 输出✅⭐ 次大

更多文章