我们在使用大语言模型 (LLMs) 构建产品一年中的经验总结 (第一部分)

原文链接:https://www.oreilly.com/radar/what-we-learned-from-a-year-of-building-with-llms-part-i/

在构建大型语言模型(LLMs)的过程中,有一些重要但常被忽视的教训和方法论对于开发基于LLMs的产品至关重要。尽管LLMs在现实应用中变得“足够好”并广泛可用,但要创建真正有效的AI产品仍然具有挑战性。

文章的作者们来自不同的背景,包括独立顾问、研究人员、应用AI团队的领导者,以及教育者,他们总结了在使用LLMs构建实际应用中的经验和教训,旨在为社区提供指导。文章分为三个部分:战术、操作和战略,这是三部分中的第一部分,重点讨论了与LLMs合作的战术细节,包括提示设计、检索增强生成(RAG)、流程工程以及评估和监控的最佳实践和常见陷阱。

主要内容包括:

  • 提示设计:建议从提示设计开始开发新应用,并利用n-shot提示、思维链提示等技术优化模型表现。强调要有具体、明确的提示结构,避免复杂的“万能提示”。
  • 信息检索/RAG:通过提供上下文信息来引导LLM,RAG技术被认为在提供知识和改进输出方面非常有效。强调检索文档的质量对RAG输出的影响,并建议结合关键词搜索和基于嵌入的检索。
  • 工作流程优化:推荐将复杂任务拆分为多个简单任务,通过多步工作流程显著提高性能。强调优先采用确定性工作流程,并利用缓存技术减少生成延迟和成本。
  • 评估与监控:建议通过实际输入/输出样本创建断言式单元测试,并使用链式思维(CoT)等技术进行评估。强调LLM作为评判者的应用,但同时指出它并非万能解决方案。

提示设计

提示设计是开发LLM应用的基础。以下是一些具体的提示技术和策略:

  • n-shot提示和上下文学习:通过提供一些示例来让LLM理解任务并调整输出。建议示例数n≥5,可以根据需要增加。示例应该代表预期输入的分布,可以只提供期望输出而不是完整的输入-输出对。如果使用支持工具的LLM,示例中也应包含工具的应用。

  • 思维链(CoT)提示:鼓励LLM在返回最终答案前解释其思维过程。可以通过附加具体步骤来减少幻想。例如,在汇总会议记录时,可以先列出关键决策和后续事项,然后检查细节的一致性,最后进行总结。

  • 提供相关资源:通过检索增强生成(RAG)技术扩展模型的知识库,减少幻想,增加用户信任。应告诉模型优先使用这些资源,直接引用它们,并在资源不足时说明。

  • 结构化输入和输出:结构化的输入和输出有助于模型更好地理解上下文,并生成可靠的输出。不同LLM对结构化格式有不同偏好,例如Claude偏好XML,而GPT偏好Markdown和JSON。

  • 专注于单一功能的小提示:避免复杂的“万能提示”,将复杂任务分解为多个简单任务。每个提示应该专注于一个具体功能,并且易于理解。

  • 优化上下文令牌:精简上下文内容,去除冗余和自相矛盾的部分。结构化上下文有助于模型理解并简化信息提取。

信息检索/RAG

通过提供上下文信息来引导LLM,RAG技术在提供知识和改进输出方面非常有效。以下是一些具体的策略:

  • 文档检索质量:检索文档的相关性、信息密度和细节程度都会影响RAG的输出。使用排名指标如平均倒数排名(Mean Reciprocal Rank, MRR)和归一化折现累积增益(NDCG)来衡量检索质量。文档应简洁且信息密集。
  • 关键词搜索:关键词搜索仍然是有效的信息检索方式,特别是对于特定关键词、缩写或ID的查询。结合关键词和嵌入检索可以提高效果。
  • 优先使用RAG而非微调:RAG在引入新知识和提高特定任务性能方面通常优于微调。RAG更易于保持检索索引的更新,且在遇到有毒或偏见内容时可以轻松处理。
  • 长上下文模型不会取代RAG:尽管长上下文模型可以处理更多信息,但仍需通过RAG选择信息以防止模型被无关信息淹没。

工作流程优化

  • 提示设计只是开始,要充分发挥LLM的潜力,还需要优化工作流程:
    多步“流”可以显著提升性能:将复杂任务分解为多个简单任务,通过多步工作流程提高性能。例如AlphaCodium通过多步工作流程将GPT-4在CodeContests上的准确性从19%提高到44%。
  • 优先采用确定性工作流程:生成确定性计划并按结构化方式执行,可以提高系统的可靠性和可预测性。生成的计划可以作为少样本提示或微调数据使用。
  • 多样性输出策略:增加温度参数可以提高输出多样性,但要注意避免过高温度导致错误输出。可以通过调整提示中的元素、避免重复输出以及改变提示措辞来进一步增加多样性。
  • 缓存技术:缓存可以节省成本并消除生成延迟。对于开放式查询,可以借鉴搜索领域的技术增加缓存命中率。
  • 微调时机:当提示设计无法满足需求时,需要考虑微调模型。尽管微调效果显著,但成本较高,因此需权衡利弊。

评估与监控

评估LLMs应用至关重要,以下是一些具体的策略:

  • 创建基于断言的单元测试:使用生产中的输入/输出样本创建断言式单元测试,以确保模型在不同修改下的稳定性。
  • LLM-as-Judge:使用强大的LLM评估其他LLM的输出,尽管存在争议,但在成对比较中效果不错。使用链式思维(CoT)可以提高评估可靠性。
  • 实习生测试:通过让具有相关专业背景的学生完成同样任务来评估LLM的表现。根据学生的表现调整模型或任务难度。
  • 避免过度强调某些评估:过度关注某些评估指标可能会影响整体性能。例如,过度强调NIAH评估可能导致提取和总结任务的性能下降。
  • 简化标注任务:采用二元分类或成对比较的标注任务可以提高标注效率和一致性。

通过以上策略和方法,开发者可以更有效地构建和发布基于LLMs的应用,提高模型的性能和可靠性。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值