链载Ai

标题: Context Engineering-探索式理解 [打印本页]

作者: 链载Ai    时间: 昨天 21:57
标题: Context Engineering-探索式理解

随着大型语言模型(LLMs)的快速发展,其上下文窗口已显著扩展,有些模型甚至支持超过100万个标记的上下文。然而你如果经常使用的话会发现当上下文超过一定阈值的时候,模型的回答质量开始恶化。虽然更多的信息有利于模型的理解,然而这些上下文中存在很多 垃圾/无效 信息,导致模型答非所问,因此一个有效的解决方法是更好的索引上下文。

“探索式理解”的意义不在于换一套工作流程,而在于在面对不确定、复杂、稀疏信息时,用一种主动、递进、元认知的方式从片段走向可靠的整体认知。让 Agent 可以从零散的信息中构建起一个完整、稳健且具有深度的知识体系。

目录:

上下文管理方法

检索增强生成

传统的上下文管理方法,如检索增强生成(RAG),通过预先索引所有上下文并根据查询检索相关内容来解决问题。然而,这种方法在处理复杂或动态信息空间时可能显得低效。一种新兴的替代方法——“探索式理解”(exploratory understanding)——通过动态、迭代的方式管理上下文,展现出更高的灵活性和效率。RAG的工作流程如下:

  1. 索引:将所有上下文内容编码为向量,存储在数据库中。
  2. 检索:根据用户查询,找到与查询向量最相似的文档。
  3. 生成:将检索到的文档与查询一起输入模型,生成最终回答。

但它存在一些局限性:

探索式理解

与RAG这种“地毯式轰炸”后被动整合信息的方式相对,一种更主动、更智能的范式应运而生,我们称之为“探索式理解”。

“探索式理解”借鉴了人类专家解决未知问题的认知过程。它不试图一次性消化所有信息,而是将LLM封装成一个能够与环境交互的智能体(Agent),让它带着问题主动地、迭代地去探索信息源,在“探索-思考-再探索”的循环中,逐步构建起对问题的完整理解。这就像一位经验丰富的开发者被要求去理解一个陌生的代码库。他不会从头到尾阅读每一行代码,而是会:

  1. 提出问题: “这个功能的核心入口在哪里?”
  2. 使用工具探索: 使用 grep 搜索关键函数名,使用 find 或 ls 查看目录结构。
  3. 分析结果并形成假设: “看起来 main.py 调用了 api_handler.go,这个可能是关键链路。”
  4. 迭代探索: 深入 api_handler.go 文件,继续搜索和阅读,验证或推翻自己的假设。

这种方法类似于人类在探索新领域时的“边学边做”过程,强调灵活性和适应性。

与RAG相比,探索式理解具有以下特点:

例如,在代码分析场景中,RAG可能需要索引整个代码库,而探索式理解允许模型通过搜索工具(如代码搜索API)查找特定函数或模块,逐步构建对代码的理解。这种方法在处理大型代码库或快速变化的数据集时尤为有效。

实现探索式理解

实现“探索式理解”的关键,在于将LLM的能力从单纯的“文本生成”提升到“工具使用”和“任务规划”。

探索式理解方案解析

一个比较好的例子是 Claude-Code ,虽然其只提供了一个空的 github 仓库但是我们仍然可以通过逆向工程分析,解析其探索式理解方案。这个过程模仿了人类进行研究或调试时的思维方式,有显式假设(hypotheses)、证据积累与关联(evidence)、自我反省(think prompt 里的支持/反驳)、动态决策(选假设去搜)、再探索与终止判断,结构清晰,能够支撑一个 agentic search 过程。

classBeliefState:

def __init__(self):

self.hypotheses = [] # 每个是假设 dict: {"desc":...,"confidence":...,"evidence": [...]}

self.evidence = [] # 搜集到的原始片段

self.history = [] # 交互记录

def update_with_evidence(self, new_evidence):

self.evidence.extend(new_evidence)

# 简单示例:提升与某些假设相关的置信度

forh in self.hypotheses:

ifany(tag in new_evidence_itemfortag in extract_keywords(h["desc"])fornew_evidence_item in new_evidence):

