收益:
- 了解基于知识的生成(RAG)的逻辑以及为什么它可以减少幻觉
- 能够让模型仅根据提供的源文档进行引用回应
- 能够通过安全传输来管理源中不存在的问题,而无需编造问题
语言模型“知道”很多东西,但它不知道您公司今天的退货政策、当前的价目表或昨天更改的运输协议。更糟糕的是,当他不知道的时候,他常常会编造出来,并用一种极其自信的语气来写。这是客户服务的一个致命缺陷:模型说“退款在 30 天内发出”,而你的政策可能是 14 天。弥补这一差距的方法称为 RAG:Retrieval-Augmented Generation,即“检索增强生产”。
这个想法很简单:模型不是根据记忆回答问题,而是根据当时放置在其前面的正确源文档来回答问题。首先,与问题相关的正确文档是“检索”,然后模型仅根据该文档“生成”答案。在本单元中,您将了解 RAG 的逻辑,并学习如何控制模型,使其仅遵循您提供的经过验证的源。
注:本单元教授RAG的工作逻辑和提示方面。企业规模的自动文档检索系统(矢量数据库等)需要技术安装;这里的纪律是该系统正确响应的基础。
为什么 RAG 可以减少幻觉?
幻觉是指模型产生不真实的信息,就好像它是真实的一样。该模型被编程为在看到差距时产生看似“可能”的响应;不知道是真是假。 RAG 填补了这一空白:您为模型提供实际的相关文本以及问题,并说“仅从这里回答”。这样模型就不再“需要”拟合。
共有三个组成部分:
- 知识库:可靠的文本,例如常见问题解答、政策文件、产品手册、价目表。
- 检索:找到包含问题答案的文档并将其提供给模型。
- 限量版:型号仅根据提供的零件提供报价。
一步一步:对来源的忠实回应
- 准备好源码。以清晰且最新的格式查找响应所依据的文本(政策、常见问题解答)。
- 将源代码嵌入提示中。将文本放入 <source> 等标记中。
- 写下忠诚规则。 “只使用来自来源的信息;不要偏离来源。”
- 要求引用。让他/她指出答案是基于哪个部分。
- 识别非资源行为。如果答案不在来源中,请让他说“我没有此信息”并将其传递。
- 核实。通过将其与所基于的源句子进行比较来确认答案。
可复制的提示
基于底层来源的响应提示:
角色:您是客户支持助理。仅根据下面 <source> 块中的信息回答问题。不要添加任何不属于来源、猜测或根据您的常识得出的答案的信息。以“[来源:...]”格式在答案末尾添加您所依赖的部分。 If the answer is not in the source, write the following: "I do not have definitive information on this subject, I am transferring you to an official who can give the correct answer."<source>{{ policy_or_faq_text }}</source>Question: {{ customer_question }}
如果是多源,则提示显示其基于哪个文档:
有多种资源,编号如下。回答问题时,请说明您使用的来源编号,例如[来源 2]。 If more than one source contradicts you, say so clearly and state that you should ask which one is more up-to-date.<sources>1) {{ source_1 }}2) {{ source_2 }}3) {{ source_3 }}</sources>Question: {{ customer_question }}
提示安全管理非源问题:
If the answer to the question is PARTIALLY found in the source: answer only the part covered by the source, and say "this detail is not in the source" for the remaining part.切勿通过猜测来填补缺失的部分。
提示将响应翻译成客户端语言,但保持源代码的真实性:
Translate the official/technical expression in the source into plain language that the customer can understand, but DO NOT change the meaning and numerical values (day, amount, rate).例如,将“14个日历日”四舍五入为“大约两周”;保持全部价值。
弱提示/强提示
弱提示
强大提示
“告诉我们我们的退货政策”
嵌入源代码+“仅在此处回复”+请求报价
根据模型记忆回答(可能是错误的)
根据您当前的文档回答
如果来源中没有,他会弥补
他说“我没有这个信息”并将其传递出去。
可以对数字进行四舍五入和扭曲
准确维护日期/金额/费率
不同之处在于,强提示给模型一个锚(源文本)和一个禁令(脱离源)。模型不再凭记忆说话,而是从眼前的现实说话。
三个迷你箱
案例 1——旧的政策陷阱。一家商店的机器人在没有信用的情况下运行时说:“30 天内接受退货”;不过,该公司将期限缩短至 14 天。 When the updated policy text is added to the source in the RAG installation, the bot now responds "14 calendar days [Source: Return Policy, article 2]".因虚假承诺而产生的退款纠纷已被重置。
案例2——抓住矛盾。有顾客询问运费。新旧价目表均作为来源输入系统。 Thanks to the multi-source prompt, the model said, "Two sources give different prices (49 TL and 59 TL); I need to confirm the current one" and conveyed the issue to the human.他没有告诉客户错误的金额,而是诚实地传达了不确定性。
案例 3——部分响应纪律。 “你们把产品运到国外吗?关税由谁支付?”在提问中,消息人士只说货物已发出,并没有提及谁缴税。 The model said, "Yes, shipping is done abroad [Source: Cargo FAQ]. However, it is not stated in this document who pays the customs duty; I am transferring you to the official to clarify this."它产生了诚实而自信的输出,而不是半真半假的答案。
提示:保留知识库的最新且单一的事实来源版本。在三个独立的文档中以不同的方式编写相同的信息(例如返回期限)是RAG最大的敌人;模型根据所观察的对象的不同做出不同的反应。首先对文档进行重复数据删除,然后将其自动化。
验证:不要因为来源存在就放松
RAG 极大地减少了幻觉,但并没有重置它。该模型有时可能会误解源代码,混淆两个句子,或者得出源代码中没有的“结论”。这就是为什么引用要求至关重要:打开答案声称所依据的部分,并检查它是否确实如此。这种控制是不可协商的,特别是在包含数字(天、金额、比率)和条件(例外、条件)的响应中。
注意:如果来源本身错误或过时,RAG 会忠实地重复该错误。说“模型从源头上说”并不意味着“模型说的是正确的”;您对来源的时效性和准确性负责。
保持知识库做好响应准备
RAG 的质量很大程度上取决于源文本的编写方式。该模型返回的响应比结构良好、有标题的单主题文本要准确得多。实用建议:用简短的、有标题的部分来写你的政策,而不是长的、嵌套的段落;让每个部分回答一个问题(“退货期限是多少天?”、“哪些产品不能退货?”)。以问答形式保留常见问题 (FAQ) 可以让模型更轻松地找到正确的部分。在文本中的一处清楚地说明日期、金额和比率等值;在不同的部分以不同的方式写相同的数字会使模型变得混乱。
另一个重要的习惯是保持知识库的活力。政策、价格和促销活动各不相同;如果源没有更新,模型将继续安全地重复旧的事实。 With each policy change, update the source and re-ask the model a few test questions about the changed topic to confirm that it gives the correct answer.这种小型但定期的维护可以防止 RAG 系统随着时间的推移“悄然出错”。
常见错误
- 说“解释我们的政策”,而不隐藏来源并依赖模型的记忆。
- 未定义“仅来自源的回复”边界和非源行为。
- 不请求报价/来源参考,并使答案无法验证。
- 在知识库的多个文档中保留相同信息的冲突版本。
- 允许模型舍入/解释数值。
- 忘记更新源,导致模型忠实地重复旧信息。
综上所述
- RAG 意味着模型从当前源文档而不是内存中生成答案。
- 减少幻觉最实用的方法:埋掉来源,说“只在这里回复”,要求引用。
- 如果答案不在源中,则不应拟合模型;他应该说“我没有”并把它交给我。
- 让模型意识到冲突的来源;您准确地保留了数值。
- RAG 的准确性取决于来源的及时性;始终确认报价。
应用任务
从您自己的企业获取实际的保单文本(退货、运输或会员资格),并将其作为源嵌入到上面的基本 RAG 提示中。然后问三个问题:(1)来源中答案很明确的问题,(2)来源中根本没有答案的问题,(3)来源中答案仅不完整的问题。验证模型是否正确回答,说“我没有”,并诚实地分别标记部分答案和缺失的答案。通过加强提示中的忠诚度和非资源规则来纠正异常行为。
清单
- [ ] 我在提示中嵌入了响应所基于的当前源。
- [ ] 我添加了“仅来自来源的回复,请勿超越”规则。
- [ ] 我已经提出了来源参考/引用要求。
- [ ] 如果答案在源中不可用,我定义了委托行为。
- [ ] 我要求准确保留数值。
- [ ] 我从它所依据的源句子中确认了答案。