Press "Enter" to skip to content

Tag: Llm

使用Langchain构建半结构化数据的RAG管道

介绍 检索增强生成(Retrieval Augmented Generation)已经存在一段时间了。许多工具和应用程序围绕这个概念进行了构建,比如向量存储、检索框架和LLMs,使得处理自定义文档尤其是具有Langchain的半结构化数据变得方便。处理长、密集的文本从未如此轻松而有趣。传统的RAG对于不结构化的文本重型文件(如DOC、PDF等)效果良好。然而,这种方法对于嵌入在PDF中的半结构化数据(如嵌入式表格)效果不佳。 在处理半结构化数据时,通常有两个问题。 传统的提取和文本分割方法无法处理PDF中的表格。它们通常会破坏表格,从而导致信息的丢失。 嵌入表格可能无法转化为精确的语义搜索。 因此,在本文中,我们将使用Langchain构建一个用于处理半结构化数据的检索生成(Retrieval Generation)流水线,以解决这两个半结构化数据的问题。 学习目标 了解结构化、非结构化和半结构化数据之间的区别。 对检索增强生成和Langchain进行简要回顾。 学习如何使用Langchain构建一个用于处理半结构化数据的多向量检索器。 本文作为数据科学博文马拉松的一部分发表。 数据类型 通常有三种类型的数据:结构化数据、半结构化数据和非结构化数据。 结构化数据:结构化数据是标准化的数据,遵循预定义的模式,例如行和列。SQL数据库、电子表格、数据帧等。 非结构化数据:与结构化数据不同,非结构化数据没有数据模型。数据是随机的,例如PDF、文本、图像等。 半结构化数据:它是前两种数据类型的结合。与结构化数据不同,它没有严格的预定义模式。然而,数据仍然基于某些标记保持着分层次的顺序,这与非结构化类型形成了对比。例如CSV、HTML、嵌入式PDF中的表格、XML等。 什么是RAG? RAG代表检索增强生成(Retrieval Augmented Generation)。这是为大型语言模型提供新信息的最简单方法。现在,让我们对RAG进行一个快速介绍。 在典型的RAG流程中,我们有知识来源,如本地文件、网页、数据库等,一个嵌入模型,一个向量数据库和一个LLM。我们从各种来源收集数据,拆分文档,获取文本块的嵌入并将它们存储在向量数据库中。现在,我们将查询的嵌入传递给向量存储,从向量存储中检索文档,最后使用LLM生成答案。 这是传统RAG的工作流程,适用于如文本等不结构化数据。然而,当涉及到半结构化数据时,例如嵌入在PDF中的表格,它通常无法表现良好。在本文中,我们将学习如何处理这些嵌入式表格。…

Leave a Comment

深探:中国最新的语言模型的支配地位

在最新的进展中,DeepSeek LLM在语言模型领域崭露头角,拥有令人印象深刻的670亿个参数。DeepSeek LLM在庞大的英语和中文数据集上经过精心训练,并通过开源其7B/67B基础版和7B/67B聊天版,为研究合作设定了新标准。本文深入探讨了该模型在各个领域的卓越能力,并评估了其在复杂评估中的表现。 卓越的通用能力 DeepSeek LLM 67B基础版已通过在推理、编码、数学和中文理解等关键领域中胜过Llama2 70B基础版证明了其实力。该模型的实力延伸到多个领域,标志着语言模型演进的重要飞跃。 精通编码和数学 DeepSeek LLM 67B聊天版在编码方面表现出色,其HumanEval Pass@1得分为73.78。该模型在数学能力方面也表现卓越,GSM8K 0-shot得分为84.1,Math 0-shot得分为32.6。值得注意的是,它在具有挑战性的匈牙利国家中学考试中获得了惊人的65分,彰显出出色的泛化能力。 中文语言掌握能力 在与GPT-3.5的中文语言能力对比中,DeepSeek LLM 67B聊天版成为中文语言掌握能力的领先者。评估结果凸显了该模型的优势,标志着自然语言处理的重大进展。 评估见解 为了公正评估DeepSeek LLM 67B聊天版,开发者提供了新的问题集,减少了数据污染,并考虑到特定的测试集。匈牙利国家中学考试成为评估该模型数学能力的试金石,揭示了该模型在解决复杂问题方面的实力。 此外,谷歌于2023年11月15日发布的“指令遵循评估数据集”为评估DeepSeek LLM…

