目前工程实践上,大家把优化的重点基本都放在了retrieve环节里,这里面涉及三个重要的问题:

目前工程实践上,大家把优化的重点基本都放在了retrieve环节里,这里面涉及三个重要的问题: 1⃣how and what do I retrieve:从传统的相似性检索、文本检索,到目前最常用的依托于embedding的语义检索,大家在实践中仍在不断迭代。Kiela后面也提到有研究希望把整个retriever过程做成一个模型,他也在课程中构想未来应该把retriever的训练也纳入到LLM的训练架构中。 文本的embedding可简化理解为文本的向量化表达,并且可根据不同文本的向量化表达,判断出文本之间语义的远近亲疏关系。 目前的文本emebedding也都是通过模型来实现的,这类模型也在不断迭代。OpenAI在今年1月份推出了text-embedding-3(small和large两版),相比其2022年12月推出的ada-002模型,在性能上获得了显著提升。 用于多语言检索的常用基准(MIRACL)平均分数已从 31.4%(ada-002)增加到 44.0%(3-small)和54.9%(3-large)。 附图之一是OpenAI对其text emebedding模型作用机制的示意。 2⃣When to retrieve: 一般就两种思路。一种是在获得检索范围后即retrieve,另一种是让模型判断何时retrieve。 3⃣How to encode: 如何编码也直接影响了如何检索的过程。 其他问题: 1⃣how to pre-process: 实际上强调就是input要包含system prompt,可设定角色、技能、任务、工作流、限制条件等。 2⃣how to prompt: 涉及提示词工程的方法论。 3⃣how to pass context: 可以把context作为prompt的一部分以文本形式输入,也可通过代码的方式代入。 4⃣how to post-process: 比如格式化输出的处理,如固定输出json格式,或固定在末尾输出reference列表等。 5⃣how to verify: 指的是如何验证output的效果或质量,比如验证output与知识库的相关性、准确性等。 最后,还有关于RAG整体架构的审视框架: 1⃣How to optimize: 各环节哪些地方可以优化。架构中已经列出的问题都是思考的重点。 2⃣How to learn: 这里的learn应该指的是机器学习的learn,探讨各环节从software 1.0的静态架构向机器学习和software 2.0的演进。 3⃣how to scale: 如何应对规模化的问题。 比如关于知识库如何chunk、何时编码,在知识库过大时就不适合提前预处理好chunk和编码。或者大量用户同时prompt该如何应对。 前段时间判断过2024年会是RAG应用爆发的一年 links: Stanford CS25 V4 2024春季课程(面向公众开放,有人想一起学习搭子么?) Stanford CS25 V3: Retrieval Augmented Language Models RAG论文原文 OpenAI text-embedding-3 models OpenAI text-embedding-ada-002 model Software 2.0 by Andrej Karpathy Kiela在讲这节课几个月后在其创立的Contextual AI正式推出RAG 2.0

相关推荐

封面图片

斯坦福这节课讲清楚了LLM做RAG所有最重要的问题。

斯坦福这节课讲清楚了LLM做RAG所有最重要的问题。 这节课就是传说中的Stanford CS25中的一节讲座。授课人就是RAG论文的作者之一Douwe Kiela,课程中他分享了一个检索增强语言模型的架构图。 这张图重要到让我觉得,做RAG只要记住这一张图就够了。所有相关概念和工程实践中的权衡,全都涵盖在这张图的架构和问题中了。 这个架构主要包括input、prompt、通过retriever检索增强生成的context,然后把这三部分一起输入给generator即模型,最终输出output作为结果。 关于这几个核心概念,值得注意的是: 1⃣input和prompt的区别和联系在于,input可理解为既包含system prompt,又包含用户输入的检索范围的指向,而prompt则强调用户输入的指令。 以公司知识库RAG举例,比如用户输入chatbot的内容为"检索公司2023年的财务数据并生成总结报告",其中"公司2023年的财务数据"是对公司知识库检索范围的指向,应理解为input的一部分,而"检索并生成总结报告"则是指令,应理解为prompt。 2⃣retriever的作用机制,我理解类似于在图书馆借书的过程,提供书名(query)-系统查找图书编号(query编码)-对应书架书籍编号(docs编码)-找到并借出图书(context)。 接着上文公司知识库的例子,从input获取query(如"2023年资产负债表, 2023年利润表, 2023年现金流量表"),对应的query编码("2023年资产负债表, 2023年利润表, 2023年现金流量表"的向量化表达)在docs编码(公司知识库所有文本的向量化表达)中检索匹配,提取匹配的部分作为context(涉及公司2023年财务数据的文本)。 其中query和input的关系,我想到两种可能性,一种是直接把input作为query,另一种是模型基于input生成的query,架构图简化表达了。 3⃣retriever和context之间可加一步reranker架构,对检索结果按特定规则进行重新排序。reranking的机制既可通过模型判断,也可在模型基础上预设特定规则。 比如根据员工职级限制其可获取的企业知识库信息范围。

