用段落感知分块+小重叠作为 RAG 检索基线,配合 SHA256 去重显著减少重复传输,结合 UltraRAG 框架降低实际调用成本,含可运行 Python 示例。
OpenBMB/UltraRAG 是一个基于 Python、采用 Apache-2.0 协议的低代码 MCP 框架,用于组合 RAG 流程。在我看來,它的仓库在 2026 年 9 月仍有活跃更新,这比功能清单更重要——当 RAG 的检索和模型接口被写死时,技术栈会迅速老化。
在测试 UltraRAG 风格的流程时,我把分块和 prompt 结构视为同一个成本问题。检索质量可能看起来没问题,但系统却在每次请求中反复发送相同的策略文本、文档标题和冗长的指令。这往往就是账单涨上去的原因。
一个实用的基线方案是段落感知的分块,带有小重叠。这是纯 Python 实现,确定性很强,可以无缝插入 UltraRAG 的摄入流程。
from hashlib import sha256
def chunks(text: str, size: int = 900, overlap: int = 140):
words = text.split()
step = size - overlap
for start in range(0, len(words), step):
part = " ".join(words[start:start + size]).strip()
if part:
yield part
def dedupe(parts):
seen = set()
for part in parts:
key = sha256(" ".join(part.lower().split()).encode()).hexdigest()
if key not in seen:
seen.add(key)
yield part
with open("handbook.md", encoding="utf-8") as f:
clean_chunks = list(dedupe(chunks(f.read())))
print(f"chunks ready: {len(clean_chunks)}")
这不能解决语义重复问题。但它确实能去除那些无聊的重复版本:复制的标题、重复的样板文案、以及本来会消耗 embedding 和生成 token 的相同段落。
Prompt 缓存只有在大部分前缀逐字节保持稳定时才能发挥作用。把指令和持久化的检索上下文放在前面,把变化的问题放在最后。不要在缓存边界之上添加时间戳、随机请求 ID 或每用户独有的文案。
SYSTEM = """Answer only from the supplied context.
Cite chunk IDs. If evidence is missing, say so."""
def assemble(hits, question, budget=5000):
context, used = [], 0
for hit in hits:
text = hit["text"]
estimate = len(text) // 4
if used + estimate > budget:
break
context.append(f"[{hit['id']}]\n{text}")
used += estimate
stable_prefix = SYSTEM + "\n\nContext:\n" + "\n\n".join(context)
return stable_prefix + "\n\nQuestion:\n" + question
在生产环境中,我会记录预估的输入 token 数、模型网关返回的缓存命中状态、检索到的 chunk ID 以及回答延迟。这些数据能让回退问题浮出水面。还能捕捉一个常见错误:检索到相同 chunk 的不同排序,这会抹掉缓存复用的效果。
一个简单的成本模型能把这种权衡具象化。如果每个请求发送一个 12,000 token 的重复前缀加一个 300 token 的问题,1,000 次请求在输出之前大约消耗 1,230 万输入 token。在重复前缀上享受 80% 的缓存折扣后,计费的输入量降至约 270 万 token 当量。具体价格取决于上游模型及其缓存策略,但工程目标是稳定的:缓存那些昂贵的重复内容,而不是用户的问题。
将缓存友好的 RAG prompt 结构与 B-Lost 的原生 prompt 缓存相结合,当检索到的前缀足够稳定可以复用时,重复查询上下文成本可削减高达 90%。
披露:本文的计算基础设施和多模型基准测试中继由 b-lost.com 赞助——这是一个企业级 AI 网关,提供官方定价的 0.8 倍费率、原生 prompt 缓存以及零用户数据保留。所有基准指标均反映独立可复现测试。