Leave a Comment

探索对OpenAI模型的开源替代品

介绍 11月在人工智能领域发生了许多重大事件。从GPT存储的推出,到GPT-4-turbo的发布,再到OpenAI的惨败,这一切都引发了一个重要的问题:封闭模型和背后的人员有多可靠?当你在生产中使用的模型因为一些内部公司事件而崩溃时,这将会是一次不愉快的经历。这对于开源模型来说并不是一个问题。您对部署的模型拥有完全控制权。您对数据和模型都有主权。但是是否可以用GPT代替开源模型?值得庆幸的是,许多开源模型已经达到或超过了GPT-3.5模型的性能。本文将探讨一些性能最佳的开源LLMs和LMMs替代方案。 学习目标 讨论开源大型语言模型。 探索最先进的开源语言模型和多模态模型。 对大型语言模型进行轻量化介绍。 了解在本地和云端运行LLMs的工具和服务。 本文作为数据科学博文马拉松的一部分发表。 什么是开源模型? 当模型的权重和架构是自由可用的时,我们称之为开源模型。这些权重是大型语言模型的预训练参数,例如Meta的Llama。这些通常是基础模型或未经调优的原始模型。任何人都可以使用这些模型,并将其在自定义数据上进行微调,以执行下游操作。 但是它们是否是真正的开源?数据呢?由于有关版权内容和数据敏感性的种种问题,大多数研究实验室都不会公开发布训练基础模型时所使用的数据。这也涉及到模型的许可问题。每个开源模型都有类似于任何其他开源软件的许可证。许多基础模型(例如Llama-1)配有非商业许可证,这意味着您不能使用这些模型来赚钱。但是像Mistral7B和Zephyr7B这样的模型配有Apache-2.0和MIT许可证,可以在任何地方使用而不会有顾虑。 开源替代方案 自从Llama发布以来,开源领域一直在追赶OpenAI模型。迄今为止,取得了令人鼓舞的成果。在GPT-3.5发布一年内,我们已经拥有了参数更少但在性能上与GPT-3.5相媲美甚至更好的模型。但是GPT-4仍然是执行从推理和数学到代码生成等各种一般任务的最佳模型。进一步观察开源模型领域的创新和资金支持的步伐,我们很快将会有越来越接近GPT-4性能的模型。现在,让我们讨论一些出色的开源模型的替代方案。 Meta’s Llama 2 Meta在今年7月发布了他们最好的模型Llama-2,并因其令人印象深刻的能力而迅速走红。Meta发布了四个不同参数规模的Llama-2模型,分别是Llama-7b、13b、34b和70b。这些模型在各自的类别中足以击败其他开源模型。但是现在,诸如mistral-7b和Zephyr-7b等多个模型在许多基准测试中优于较小的Llama模型。Llama-2 70b仍然是其类别中最好的之一,可以作为GPT-4在摘要、机器翻译等任务上的替代品。 Llama-2在许多基准测试中表现优于GPT-3.5,并且能够接近GPT-4,使其成为GPT-3.5甚至在某些情况下是GPT-4的一个有价值的替代品。以下图表是由Anyscale提供的Llama和GPT模型的性能比较。 有关Llama-2的更多信息,请参阅HuggingFace上的博客。这些LLM经过微调后在自定义数据集上表现良好。我们可以对模型进行微调,以在特定任务中发挥更好的性能。 不同的研究实验室也发布了经过微调的Llama-2版本。这些模型在许多基准测试中显示出比原始模型更好的结果。这款经过微调的Llama-2模型,Nous-Hermes-Llama2-70b,由Nous Research经过超过300,000个自定义指令进行了微调,使其比原始的meta-llama/Llama-2-70b-chat-hf更好。 查看HuggingFace的排行榜。您可以找到比原始模型效果更好的经过微调的Llama-2模型。这是开源模型的优点之一。根据需求,可以选择多种模型。 Mistral-7B Mistral-7B发布以来,它已成为开源社区的宠儿。它的性能要远远优于同类模型,并接近GPT-3.5的能力。这个模型可以在许多情况下替代Gpt-3.5,比如摘要、改写、分类等。…

