为了账号安全,请及时绑定邮箱和手机立即绑定

用于成功实施检索增强生成的Prompt工程模式

RAG一直是幕后的一大助力,赋能许多AI应用,使其从静态知识飞跃到动态实时信息。但要获得精确、相关且有价值的回应并不容易,既是一门科学又是艺术。下面将为你提供一份关于如何实施提示工程模式的指南,让RAG的任何实现更加有效和高效。

图片来源: https://imgflip.com/i/8mv2pm

为什么提示设计在RAG中真的很重要

现在,想象向AI助手发出请求,要求获取今天的股市趋势信息,但它却提供了十年前一本金融书籍中的信息。这就是指令不够明确、具体或结构化时会出现的情况。

RAG 从外部获取信息并生成相应的回应,但其表现很大程度上取决于提示的设定。结构良好且定义清晰的提示能够确保以下几点:

  • 高检索精度
  • 较少的虚构和误导信息
  • 更懂上下文的回答
你需要知道的先决条件

在跳入深水之前,最好先准备好:

  1. 对大型语言模型(LLM)要有高级理解。
  2. 了解RAG架构。
  3. 一些Python编程经验(我们将写一点代码)。
  4. 有一点幽默感——相信我,这真的很有帮助。
1. 直接检索

只查找,不猜测。

在需要准确事实的问题上,让模型依赖检索到的文档可以减少错误信息的出现。

例子

    prompt = "仅使用提供的文档来回答以下问题,不要添加任何外部知识。"

切换到全屏 退出全屏

为什么管用:

  • 确保答案基于检索到的数据
  • 减少猜测和错误回答

坑陷阱:

  • 如果限制太紧,AI会变得过于保守,经常回答“我不知道”。
2. 思维链(CoT)指引

《像侦探那样思考》。

在处理复杂的推理时,通过逻辑步骤引导AI进行推理能提高回复质量。

例子

    prompt = "将以下问题拆解成逻辑步骤,并一步步利用检索到的数据解决这个问题。"

切换到全屏模式 退出全屏

为什么它管用:

  • 增强推理能力和透明度
  • 使回答更加易于理解

陷阱:

  • 增加了响应时间以及 token 的使用
3. 上下文增强模式

“多给点上下文,少犯点错误。”

额外的上下文可以带来更准确的回答。

例子

    context = "你是一名网络安全专家,正在分析最近的数据泄露事件。"
    prompt = f"{context} 根据找到的文件,解释这次泄露的影响,并给出可能的解决方案。"

进入全屏,退出全屏

为什么它这么管用:

  • 根据特定行业的需要定制回复,减少AI输出内容的歧义。

注意:

过多的背景信息会让模型不堪重负

4. 指令微调模式

说话要直白

当指令明确且有条理时,大型语言模型会表现得更好。

例子:

    prompt = "用三点简要概括以下文档,每点不超过20字。"

全屏模式 全屏退出

为什么这有效:

  • 引导模型产生结构化输出
  • 避免过于啰嗦

常见陷阱:

  • 固定的格式可能限制细致的回复
5. 基于角色的提示

为目标群体定制回复。

如果你的RAG模型服务于不同类型的最终用户,比如新手和专家,那么个性化的响应将有助于提高参与度。

例子:

    用户类型 = "小白"
    prompt = f"请用简单的语言和现实生活中的例子解释区块链技术,就好像我在解释给{用户类型}听一样。"

切换到全屏 退出全屏

为什么管用:

  • 增强了可访问性
  • 增强了个性化定制

一个常见的错误:

  • 过度简化可能会忽略对专家来说很重要的细节
6. 错误处理

如果AI搞错了怎么办?

提示需要包含结果的反馈,以便AI能标记任何不确定因素。

例子:

    prompt = "如果你的回答中有相互矛盾的信息,请说明你的信心水平,并建议进一步研究的方向。"

全屏 恢复

为什么管用:

  • 更透明的回答
  • 减少信息误传