封面图片

AI套壳应用如何把壳做厚?

AI套壳应用如何把壳做厚? 1.一阶:直接引用Open ai接口,ChatGPT回答什么,套壳产品回答什么。卷UI、形态、成本。 2.二阶:构建Prompt。大模型可以类比为研发,Prompt可以类比为需求文档,需求文档越清晰,研发实现得越精准。套壳产品可以积累自己的优质Prompt,卷Prompt质量高,卷Prompt分发。 3.三阶:Embedding特定数据集。把特定数据集进行向量化,在部分场景构建自己的向量数据库,以达到可以回答ChatGPT回答不出来的问题。比如垂直领域、私人数据等。Embedding可以将段落文本编码成固定维度的向量,从而便于进行语义相似度的比较,相较于Prompt可以进行更精准的检索从而获得更专业的回答。 4.四阶:微调Fine-Tuning。使用优质的问答数据进行二次训练,让模型更匹配对特定任务的理解。相较于Embedding和Prompt两者需要消耗大量的Token,微调是训练大模型本身,消耗的token更少,响应速度也更快。 一个AI应用产品如果停留在做一阶和二阶,注定是个门槛极低的产品,没有任何壁垒。 而什么场景,何时以及如何使用三阶和四阶的能力,是个关键性的问题。

封面图片

OpenAI通过新更新治愈了GPT-4的"变懒"问题

OpenAI通过新更新治愈了GPT-4的"变懒"问题 最近,一些 ChatGPT 用户抱怨聊天机器人经常拒绝完成提示任务,并将原因归咎于 GPT-4 缺乏更新。不过,OpenAI 这次更新的是GPT-4 Turbo,它是更广泛使用的 GPT-4 的一个版本,是根据 2023 年 4 月的信息训练的,目前只有预览版。使用 GPT-4 的用户可能仍然会遇到同样的问题,因为 GPT-4 是根据 2021 年 9 月之前的数据进行学习的。OpenAI 在帖子中表示,在通过其 API 使用 GPT-4 的用户中,有超过 70% 的人已经转用 GPT-4 Turbo,因为它的知识库更新更快。该公司表示,GPT-4 Turbo 将在未来几个月内进行更多更新,包括全面推出带视觉功能的 GPT-4 Turbo。这将使用户能够进行更多的多模态提示,如文本到图像的生成。OpenAI 还推出了名为嵌入(embeddings)的小型人工智能模型。OpenAI 将 Embeddings 定义为"代表自然语言或代码等内容中概念的数字序列"。这可以帮助使用检索增强生成(一种从数据库中获取信息而不是生成答案的人工智能)的应用程序找出所访问的不同内容之间的关系。这些新型号(text-embedding-3-small 和功能更强大的 text-embedding-3-large)现已推出。 ... PC版: 手机版:

封面图片

在链接前面加上“talk2”,可直接针对论文内容进行问答(需要自备OpenAI key)|

在链接前面加上“talk2”,可直接针对论文内容进行问答(需要自备OpenAI key)| Talk2Arxiv 是专为学术论文 PDF 构建的开源 RAG(检索增强生成)系统,由talk2arxiv 服务器提供支持 特征 PDF 解析:利用 GROBID 从 PDF 中高效提取文本。 分块算法:用于最佳文本分块的定制算法。按逻辑部分(简介、摘要、作者等)进行分块,并且还利用递归细分分块(块为 512 个字符,然后是 256 个字符,然后是 128 个字符......) 文本嵌入:使用 Cohere 的 EmbedV3 模型进行准确的文本嵌入。 矢量数据库集成:使用 Pinecone 来存储和查询嵌入。这也可以缓存研究论文,因此论文只需要嵌入一次。 上下文相关性:采用重新排名过程来根据用户输入选择最相关的内容。

