求求你别学了:从 Prompt 到 RAG,从 RAG 到 DSPy

2024-06-21 13:04
文章标签 prompt rag 求求 别学 dspy

本文主要是介绍求求你别学了:从 Prompt 到 RAG,从 RAG 到 DSPy,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

如本瓜在此前的文章中提到过,Prompt 工程已经不中用了,没有人愿意废那么大的劲来学习如何结构化提问,大家想要的就是傻瓜式提问,但是大模型的回答还是精准的、合意的;

后来,大兴 RAG 技术,做专业化的本地知识库,但是这个本地库的成本只能说是更高,如果有专业的库直接来用还行,要不然自建库、清洗数据等等,费了九牛二虎之力,那还要大模型啥事?

所以有人才说2023年大模型百模大战是原子弹,2024年大模型真的就让人一度怀疑,这不就是个茶叶蛋?

看到最近新闻说:研发出著名的Stable Diffusion模型,估值近300亿美元的明星企业Stability AI,资金链竟然要断裂了?!Crazy…

其实,大家的诉求很简单,就是“怎么简单方便怎么来”,不要 Prompt 工程、不要 RAG 本地库,只要我问了,你就直接给到我想要的答案,不能出现车轱辘话!

所以,本篇要提的新技术—— DSPy , 它来了!

编程式提问

先问一句:你觉得截止目前,谁是大模型最大的受益者?

除了炒作的、卖课的,或许目前真正能从大模型技术中获益的,莫过于程序员群体了。很多程序员都不同程度的利用上了大模型来辅助编程,大模型在编程方面表现往往比其他专业领域都好的多得多。

这是为什么?

因为 LLMs 对 prompts 的方式很敏感,它不喜欢提示词,它就喜欢编程,或者说是它更擅长编程!

DSPy,就是让提示词 Prompt 变成编程语言的一个框架。

一句话定性:它是一个旨在通过优先编程而不是 prompt 来解决基于语言模型(LM)的应用程序中的脆弱性问题的框架。

DSPy 展开是:“D declarative S self - improved Language P programs (in Python)”,读“迪斯屁儿”,它强调编程而不是提示,使构建基于 LM 的管道远离操作提示而更接近编程。

DSPy VS LangChain

一波未平、一波又起,LangChain 还没学明白,这个“屁儿”怎么又来了?区别在哪?

说白了 LangChain 的 RAG 技术是让提示词更详细、丰富,形成一个标准的提问模板,而 DSPy 则是原理提示模板,从编程的角度去跟大模型交流。

DSPy 引入编译器,更改基于 LLM 的应用程序(如 LLM 或数据)时,消除额外的 prompt 工程 或 fine-tuning 微调;发人员可以简单地重新编译程序来优化 pipelines(模型的组件构成流程) 以适应新添加的更改。

具体它是怎么做的呢?

签名

在 DSPy 程序中,每次调用语言模型时,都必须采用自然语言签名(signature),而不是传统的手写提示。

签名是一个简短的函数,用来明确说明转换的目标,而不是指导 LM 的提示方式,和我们以往命令大模型 “利用XXX回答XXX问题” 不一样。

签名包含 LLM 要解决的子任务的最小描述,输入字段的描述、输出字段的描述;结构一般类似这样:

代码语言:javascript

**复制

class GenerateAnswer(dspy.Signature):"""Answer questions with short factoid answers."""context = dspy.InputField(desc="may contain relevant facts")question = dspy.InputField()answer = dspy.OutputField(desc="often between 1 and 5 words")

与常规提示语相比,签名可以通过引导示例编译成自完善和自适应管道的 prompt 或 fine-tune。

模块

有过提示经验的同学知道我们往往会引导大模型的回答,比如说:你要用 XXX 风格回答 XXX,你是 XXX 角色有 XXX 经验,不要回答 XXX …

在 DSPy 中,则通过模板化和参数化来抽象这些提示技术;通过应用提示、微调、增强和推理技术,使 DSPy 签名适应特定任务。

代码语言:javascript

**复制

 # Option 1 : Pass minimal signature to ChainOfThought module
generate_answer = dspy.ChainOfThought("context, question -> answer")# Option 2 : Or pass full notation signature to ChainOfThought module
generate_answer = dspy.ChainOfThought(GenerateAnswer)# Call the module on a particular input.
pred = generate_answer(context = "Which meant learning Lisp, since in those days Lisp was regarded as the language of AI.",question = "What programming language did the author learn in college?")

从以上代码看,DSPy 签名传递给ChainOfThought模块,然后使用输入字段 contextquestion 的值进行调用。

DSPy 内置如下几个模块,分别有不同的作用:

  • dspy.Predict :基本预测变量
  • dspy.ChainOfThought:教LM在对Signatures响应之前逐步思考
  • dspy.ProgramOfThought:教LM 输出代码
  • dspy.ReAct:能够实现某个Signatures功能的代理(利用工具)
  • dspy.MultiChainComparison:可以比较多个 ChainOfThought 输出以产生最终预测