h["confidence"] = min(1.0, h["confidence"] +0.2)

def add_hypotheses(self, hypos):

self.hypotheses.extend(hypos)

def best_hypothesis(self):

returnmax(self.hypotheses, key=lambda h: h["confidence"],default=None)

def exploratory_agent(initial_question, tools, llm_call, belief: BeliefState):

#1. 初始化假设

initial_hypos = generate_initial_hypotheses(initial_question) # 返回若干 candidate hypothesis

belief.add_hypotheses(initial_hypos)

whileTrue:

#2. 选择当前最值得探索的假设(带不确定性/证据缺口)

hypo = select_hypothesis_to_explore(belief)

ifnot hypo:

break# 没有可用假设了

#3. 构造搜索 query(关键词/路径)并调用最合适工具

search_queries = formulate_search_queries(hypo)

exploration_results = invoke_tools(search_queries, tools)

#4. 更新信念状态(把新证据与假设关联)

belief.update_with_evidence(exploration_results)

belief.history.append({

"role":"explore",

"hypothesis": hypo,

"results": exploration_results

})

#5. 让 LLM “思考”当前证据:自我校验 + 生成下一步动作

think_prompt = build_think_prompt(initial_question, belief)

llm_output = llm_call(think_prompt)

parsed = interpret_llm_output(llm_output)

# parsed 可能包含:修正的假设、新生成的假设、是否要继续探索、候选答案、反例检查请求等

ifparsed.get("new_hypotheses"):

belief.add_hypotheses(parsed["new_hypotheses"])

ifparsed.get("evidence"):

belief.update_with_evidence(parsed["evidence"])

belief.history.append({

"role":"think",

"prompt": think_prompt,

"llm_output": llm_output

})

#6. 终止判断(置信度足够 + 反例检查通过)

ifshould_terminate(belief, parsed):

final_answer = synthesize_answer(belief, parsed)

returnfinal_answer, belief.history

# 否则继续循环:可能调整问题、分发子 Agent、追问细节

关键子函数 / 策略说明

系统:你是探索式理解 Agent。请基于以下假设和证据进行自我校验并决定下一步。
假设:{hypo_desc}(当前置信度: {confidence})
已有证据:{list evidence snippets}
要求:列出这个假设成立的三条核心证据,以及最多两条反例/疑点。如果证据不够,生成更细化的搜索 query 或修正假设。



提示词设计

系统提示词

你是一个有工具能力的探索型智能体 (Exploratory Agent)。
每轮要做三件事:
1. 基于当前假设与证据“思考”(列出支持/反驳、未覆盖的证据缺口)。
2. 决定下一步最有信息增益的探索动作(搜索、细化假设、反例验证)。
3. 生成结构化状态更新(假设更新、证据打分、推荐的子问题)。
你的回答要明确区分:当前最可信假设、证据摘要、下一步行动建议、是否可以终止。

任务提示词(动态)

目标:找出代码库中实现 feature X 的模块/函数,并解释其调用流程。
当前已知:{自动填入已采集的证据片段摘要}
请执行:
1. 评估现有假设(列出 top-2 假设及每个置信度/薄弱点)。
2. 基于现有证据列出支持和反驳每个假设的关键点。
3. 如果信息不足,提出最有价值的下一个搜索 query(包含关键词、路径、工具建议)。
4. 如果已有足够证据,请给出结构化解释(实现位置、调用链、依赖、未解的疑问)。
格式化输出:
- Hypotheses: ...
- Evidence Summary: ...
- Next Actions: ...
- Final Answer (如果可终止): ...



我对探索式理解的看法

“探索式理解”代表了我们与AI交互方式的一次深刻转变,它标志着我们正从将AI视为一个静态的“知识库”转向一个动态的“问题解决伙伴”。

总而言之,当整个行业还在为上下文窗口的“长度”而焦虑时,“探索式理解”提醒我们,真正的智能在于如何高效地利用信息,而不在于能一次性“吞下”多少。这不仅是一种技术路线的演进,更是一种哲学上的回归——回归到人类解决问题时那种最自然、最高效的探索式思维。






欢迎光临 链载Ai (https://www.lianzai.com/) Powered by Discuz! X3.5