Leave a Comment

提高播客可访问性:LLM文本高亮度指南

介绍 想象一下热爱一档播客节目,希望记住最精彩的部分,但这个节目只有声音没有文字。你会怎么做?这就是像LLMs和语音转文本翻译工具这样的酷工具派上用场的地方。它们可以神奇地把口语转化为书面笔记,让你轻松找出亮点,创建实用的要点。所以,你最喜欢的播客时刻只差一步就能变成文字记录!自2022年11月首次亮相以来,LLM一直风靡一时。LLM可以用于各种任务,文本摘要是其中重要的应用之一。我们不仅可以对文本进行摘要,还可以对音频和视频等其他模式进行摘要。我们可以使用LLM增强播客的可访问性,并生成简洁的亮点以便使用或做未来参考。 PaLM(Pathways Language LLM)是谷歌AI于去年2022年4月成立的重要LLM。今年2023年3月,PaLM 2的第二版发布,这是一个改进和更新的版本。它旨在具有卓越的双语、编码和思维能力。与其他LLMs相比,使用PaLM 2 LLM API的优势在于其API是免费提供的。与OpenAI的ChatGPT相比,它的性能更好,推理能力更强。 在本文中,我们将学习如何使用这些工具,即PaLM 2 API和Maker Suite,创建一个简单的播客文本亮点显示器,并学习如何优化LLM模型的设置以生成更好的纲要。了解这些工具的特点,并尝试理解它们可以使用的不同用例。现在让我们开始吧! 学习目标 了解PaLM模型和其特点。 了解PaLM的模型设置。 实现一个生成播客音频简洁摘要的Python项目。 本文作为Data Science Blogathon的一部分发表。 PaLM 2概述 PaLM 2是一个庞大的NN模型,具有5400亿个参数,通过使用Pathways方法进行扩展以实现突破性能。PaLM 540B在各种多步骤推理任务上超越了当前的技术水平,并在最新发布的BIG-bench基准测试中超越了平均人类表现,取得了突破性的性能。它学习了词语和短语之间的关系,并可以将这种知识用于不同的任务。…

Leave a Comment

“自动聚类的启动:探索多智能体框架的基础知识”