封面图片

回顾我的 prompt 能力从小白到熟练的一些重要节点:

回顾我的 prompt 能力从小白到熟练的一些重要节点: 防杠叠甲: 1. 仅代表我自己的认知,没啥权威性。 2. 认为提示词那么简单至于搞那么复杂么的朋友,你对 3. 本文是语音转写的,比较随意。 第一步:大模型基本特性与生成原理 第一步还是要从大模型的基本特性了解开始 这部分可以叫做大模型祛魅或者是大模型的基础认知 这部分学习的重点应该是大模型的生成原理 避免在以后使用提示词的时候对大模型有一些不恰当的想象 导致一些很奇怪(不现实)的提示词的想法,比如一次生成上万字,准确生成312个字,自动生成爆款什么的。 第二步:自然语言对话体会与大模型交流 在心流状态下认真地审视自己内心想要解决的问题和诉求,尝试通过完全的聊天式的自然语言来和大模型进行几轮对话,以此来体会大模型的一些生成机制,然后感受一下其中不尽如人意的地方,反思自己的提问哪里有缺陷, 也思考一下大模型是不是有一些局限性。 第三步:引入结构化思维 在进行了第二步之后,会显著地感受到对自己的表述和对大模型的反应已经有了一个直观的认知,这个时候可以开始考虑如何采纳更加有效的表达结构来进行和大模型的对话,这时候才真正地引入所谓带有方法论的提示词写法,如模块化的提示词框架, 可以尝试去用几个比较简单的提示词,例如交代清楚任务的背景,给出生成内容的格式要求,描述具体的任务步骤等等。 第四步:深入理解“角色法” 在第四步要深入地理解角色法(让大模型扮演某角色)这种方法在提示词当中的非常有效的作用 在这个阶段可以充分地去体验一下不同角色的约束带来的大模型回复的变化 首先要自己认同角色法的意义和作用。 在角色法的基础上加上结构化表达,所谓结构化提示词事实上就是基于角色法的一种结构化表述方法。 同时,在结构化提示词的 workflow 部分融入了思维链的思路,将复杂的任务拆分成清晰的、环环相扣的、分步实施的清晰的任务指令。 结合了角色法、结构化表达和思维链提示的三种方法论与一体的结构化提示词,在一些复杂任务当中或在一些复杂的角色塑造当中起到了非常显著的作用,但这只是提示词创作的方法之一。 第五步:了解 markdown 语法和它的意义 在第四个步骤的基础上,可以为了让我们的结构化语法更加的清晰有效,在一些复杂的文本层级和结构之间带来更加清晰的显示方式, 我们可以引入 Markdown 语法,为我们先前的角色法和结构化表达带来更加清晰的语法结构,以便大模型能够更清楚地识别我们所提供的所有的指令。 提示词中使用 Markdown 语法的核心是符合 OpenAI 的官方六个最佳实践里面的使用清晰的表达结构和分隔符、符号等方式使得我们的大段文本的结构变得更加清晰。 这样做的目的只有一个:就是让大模型不至于混淆在我们复杂的文本指令过程中的一些层级问题,或者因为分隔不当而导致一些有不同含义的文本被混淆在一起导致大模型的误解。 在这一点上,很多同学有着诸多的困惑或误解,事实上,Markdown 语法并不局限于我们广为流传的结构化语法当中的那些固定格式和单词, 只要是基于清晰表述的框架层级下采用 Markdown 语法, 你完全可以自定义你的每一级的标题的内容和文本的内容, 以及灵活地使用 Markdown 当中的其他的一些写法, 例如有序列表,无序列表,缩近符,分隔符,在提示词当中嵌入一部分片段式的代码等等,都是可以的。 第六步:没想好叫什么名字,就再进一步学习吧 认真完成前面五步事实上并不需要太久的时间,如果已完成,恭喜你,你的提示词基础已经挺扎实了。 接下来是两个层面的进阶学习: 1. 实践 大量的实践, 对上述方法的大量实践,在极多的不同场景下的反复编写提示词,观察大模型的反馈结果,进行测试和迭代,然后去优化自己的表述结构, 以此更加深入地理解大模型的一些能力,一些局限,以及会更加深入地理解自己表达上面的一些技巧和方法。 2. 表达能力 向内审视自己的表述,这背后是我们的逻辑思维和表达能力,我们的词汇量,我们的语言组织,我们的语法习惯,都会影响我们在对大模型输出指令时的文本的质量。 在前一个步骤里采用的结构化提示词的好处在于,它已经规范了一套相当标准的表述结构,那么就可能会在一定程度上弥补个体在表达上缺乏逻辑性和条理性的这样局限和缺陷。 在我们运用结构化提示词非常熟练的场景下,我们需要进一步地去融合和提炼,学会在更加复杂的情况下使用复杂提示词,而在更加简单或连续追问的心流场景下,找到准确表述自己的意图的一种方法。 这是需要建立在大量的对话实践的基础上的,如果你在之前已经了解过大模型的特性,也采用结构化提示词,采用别人提供的框架和模板,进行过大量实践的情况下,你可以在极其精简的几个句子中就明确表述自己的意图,并且对大模型接下来的生成有一定的判断。 在大模型的生成不符合你预期的结果时,你也可能很快地找到如何调整自己表述的方式。这些是我称之为一种和大模型对话语感的能力,这种语感的背后有经验的累积,有对方法论的思考,更多时候也是形成一种潜意识的表达的一种条件反射的语言素养。 第七步:提示词封装与工作流 当我们对外掌握了足够的技巧和方法,对内也深刻思考了自己的深层逻辑思维与表达能力,我们该考虑如何把我们熟练运用的提示词作为工具分享给他人使用,或作为工具沉淀下来用于提升自己的生产力工具。 这时候我们必须要考虑到引入一个提示词封装的方法。 目前市面上比较主流的工具有 OpenAI 官方推出的 GPTS 或者叫 Gizmo, 当然也有我们国内国产大模型的很多智能体封装的工具, 例如智谱清言的智能体,百度文心一言的智能体,以及Kimi Plus版本最近推出的官方智能体(暂不支持用户自己上传), 这些都是很成熟的平台化的智能体封装方式。 对于提示词学习者来说,仅需要花较少的时间去了解平台的特性、智能体的设置规则, 以及一些最基础的简单的参数设置即可。 但当我们来到这一步时,我们必须面临的一个问题是, 在我们独自使用一个提示词的时候, 很可能这个提示词的某些约束语句仅出于我个人的语言习惯或我个人对提示词的使用场景, 所以在我们测试和迭代的时候不会发生太多的问题。 但当我们把一个提示词封装为一个智能体去发布或者是传递给更多其他人使用的时候, 由于使用场景的差异和思维方式的差异, 很可能我们的提示词会遇到很多用户层面的问题。 如果我们有机会和我们的用户交流的话, 可以极大的提升我们在提示词的编写迭代上的认知和见解。 这是非常宝贵的经验,值得大家在这个领域投入更多精力,建立和你提示词使用者的沟通机制是非常有帮助的。 同时我们在这个阶段也会面临另一个困境,就是单一的提示词很难解决较为复杂的任务或生成非常长篇的复杂文本。 这是大模型单词对话窗口的局限性和大模型的注意力机制所决定的。 当你的提示词足够复杂的时候,意味着大模型的注意力也被大量的稀释。 那么分散在一些特定的重要约束语句上的注意力可能就会不足以让大模型来理解并完成这一个指令和约束。 在这种情况下,单个提示词的能力会变得让我们感到非常无力,这种情况下,我们需要引入提示词链或工作流程,把多个提示词和大模型能力以及外部工具的能力链接起来,形成一个特定的工作流来解决我们对复杂任务的要求。 第八步:RAG技术 同时,为了解决大模型的世界知识不足或产生幻觉等等问题, 我们在这个时候需要适时地考虑引入基于 RAG 技术的自主上传的知识库文本或自己去创建清晰的数据集来作为引用文本, 方便大模型基于更加严谨的参考文本来解决我们特定的任务场景。 到这里,提示词应该可以想写什么写什么了,祝 AI 旅途愉快。

