Yujun's Blog
我的助理又走神了:如何强制它聚焦关键信息?
我的LLM助理又“走神”了:如何“强制”它聚焦关键信息?
- 兄弟们,咱们聊了这么多RAG,从选型到架构,把“检索(Retrieval)”这个环节基本盘了个底朝天。我们费了九牛二虎之力,终于能从海量知识库里,精准地捞出最有用的信息了。
 - 但你有没有遇到过这样的情况:万事俱备,只欠“生成(Generation)”,结果大模型在最后这临门一脚,给你踢飞了。
 - 
- 你让它根据一段访谈记录,生成摘要,结果它洋洋洒洒写了一大堆,就是把最重要的人名给漏了。
 
 - 
- 你喂给它一份产品文档,问它某个功能的发布日期,它能给你解释清楚这个功能是干嘛的,但就是不提具体日期。
 
 - 
- 你在对话里反复强调,“重点是成本控制”,结果它生成的方案里,对成本问题轻描淡写,一笔带过。
 
 - 这种现象,我管它叫“模型走神”。它就像一个不太靠谱的助理,虽然能力很强,但你交代任务时,稍微不盯紧点,它就抓不住重点。这就导致我们辛辛苦苦检索回来的黄金语料,最终生成的答案却偏离主题、缺乏关键信息,甚至误导用户。
 - 今天,我们就把注意力从RAG的前半段(知识库检索)转移到后半段,聊聊怎么治一治大模型的“走神”问题。
 
病根在哪?扒开Transformer的“注意力”黑盒
为啥模型会“走神”?这得从它的底层工作原理——Transformer架构说起。
你可以把Transformer的注意力机制(Attention Mechanism),想象成模型在阅读一段文本时手里拿的一支“荧光笔”。它会根据任务目标,给输入的每个词(token)都画上不同的深浅。越重要的词,荧光笔画得越重,也就是“注意力权重”越高。
最后,模型就是根据这些“荧光笔”的轻重,把所有词的信息加权聚合起来,才决定最终要输出什么内容。
现在问题就来了。如果因为某些原因,模型在处理文本时,给“张三”这个关键人名,或者“2025年9月26日”这个关键日期分配的注意力权重偏低,那这些信息就很难在最终生成的输出里体现出来。它不是不知道,而是“没注意到”。
方案一:“大声喊”——简单有效的提示词(Prompt)
这是最直观,也是我们最先想到的办法。既然它容易忽略,那我们就在任务指令里“大声喊”,强行把它的注意力拉过来。
这就像你跟助理交代工作,说完一遍后,不放心地又补充一句:“记住,重点是XXX,一定要在报告里体现出来!”
具体到Prompt设计,就是明确要求模型在回答中使用某些关键词,或者以特定的结构组织内容。
prompt = """ 请用自然流畅的语言,深入探讨一下人工智能和大模型的未来发展趋势,并结合医疗、自动驾驶、智能客服等具体行业,分析它们的潜在应用和挑战。 请在你的回答中,尽可能自然地穿插以下词汇:大模型、人工智能、医疗、自动驾驶、智能客服。 """
这种方法简单、有效,而且对绝大多数模型都适用,是我们解决“走神”问题的第一道防线。
方案二:“请个秘书”——用NLP技术预处理
“大声喊”虽然管用,但总感觉有点“笨”。每次都得我们人工去想哪些是重点。有没有更自动化的方法?
当然有。我们可以在把任务交给大模型之前,先请一个“秘书”——也就是传统的NLP技术,比如命名实体识别(NER)。
整个流程是这样的:
- 拿到用户的原始输入和检索回来的知识库文本。
 - 先把这些文本丢给一个NER模型。这个模型会像一个尽职的秘书一样,快速把里面所有的人名、地名、日期、组织机构等关键实体都识别并提取出来。
 - 我们拿着这份“秘书”整理好的“关键实体清单”,再把它塞进Prompt里,然后一并交给大模型。
 
这个方案的自动化程度很高,能动态地从不同的输入内容里识别出关键信息,非常灵活。但缺点也显而易见,它在我们的推理链路里引入了外部模块,让整个系统变得更复杂,也可能会增加一点点延迟。
方案三:“脑部手术”——直接干预Logits层
这是最高级,也是最“硬核”的玩法。如果我们有权限接触到模型推理的更底层,就可以直接对它的“大脑”进行微操。
这个“微操”的对象,叫做Logits。
这是个啥玩意儿?你可以这么理解:大模型在生成每一个字之前,都会在它那庞大的词汇表(比如几十万个词)里,给每个词打一个“推荐分”。这个原始的、未经处理的“推荐分”列表,就是Logits。之后,模型会通过一个Softmax函数,把这些分数转换成最终的生成概率。
而我们的“手术”,就是在Softmax函数生效之前,直接去修改这个分数列表!
比如,我们想让模型在接下来的回答里,重点突出“成本控制”这个概念。那我们就可以在推理的每一步,都找到“成本”和“控制”这两个词在Logits列表里的分数,然后人为地给它们加上一个很高的“偏置分”。
这就相当于在选举里,直接给某个候选人“锁票”。这么一来,“成本控制”这两个词被选中的概率就大大提升了。
这种方法极其直接和有效,因为它绕过了Prompt的“语义理解”环节,直接在最终的概率生成层动手脚。它不需要复杂的提示词,也不需要重新训练模型,非常适合在推理阶段进行实时干预。
写在最后:如何选择你的“聚焦”策略?
好了,三种“治走神”的方案都摆在这了,我们来总结一下:
- 提示词:最简单、最通用的“喊话”策略,任何时候都应该作为首选方案来尝试。
 - NLP预处理:更智能、更自动化的“秘书”策略,适合输入内容复杂多变,需要动态抓重点的场景。
 - 干预Logits:最精准、最强大的“脑部手术”,适合那些对生成内容有极高控制需求的场景,前提是你得有权限动这个“手术”。
 
通过这些方法,我们就能把RAG的“最后一公里”走得更稳。记住,一个好的RAG系统,不仅要“搜得准”,更要“说得对”。引导模型的注意力,让它聚焦于我们提供的关键知识,这正是体现一个AI应用开发者功力的关键所在。