介绍 踏上一段激动人心的旅程,探索多智能体框架的基础知识,并进入软件开发的未来,这就是“自动产生:探索多智能体框架基础”的主题。在OpenAI的ChatGPT之后,一个名为LLM(LLM agent)的专业领域正在经历前所未有的飞速发展,彻底改变了AI代理开发。从自动化繁琐任务到解决动态决策中的挑战,LLM代理正在挑战曾经被认为不可能的界限。 随着我们进入空间计算时代,设想一个世界,计算机与现实无缝融合,AI代理的重要性变得至关重要。想象一下通过语言和手势指令代理完成任务,具有无与伦比的推理和行动能力。然而,我们正处于AI代理革命的黎明期,见证着新的基础设施、工具和框架的诞生,这些赋予代理应对越来越复杂任务的能力。剪裁多智能体聊天系统的先进框架Autogen,在我们的探索中扮演重要的角色。 在这篇文章中,让我们一起揭开AI代理革命的早期阶段的细节,深入了解Autogen的能力,并探索如何让这些智能实体焕发生机。 学习目标 了解什么是LLM代理 学习Autogen是什么,并探索使用Autogen构建代理的基础知识 使用Autogen和OpenAI API构建代理 探索LLM代理的现实世界应用案例 本文是《数据科学博文马拉松》的一部分。 什么是LLM代理? 传统的语言模型在许多方面都表现出色,例如翻译、问答等。然而,它们的知识和能力是有限的。这就像是一名泥瓦工在修筑房子时缺少工具一样。然而,有观察发现,LLM代理在给予必要的工具后能够进行推理和行动。大多数LLM代理对世界的了解有限,但我们可以通过提示将它们与自定义来源的信息进行增强。 我们可以通过两种方法实现这一目标:检索增强生成和LLM代理。在检索增强生成中,我们通过自定义的硬编码流程将信息提供给模型。但对于代理来说,基于其推理,LLM代理将利用其掌握的工具。例如,带有Serp工具的GPT-4将浏览互联网并相应地回答,或者在可以访问雅虎金融工具时,它可以获取和分析股票表现。因此,LLM模型、工具和用于推理和采取行动的框架的组合就是AI代理的概念。 构建LLM代理的平台和工具急剧增长。Autogen就是其中之一。让我们了解一下Autogen是什么,以及如何使用它来创建LLM代理。 什么是Autogen? Autogen是微软推出的一款面向构建稳定多智能体应用的开源工具。该工具从头开始设计,充分考虑到多智能体之间的通信。它允许我们创建LLM应用程序,其中多个代理互相对话以找到解决方案。这些代理是高度可定制的,意味着我们可以引导它们执行特定的任务。它还与Langchain工具生态系统完美集成,这意味着我们可以利用现有的Langchain工具来增强我们的代理。 为了完成任务,Autogen提供了不同类型的代理,包括: 助理代理:负责完成编码、审核等任务 用户代理:如其名称所示,这些代理代表最终用户行动。这些代理将人类引入代理循环,以引导对话 可教授代理:该代理被配置为易于教授。我们可以向代理提供LLM中缺失的显式信息 我们在大多数情况下只需要一个助理代理和用户代理进行配置。所以,让我们看看如何使用 Autogen 配置代理。RAG…

Leave a Comment

欲知答案:通过编码大型语言模型实现人类级奖励设计

随着近年来大型语言模型的进展,大型语言模型框架在顺序高级决策任务的语义规划中表现突出,这并不令人意外然而,开发人员仍然发现难以充分利用大型语言模型框架来学习复杂的低级操作任务尽管它们高效,但现今的大型语言模型需要相当的[…]

Leave a Comment

使用AutoGen轻松进行战略AI团队建设

