<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title>提示词 - tag - 沐木</title><link>https://oldletter.cn/tags/%E6%8F%90%E7%A4%BA%E8%AF%8D/</link><description>提示词 - tag - 沐木</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><lastBuildDate>Sat, 11 Jul 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://oldletter.cn/tags/%E6%8F%90%E7%A4%BA%E8%AF%8D/" rel="self" type="application/rss+xml"/><item><title>知识库工程（三）：提示词、RAG 与 Agent 如何协作</title><link>https://oldletter.cn/posts/rag-engineering-03-retrieval-quality/</link><pubDate>Sat, 11 Jul 2026 00:00:00 +0000</pubDate><author>mumu</author><guid>https://oldletter.cn/posts/rag-engineering-03-retrieval-quality/</guid><description><![CDATA[<blockquote>
<p>系列导航：<a href="/posts/rag-engineering-01-adapter-boundary/" rel="">1</a> | <a href="/posts/rag-engineering-02-ingestion-pipeline/" rel="">2</a> | <a href="/posts/rag-engineering-03-retrieval-quality/" rel="">3</a> | <a href="/posts/rag-engineering-04-contract-sse/" rel="">4</a></p></blockquote>
<p>提示词、RAG 和 Agent 经常被写成三个可替换的方案。它们处在不同层次：提示词组织一次模型调用中的信息与约束，RAG 从外部知识中选择证据，Agent 根据任务状态决定下一步动作。一个完整应用可以同时使用三者，也可以只使用其中一部分。</p>
<p>分清职责后，很多故障会更容易定位。模型漏掉文档中的事实，应先检查检索与上下文；模型格式不稳定，再检查提示词和结构化输出；模型需要多次查询、计算或调用业务工具，才进入 Agent 编排。只改提示词无法补回没有进入上下文的证据。</p>
<h2 id="prompt-是一次调用的上下文编排">Prompt 是一次调用的上下文编排</h2>
<p>实际送给模型的输入通常由系统规则、用户任务、少量示例、检索证据、对话状态和工具定义组成。它们共享同一个 token 预算：</p>
<p>$$
T_{sys}+T_{user}+T_{demo}+T_{rag}+T_{history}+T_{tool}+T_{output}\leq T_{window}
$$</p>
<p>上下文窗口扩大后，预算约束依旧存在，因为输入长度还会影响延迟、费用与注意力分配。系统规则应该短而稳定，业务数据保持结构清晰，检索片段携带来源与版本。少量示例适合约束输出模式，不能用来长期保存不断变化的知识。</p>
<p>Prompt 中常见的几个区块有不同优先级。系统规则定义身份、权限和禁止事项；用户消息描述当前目标；证据区提供可引用事实；工具定义列出允许执行的动作。检索文档属于不可信数据，其中若出现“忽略系统要求”，应用不能把它提升为指令。</p>
<h2 id="rag-在生成前选择证据">RAG 在生成前选择证据</h2>
<p>一次基础 RAG 包含查询改写、候选召回、过滤、重排、上下文组装和生成。查询改写解决代词、省略和多轮上下文问题，召回负责扩大候选范围，重排比较问题与段落的匹配程度，组装阶段处理去重、版本与 token 预算。</p>
<p>检索结果必须连同来源进入 Prompt。只有正文，没有文档标识、页码或更新时间，模型生成后就难以给出可核对引用。旧版制度和新版制度同时被召回时，生成模型也不适合自行猜测哪一版有效，检索前应先按状态和时间过滤。</p>
<p>RAG 适合知识密集且资料可索引的任务，例如制度问答、项目文档检索、代码说明和客服知识。需要精确计算、实时余额或写入业务状态时，应调用确定性工具。模型可以解释工具结果，数据真值仍由业务系统提供。</p>
<h2 id="agent-把单次问答扩展成有状态循环">Agent 把单次问答扩展成有状态循环</h2>
<p>ReAct 将推理与动作交替组织。模型根据当前观察选择动作，环境执行工具并返回结果，模型再判断是否继续。工程实现无需暴露完整内部推理文本，可以保留结构化计划摘要、工具调用、观察结果和停止原因。</p>
<div class="mermaid" id="id-2" data-mermaid-definition="Zmxvd2NoYXJ0IFRECiAgICBBW&#43;eUqOaIt&#43;ebruagh10gLS0&#43;IEJb6K&#43;75Y&#43;W5Lya6K&#43;d5LiO6ZW/5pyf6K6w5b&#43;GXQogICAgQiAtLT4gQ1vpgInmi6nkuIvkuIDmraXliqjkvZxdCiAgICBDIC0tPiBEW&#43;ajgOe0ouefpeivhl0KICAgIEMgLS0&#43;IEVb6LCD55So5Y&#43;X5o6n5bel5YW3XQogICAgRCAtLT4gRlvmoKHpqozlubborrDlvZXop4Llr59dCiAgICBFIC0tPiBGCiAgICBGIC0tPiBHe&#43;S7u&#43;WKoeWujOaIkOaIlumihOeul&#43;iAl&#43;WwvT99CiAgICBHIC0tPnzlkKZ8IEMKICAgIEcgLS0&#43;fOaYr3wgSFvnlJ/miJDlj6/lvJXnlKjnu5Pmnpxd">flowchart TD
    A[用户目标] --&gt; B[读取会话与长期记忆]
    B --&gt; C[选择下一步动作]
    C --&gt; D[检索知识]
    C --&gt; E[调用受控工具]
    D --&gt; F[校验并记录观察]
    E --&gt; F
    F --&gt; G{任务完成或预算耗尽?}
    G --&gt;|否| C
    G --&gt;|是| H[生成可引用结果]</div><p>循环必须由运行时控制。调用次数、总 token、总耗时和工具权限都有硬上限；同一动作连续失败时应停止或切换策略。模型输出“完成”也要经过程序检查，例如所需字段是否齐全、写操作是否返回成功、引用是否存在。</p>]]></description></item></channel></rss>