模块的优势在于它灵活的集成在管道之中,是参数化的,包括提示细节等,模块根据签名处理输入,返回输出。

提词器

DSPy 还有另一个武器,就是 Teleprompters 提词器。提词器使用特定度量,与编译器协同工作,学习和引导有效提示,从而优化 DSPy 程序的各个模块。

DSPy 内置5个提词器:

  • dspy.LabeledFewShot
  • dspy.BootstrapFewShot
  • dspy.BootstrapFewShotWithRandomSearch
  • dspy.BootstrapFinetune
  • dspy.Ensemble

不同的提词器在优化成本和质量等方面提供了不同的平衡。

小结

以上对 DSPy 有了一个基本的认识:它把传统的提示词工程通过一些语法糖进行了优雅的封装。

它可以解决基于语言模型的应用程序脆弱性问题的框架;优先考虑编程而不是提示,允许重新编译整个流水线以优化任务。

实现原理是前文提到的:引入了签名、模块和提词器等概念来抽象提示和微调;编译器可以自动优化程序,根据任务需求生成高质量的提示。

如果感兴趣的同学可以点点关注,后续继续了解 DSPy 的 RAG 管道示例实践。

如何系统的去学习大模型LLM ?

作为一名热心肠的互联网老兵,我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。

但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的 AI大模型资料 包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来

所有资料 ⚡️ ,朋友们如果有需要全套 《LLM大模型入门+进阶学习资源包》,扫码获取~

👉CSDN大礼包🎁:全网最全《LLM大模型入门+进阶学习资源包》免费分享(安全链接,放心点击)👈

一、全套AGI大模型学习路线

AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!

img

二、640套AI大模型报告合集

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。

img

三、AI大模型经典PDF籍

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。

img

在这里插入图片描述

四、AI大模型商业化落地方案

img

阶段1:AI大模型时代的基础理解

  • 目标:了解AI大模型的基本概念、发展历程和核心原理。
  • 内容
    • L1.1 人工智能简述与大模型起源
    • L1.2 大模型与通用人工智能
    • L1.3 GPT模型的发展历程
    • L1.4 模型工程
      - L1.4.1 知识大模型
      - L1.4.2 生产大模型
      - L1.4.3 模型工程方法论
      - L1.4.4 模型工程实践
    • L1.5 GPT应用案例

阶段2:AI大模型API应用开发工程

  • 目标:掌握AI大模型API的使用和开发,以及相关的编程技能。
  • 内容
    • L2.1 API接口
      - L2.1.1 OpenAI API接口
      - L2.1.2 Python接口接入
      - L2.1.3 BOT工具类框架
      - L2.1.4 代码示例
    • L2.2 Prompt框架
      - L2.2.1 什么是Prompt
      - L2.2.2 Prompt框架应用现状
      - L2.2.3 基于GPTAS的Prompt框架
      - L2.2.4 Prompt框架与Thought
      - L2.2.5 Prompt框架与提示词
    • L2.3 流水线工程
      - L2.3.1 流水线工程的概念
      - L2.3.2 流水线工程的优点
      - L2.3.3 流水线工程的应用
    • L2.4 总结与展望

阶段3:AI大模型应用架构实践

  • 目标:深入理解AI大模型的应用架构,并能够进行私有化部署。
  • 内容
    • L3.1 Agent模型框架
      - L3.1.1 Agent模型框架的设计理念
      - L3.1.2 Agent模型框架的核心组件
      - L3.1.3 Agent模型框架的实现细节
    • L3.2 MetaGPT
      - L3.2.1 MetaGPT的基本概念
      - L3.2.2 MetaGPT的工作原理
      - L3.2.3 MetaGPT的应用场景
    • L3.3 ChatGLM
      - L3.3.1 ChatGLM的特点
      - L3.3.2 ChatGLM的开发环境
      - L3.3.3 ChatGLM的使用示例
    • L3.4 LLAMA
      - L3.4.1 LLAMA的特点
      - L3.4.2 LLAMA的开发环境
      - L3.4.3 LLAMA的使用示例
    • L3.5 其他大模型介绍

阶段4:AI大模型私有化部署

  • 目标:掌握多种AI大模型的私有化部署,包括多模态和特定领域模型。
  • 内容
    • L4.1 模型私有化部署概述
    • L4.2 模型私有化部署的关键技术
    • L4.3 模型私有化部署的实施步骤
    • L4.4 模型私有化部署的应用场景

学习计划:

  • 阶段1:1-2个月,建立AI大模型的基础知识体系。
  • 阶段2:2-3个月,专注于API应用开发能力的提升。
  • 阶段3:3-4个月,深入实践AI大模型的应用架构和私有化部署。
  • 阶段4:4-5个月,专注于高级模型的应用和部署。
这份完整版的所有 ⚡️ 大模型 LLM 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

全套 《LLM大模型入门+进阶学习资源包↓↓↓ 获取~

👉CSDN大礼包🎁:全网最全《LLM大模型入门+进阶学习资源包》免费分享(安全链接,放心点击)👈