介绍 在一个数字前沿无边界的世界中,AutoGen以一种变革性范式的建筑师的身份出现。想象一下拥有个性化的人工智能团队,每个团队都擅长不同领域,无缝协作,无障碍沟通,不知疲倦地处理复杂任务。这就是AutoGen的本质,它是一种开创性的多智能体对话框架,赋予您创建个性化的人工智能团队的能力。在这篇文章中,我们揭开AutoGen的神奇之处,探索它如何使您能够组建自己的数字梦想团队并实现非凡成就。欢迎来到一个人与机器之间的边界消失,协作无限的未来。 学习目标 在我们深入了解细节之前,让我们概述一下本文的主要学习目标: 全面了解AutoGen作为多智能体对话框架的能力。 了解智能体在多智能体对话框架中的自主沟通和协作。 了解config_list在AutoGen运行中的关键作用。了解保护API密钥和管理配置以实现智能体高效性能的最佳实践。 探索各种对话风格,从完全自主到人类参与的交互。了解AutoGen支持的静态和动态对话模式。 了解如何利用AutoGen根据验证数据、评估函数和优化指标调整LLM。 探索示例,如构建协作内容创作团队和带有文化背景的语言翻译,以了解AutoGen如何在不同场景中应用。 本文作为数据科学博文马拉松的一部分发表。 AutoGen是什么? AutoGen是一个统一的多智能体对话框架,作为使用基础模型的高级抽象。它将能力强大、可定制、可对话的智能体通过自动化聊天集合在一起,与LLMs、工具和人类参与者整合。本质上,它使智能体能够自主沟通和协作,有效地简化复杂任务并自动化工作流程。 为什么AutoGen很重要? AutoGen解决了与人工智能进行高效灵活的多智能体通信的需求。它的重要性在于它能够: 简化复杂LLM工作流程的编排、自动化和优化。 充分发挥LLM模型的性能,同时克服其局限性。 以最少的工作量基于多智能体对话开发下一代LLM应用。 设置开发环境 创建虚拟环境 创建虚拟环境是一种良好的实践,可以隔离特定项目的依赖项,避免与系统范围的软件包冲突。以下是设置Python环境的方法: 选项1:Venv python -m venv…

Leave a Comment

LLM革命:改变语言模型

介绍 在过去几年中,语言模型领域经历了一场巨大的演变,特别是随着大规模语言模型(LLMs)的出现。这些模型具备数十亿个参数和对自然语言的深刻理解,对于改变人工智能领域起到了关键作用。今天,我们将探索这场革命,重点介绍从闭源到开源LLMs的转变,精细调整的重要性以及最近出现的高效调整技术的发展。 学习目标: 了解闭源和开源LLMs的区别。 了解LLMs中的传统和参数高效调整。 探索不同的参数高效调整策略。 学习使用Ludwig进行高效调整。 闭源vs开源LLMs:选择正确的方法 语言模型领域存在着闭源模型(如OpenAI的ChatGPT、GPT 3.5和GPT 4)和开源变种(如Meta、Google和各种研究实验室提供的)之间的两极分化。闭源LLMs由于其管理基础设施和快速概念验证能力,成为一个引人注目的起点。这些模型提供高质量的预训练数据集,并且无需设置基础设施,使得那些探索LLMs能力的人可以轻松入门。 然而,尽管闭源LLMs易于获取,但它们存在根本性的局限性。它们缺乏模型所有权和极少的自定义能力,特别是对于数据隐私和模型控制至关重要的领域,这使得闭源LLMs不太适合长期投资。相比之下,开源LLMs提供了一个有希望的替代方案。它们使得完全拥有模型和自定义成为可能,并便利地获得开源空间中的创新发展。而付出的代价则是主机费用和困难。 传统微调和参数高效微调 微调成为了最大化LLMs潜力的关键过程,特别是考虑到特定领域任务的情况下。闭源模型常常缺乏所需的灵活性进行微调,而开源模型则可以完全控制这个过程。微调允许通过更新模型权重将预训练的LLMs适应于特定任务,从而提高性能。这是将这些通用模型个性化为专用应用的手段,为独特任务优化性能。 关于微调和类似检索增强生成(RAG)模型之间的辩论,重点在于是否需要针对具体任务进行定制的模型,而非通用智能模型。开源LLMs的性质允许自定义和高效微调以实现卓越的任务特定性能。 传统微调涉及更新所有模型参数,这一过程已被证明是资源密集型、耗时且不总能获得最佳的任务特定性能。然而,参数高效微调的最新创新取得了突破。通过冻结预训练LLM并仅训练一小部分特定任务层(不到总模型权重的1%),高效微调变得既节约资源又更有效。 向参数高效微调的转变显著影响了LLMs如何适应特定任务。通过仅关注训练少量特定任务层,这个过程变得更具成本效益和高效性。这种创新方法在较小数据集上实现了最佳任务特定性能,展示了开源LLMs相对于闭源模型的潜力。 Meta等人的LIMA论文等研究支持了在较小数据集上进行微调可以超越GPT 4等闭源模型性能的观点。这种通过较少数据实现更多的概念的概念突出了开源LLMs在适当微调下的效率和效果。 理解高效训练策略 在利用预训练模型进行特定任务时,LoRA(低秩自适应)和QLoRA(量化低秩自适应)已经成为有效微调大型语言模型(LLMs)的创新方法。这些方法对于将预训练模型定制为专用任务而最小化附加参数非常重要。 LoRA:对体系结构的深入研究 LoRA的体系结构涉及低秩分解,通过将变压器架构中的大型权重矩阵分解为较小矩阵来实现。在变压器的上下文中,LoRA专注于查询,键和值线性投影。 通常,这些线性投影具有大的权重矩阵,例如1024×1024,LoRA将其分解为较小的矩阵,例如1024×8和8×1024。这些较小的矩阵相乘,可以产生原始的维度。这种压缩大大减少了可调参数的数量,约为总LLM参数的一半到1%。 在变压器体系结构的上下文中,LoRA为键和查询投影层集成了适配器模块。这些通过低秩分解构造的适配器保持了原始形状,同时使其能够插入到变压器层中。基本层保持冻结状态,只有适配器权重是可训练的。…