封面图片

全球最强大模型一夜易主 GPT-4被全面超越

全球最强大模型一夜易主 GPT-4被全面超越 几项数学类评测都是用0-shot超越GPT-4的4-8 shot。除此之外,此前就以长下文窗口见长的Claude,此次全系列大模型可提供 200K 上下文窗口,并且接受超过100万Tokens输入。Gemini 1.5 Pro:嗯?目前可以免费体验第二强Sonnet,Opus最强版供Claude Pro付费用户使用,但大模型竞技场也可以白嫖。于是乎,网友们已经开始疯玩上了。(Doge)另外,Opus和Sonnet也开放API访问,开发者可以立即使用。有人直接艾特奥特曼:好了,你现在可以发布GPT-5了。不过奥特曼可能还在烦马斯克的诉讼……最新最强大模型发布此次Claude 3家族共有三个型号:小杯Haiku、中杯Sonnet以及大杯Opus,成本和性能依次递增。首先,在性能参数上,Claude 3全系多方面全面提升。其中Opus在MMLU、GPQA、GSM8K等评估基准上领先于其他所有模型:还有在视觉能力上,它能可以处理各种视觉格式,包括照片、图表、图形和技术图表。对于这样性能结果,有专业人士表达了自己的看法。比如爱丁堡大学博士生、 中文大模型知识评估基准C – Eval提出者之一符尧就表示,像MMLU / GSM8K / HumanEval这些基准,已经严重饱和:所有模型的表现都相同。他认为,真正区分模型性能基准的是MATH and GPQA。另外,在拒绝回答人类问题方面,Claude 3也前进了一大步,拒绝回答的可能性显著降低在上下文以及记忆能力上,他们用大海捞针(Needle In A Haystack,NIAH)来评估衡量大模型从大量数据中准确召回信息的能力。结果Claude 3 Opus 不仅实现了近乎完美的召回率,超过 99% 的准确率。而且在某些情况下,它甚至能识别出 “针 “句似乎是人为插入原文的,从而识别出评估本身的局限性。还在生物知识、网络相关知识等方面取得了进步,但出于负责任的考虑,仍处于AI安全级别2(ASL-2)。其次,在响应时间上,Claude 3大幅缩短,做到近乎实时。官方介绍,即将发布的小杯Haiku能够在三秒内阅读并理解带有图表的长度约10k token的arXiv论文。而中杯Sonnet能够在智能水平更高的基础上,速度比Claude 2和Claude 2.1快2倍,尤其擅长知识检索或自动化销售等需快速响应的任务。大杯Opus的智能水平最高,但速度不减,与Claude 2和Claude 2.1近似。官方对三款型号的模型也有清晰的定位。大杯Opus:比别家模型更智能。适用于复杂的任务自动化、研发和制定策略;中杯Sonnet:比其他同类模型更实惠。更适合规模化。适用于数据处理、RAG、在中等复杂度工作流程中节省时间;小杯Haiku:比同类模型更快速、实惠。适用于与用户实时互动,以及在简单工作流程中节省成本;在价格方面,最便宜的小杯定价0.25美元/1M tokens输入,最贵的大杯定价75美元/1M tokens输入对比GPT-4 Turbo,大杯价格确实高出不少,也能体现AnthropicAI对这款模型非常有信心。第一手实测反馈既如此,那就先免费来尝尝鲜~目前官方页面已经更新,Claude展现了“理解和处理图像”这一功能,包括推荐风格改进、从图像中提取文本、将UI转换为前端代码、理解复杂的方程、转录手写笔记等。即使是模糊不清的有年代感的手记文档,也能准确OCR识别:底下写着:你正在使用他们第二大智能模型Claude 3 Sonnet。然鹅,可能是人太多的原因,尝试了几次都显示“Failed”不过,网友们也已经po出了一些测试效果,比如让Sonnet解谜题。为其提供一些示例,要求它找出数字之间的关系,比如“1 Dimitris 2 Q 3”,意思是3是1和2相加的结果。结果Sonnet成功解出-1.1加8等于6.9,所以“X”的值应该是6.9:还有网友发现Sonnet现在也可以读取 ASCII 码了,直呼:这是GPT-4 ++的水平了。在编程任务上,谁写的代码好先不说,Claude 3至少不会像GPT-4一样偷懒。还有体验到了Opus的玩家,在线给模型挖坑,可opus硬是完美躲避不上当:初看这效果,感觉还行。这时候应该艾特OpenAI:GPT-5在哪里?好了,感兴趣的朋友,可以戳下方链接体验啦~ ... PC版: 手机版:

🔍 发送关键词来寻找群组、频道或视频。

启动SOSO机器人