这篇关于求求你别学了:从 Prompt 到 RAG,从 RAG 到 DSPy的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1081296

相关文章

Prompt - 将图片的表格转换成Markdown

Prompt - 将图片的表格转换成Markdown 0. 引言1. 提示词2. 原始版本 0. 引言 最近尝试将图片中的表格转换成Markdown格式,需要不断条件和优化提示词。记录一下调整好的提示词,以后在继续优化迭代。 1. 提示词 英文版本: You are an AI assistant tasked with extracting the content of

我的第2个AI项目-RAG with Gemma hosted on HuggingFace and Weaviate in DSPy

目录 项目简介概述时间kaggle地址主要工作和收获技术栈数据集模型表现 未来项目说明思路和原则为什么不把现在的项目做深一点?博客风格转变 bug修复版本兼容问题 项目简介 概述 本项目简要介绍了如何使用 DSPy 构建一个简单的 RAG 管道,且利用了托管在 Hugging Face 上的 Gemma LLM模型 和 Weaviate 向量数据库。 时间 2024.09

jmeter压力测试,通过LLM利用RAG实现知识库问答,NEO4J部署,GraphRAG以知识图谱在查询时增强提示实现更准确的知识库问答(9/7)

前言         这周也是杂七杂八的一天(高情商:我是一块砖,哪里需要往哪里搬),首先是接触了jemter这个压力测试工具,然后帮公司的AIGC项目编写使用手册和问答手册的第一版,并通过这个平台的智能体实现知识库问答的功能展示,以及部分个人扩展和思考(NEO4J创建知识图谱的GraphRAG)。 Jmeter         Jmeter是一个压力测试工具,一开始导师叫我熟悉的时候我还说

提示工程颠覆:DSPy 引领全新范式革命

几个月前,我清楚地记得,Prompt Engineering 还是热门话题。就业市场上充斥着提示工程师的岗位,仿佛这是未来的必备技能。 然而,现在情况已经大不相同了。提示工程并不是一门艺术或科学,更像是“聪明的汉斯”现象——人类为系统提供了必要的背景,以便系统能更好地作出回应。甚至还有人撰写了书籍或博客,如《前50个提示:充分利用 GPT》等等。 但事实证明,没有一种提示或策略能够解决所有类型

The Prompt Report 2

The Prompt Report 提示工程调查报告《The Prompt Report: A Systematic Survey of Prompting Techniques》 主要内容 Core Prompting Techniques Text based Techniques:PRISMA流程,58中基于文本的提示技术,提示语术语分类表;MLT:Multilingual T

Google Research 推出高效的Prompt Tuning方法

人工智能咨询培训老师叶梓 转载标明出处 一般模型微调方法需要对预训练模型的所有参数进行调整,这在大规模模型中既耗时又耗资源。Google Research的研究团队提出了一种名为“Prompt Tuning”的方法,旨在通过学习“软提示”来调整冻结的语言模型,使其能够更好地完成特定的下游任务。这种方法不仅简单有效,而且在模型规模增大时,其性能逐渐接近全模型微调(Model Tuning)的效果。

深入RAG优化:BGE词嵌入全解析与Landmark Embedding新突破

前面已经写过一篇关于Embedding选型的文章,《如何高效选择RAG的中文Embedding模型?揭秘最佳实践与关键标准!》,主要介绍通过开源网站的下载量和测评效果选择Embedding模型。 一、Embedding选型建议与结果 选型建议: 1、大部分模型的序列长度是 512 tokens。8192 可尝试 tao-8k,1024 可尝试 stella。 2、在专业数据领域上,嵌入

langchain 《斗破苍穹》智谱 RAG 问题搜索

目录 代码 项目介绍 模型对比实验 分块方法对比 检索方法对比 结果 10条问题 15条问题 局限性 代码 https://github.com/5zjk5/prompt-engineering/tree/master 项目介绍 《斗破苍穹》小说 RAG 问答,爬虫爬取整部小说章节,并分别保存到不同的数据源中。 txt,pdf,markdown,word。

提升LLM结果:何时使用知识图谱RAG

通过知识图谱增强 RAG 可以帮助检索,使系统能够更深入地挖掘数据集以提供详细的响应。 有时,检索增强生成 (RAG) 系统无法深入文档集以找到所需的答案。我们可能会得到泛泛的或肤浅的回复,或者我们可能会得到回复,其中 RAG 系统检索到的细节很少,然后用不相关或不正确的信息填补空白——这被称为“幻觉”。 深度知识库和文档集可能包含我们用 RAG 提示回答问题所需的所有信息,但 RAG 系统

使用Cloudflare构建RAG应用;端到端语音开源大模型;AI幻灯片生成器,等六个开源项目

✨ 1: Cloudflare RAG 如何使用Cloudflare构建一个完整的RAG应用,结合多种搜索技术和AI服务。 Cloudflare RAG(Retrieval Augmented Generation)是一个全栈示例,展示如何使用 Cloudflare 构建 RAG 应用程序。该项目结合了 Cloudflare Workers、Pages、D1、KV、R2、AI Gate