Leave a Comment

在Python中进行结构化LLM输出存储和解析

介绍 生成AI目前在全球范围内广泛使用。大型语言模型能够理解提供的文本并基于此生成文本的能力,已经导致了从聊天机器人到文本分析器的众多应用。但是,这些大型语言模型通常以非结构化的方式生成文本。有时候,我们希望LLM生成的输出以结构化的形式呈现,比如JSON(JavaScript对象表示)格式。假设我们正在使用LLM来分析社交媒体帖子,并且我们需要LLM生成的输出在代码中本身作为JSON/Python变量,以执行其他任务。通过Prompt Engineering可以实现这一点,但需要花费大量时间来调整提示。为了解决这个问题,LangChain引入了输出解析功能,可以用于将LLM的输出转换为结构化格式。 学习目标 解释大型语言模型生成的输出 使用Pydantic创建自定义数据结构 了解提示模板的重要性,并生成一个格式化LLM输出的模板 学习如何使用LangChain创建LLM输出的格式化指令 了解如何将JSON数据解析为Pydantic对象 本文是数据科学博文马拉松的一部分。 LangChain和输出解析是什么? LangChain是一个Python库,可以让您在短时间内构建与大型语言模型相结合的应用程序。它支持多种模型,包括OpenAI GPT LLM、Google的PaLM,甚至是Hugging Face中提供的开源模型,如Falcon、Llama等等。借助LangChain,定制大型语言模型的提示变得轻而易举,它还配备了一个开箱即用的向量存储库,可以存储输入和输出的嵌入。因此,可以使用它来创建在几分钟内查询任何文档的应用程序。 LangChain使大型语言模型能够通过代理从互联网上获取信息。它还提供了输出解析器,允许我们从大型语言模型生成的输出中结构化数据。LangChain提供了不同的输出解析器,如列表解析器、日期时间解析器、枚举解析器等等。在本文中,我们将介绍JSON解析器,它可以将LLM生成的输出解析为JSON格式。下面,我们可以观察到一个典型的流程,即将LLM输出解析为Pydantic对象,从而创建出一组可供Python变量直接使用的数据。 入门-设置模型 在本节中,我们将使用LangChain来设置模型。在本文中,我们将始终使用PaLM作为我们的大型语言模型。我们将使用Google Colab作为我们的环境。您可以将PaLM替换为任何其他大型语言模型。我们将首先导入所需的模块。 !pip install google-generativeai langchain 这将下载LangChain库和与PaLM模型一起使用的google-generativeai库。 需要langchain库来创建自定义提示并解析大型语言模型生成的输出。…

Leave a Comment