构建超越 RAG 的上下文工程层:提升大模型系统稳定性

构建超越 RAG 的上下文工程层:提升大模型系统稳定性检索增强生成 RAG 的初期热潮已经逐渐退去 开发者们开始面对一个冷静的现实 仅仅将向量数据库连接到像 DeepSeek V3 或 Claude 3 5 Sonnet 这样的大语言模型 LLM 对于生产级的可靠性来说是远远不够的 虽然 RAG 解决了知识截止日期的问题 但它也引入了一系列新的挑战 上下文噪声 令牌溢出以及臭名昭著的 迷失在中间 Lost in the

大家好,我是讯享网,很高兴认识大家。这里提供最前沿的Ai技术和互联网信息。



检索增强生成 (RAG) 的初期热潮已经逐渐退去,开发者们开始面对一个冷静的现实:仅仅将向量数据库连接到像 DeepSeek-V3 或 Claude 3.5 Sonnet 这样的大语言模型 (LLM) 对于生产级的可靠性来说是远远不够的。虽然 RAG 解决了知识截止日期的问题,但它也引入了一系列新的挑战:上下文噪声、令牌溢出以及臭名昭著的 “迷失在中间” (Lost in the Middle) 现象。为了构建真正稳健的系统,我们必须超越简单的检索,实现一个专门的 “上下文工程层” (Context Engineering Layer)。

大多数 RAG 教程遵循一个线性路径:用户查询 -> 嵌入 -> 向量搜索 -> 前 k 个结果 -> 提示词。在生产环境中,这条路径非常脆弱。如果向量搜索返回了无关的文本块(噪声),LLM 的推理能力就会下降。如果文本块太大,你会触及令牌限制或产生巨额成本。如果文本块太多,模型会失去对最关键信息的关注。

为了解决这些问题,我们需要一个位于检索步骤和最终 LLM 调用之间的中间层,充当 “过滤器和编排器”。在这种情况下, 变得至关重要,它提供了处理高级上下文处理所需的多次调用所需的高速、稳定的 API 骨干网络。

一个稳健的上下文层由四个主要组件组成:

  1. 语义路由器 (Semantic Router):确定查询的意图并决定使用哪种检索策略。
  2. 混合重排器 (Hybrid Re-ranker):获取初始的前 k 个结果,并使用交叉编码器 (Cross-Encoder) 模型重新评分,以获得更高的精度。
  3. 上下文压缩器 (Context Compressor):通过删除冗余令牌而不丢失语义含义来缩小检索到的文本。
  4. 令牌预算管理器 (Token Budgeter):根据模型的窗口和当前的 API 定价动态调整上下文大小。

向量搜索(双编码器)速度很快,但有时会忽略细微差别。重排器(交叉编码器)更准确,但速度较慢。我们将它们结合使用。首先,通过向量搜索检索 50 个候选结果,然后重新排序以找到前 5 个最相关的结果。

from sentence_transformers import CrossEncoder  class ReRanker:  def init(self, model_name=‘cross-encoder/ms-marco-MiniLM-L-6-v2’):  self.model = CrossEncoder(model_name)   def rank(self, query, documents):  # 将查询与每个文档配对  pairs = [[query, doc] for doc in documents]  scores = self.model.predict(pairs)   # 按分数对文档进行排序  ranked_results = sorted(zip(scores, documents), key=lambda x: x[0], reverse=True)  return [doc for score, doc in ranked_results] 

通过这种方式,我们可以确保输入到模型中的信息是经过二次筛选的。通过 获得稳定的 API 访问,可以确保这一系列复杂的处理过程不会因为网络波动而中断。

在处理长篇文档时,你并不总是需要完整的段落。上下文压缩使用较小的模型或语言学启发式方法来仅提取相关的句子。这显著减少了 OpenAI o3 或 Claude 3.5 Sonnet 等模型的输入令牌,你可以通过 访问这些模型以获得优化的性能。压缩不仅仅是为了省钱,更是为了提高模型的注意力质量。

LLM 开发中最容易被忽视的方面之一是成本和延迟控制。令牌预算管理器确保你的上下文永远不会超过预定义的限制,从而保护你免受意外账单和高延迟的影响。

import tiktoken  class TokenBudgeter:  def init(self, model_name="gpt-4o"):  self.encoder = tiktoken.encoding_for_model(model_name)  self.max_tokens = 4000   def fit_to_budget(self, context_list):  current_tokens = 0  final_context = []   for item in context_list:  tokens = len(self.encoder.encode(item))  if current_tokens + tokens < self.max_tokens:  final_context.append(item)  current_tokens += tokens  else:  break

return "

".join(final_context)

为了减轻重排和压缩引入的延迟,请使用 Python 的 asyncio。当你的系统正在获取嵌入向量时,它可以同时检查语义路由器或准备内存层。使用 聚合平台可以显著降低延迟,因为它允许高并发调用,使得这种异步方法在生产环境中非常有效。

此外,在处理大规模并发请求时,选择 作为基础设施层,可以让你在不同的模型供应商之间无缝切换,从而找到性能与成本的**平衡点。

构建上下文工程层将你的 LLM 应用从原型转变为生产就绪的系统。通过控制信息流,你可以确保像 DeepSeek-V3 这样的模型只接收到最相关的数据,从而减少幻觉并降低成本。AI 工程的未来不仅在于更好的模型,更在于更好的数据编排和上下文管理。

Get a free API key at

参考来源:https://towardsdatascience.com/rag-isnt-enough-i-built-the-missing-context-layer-that-makes-llm-systems-work/

小讯
上一篇 2026-04-17 12:07
下一篇 2026-04-17 12:05

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/266415.html