陷阱:

  • AI可能总是给出不太确定的答案,即使答案其实是正确的。
7. 多轮查询优化

不断迭代,直到找到最好的答案。

与一次性给出答案不同,这种方法通过多次提问来逐步提高准确性。

例子:

    prompt = "先生成一个初步答案,然后根据检索到的文档来改进和提高准确性。"

全屏模式,退出全屏

它为什么管用:

  • 帮助AI自动纠正错误
  • 提高事实的准确性

常见坑:

  • 需要更多处理时间
8. 带有少量示例的混合提示技术

展示,不要说。

少量样本学习通过示例来强化结果的一致性。

例子:

    prompt = "这里有两个格式良好的财务报告例子。总结下面的数据时,请按照这种模式来总结。"

全屏模式 退出全屏模式

为什么管用:

  • 提供参考结构,提高连贯性和质量。

坑陷:

  • 需要整理一些示例
为歌曲推荐实现RAG
    import torch
    from transformers import RagTokenizer, RagRetriever, RagSequenceForGeneration

    # 加载RAG模型、分词器和检索模块
    model_name = "facebook/rag-sequence-nq"
    tokenizer = RagTokenizer.from_pretrained(model_name)
    retriever = RagRetriever.from_pretrained(model_name)
    model = RagSequenceForGeneration.from_pretrained(model_name, retriever=retriever)

    # 定义用户输入:歌曲推荐的心情
    user_mood = "我感觉很开心和充满活力。推荐一些与我的心情相匹配的歌曲。"

    # 对查询进行分词
    input_ids = tokenizer(user_mood, return_tensors="pt").input_ids

    # 使用RAG生成回复
    with torch.no_grad():
     output_ids = model.generate(input_ids, max_length=100, num_return_sequences=1)

    # 解码并打印回复
    recommendation = tokenizer.batch_decode(output_ids, skip_special_tokens=True)
    print("🎵 歌曲推荐:" + recommendation[0])

全屏/退出全屏

额外考虑

你还需要考虑几件事情,比如如何处理长查询的问题,优化检索质量,以及评估并改进提示。

处理长问题

  • 将复杂查询拆分成子查询。
  • 在将输入提供给模型之前先进行总结。
  • 根据关键字的相关性排序检索结果。

优化检索效果

  • 利用嵌入技术进行更优的相似度搜索
  • 针对特定领域的任务来调整检索模型
  • 混合搜索:试验BM 25与嵌入的结合

评估和优化提示

  • 响应质量可以通过人工反馈来进行监控。
  • 通过A/B测试来测试提示的有效性
  • 需要根据各种指标对提示进行修改和迭代。
总结:如何掌握RAG中的Prompt工程技巧掌握

精通RAG不仅需要一个强大的LLM,还需要精心设计提示。正确的模式可以极大地帮助提高响应的准确性、与上下文的相关性和迅速。不论是金融、医疗、网络安全,还是其他领域,结构化提示设计都能确保您的AI提供有价值的信息和见解。

最后的小贴士:不断尝试和改进。最好的提示也会不断进化,就像最出色的AI应用那样。今天精心设计的提示可能需要在明天进行修改,因为随着您的应用场景不断扩展,AI的能力也会增强。保持灵活性,不断实验和优化,以获得最佳效果。

参考文献:

  1. Lewis, P., 等。 “用于知识密集型自然语言处理任务的检索增强生成。” NeurIPS, 2020。
  2. Brown, T., 等。 “语言模型是少样本学习模型。” NeurIPS, 2020。
  3. OpenAI。 “GPT-4 技术说明书。” 2023。
  4. Google AI。 “理解大语言模型中的提示工程。” 博客文章, 2023。
  5. Borgeaud, S., 等。 “通过检索数万亿个令牌来改进语言模型。” DeepMind, 2022。
  6. Radford, A., 等。 “从自然语言监督中学到的可转移视觉模型。” OpenAI, 2021。
点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

举报

0/150
提交
取消