LangChain的数据增强

吾名爱妃,性好静亦好动。好编程,常沉浸于代码之世界,思维纵横,力求逻辑之严密,算法之精妙。亦爱篮球,驰骋球场,尽享挥洒汗水之乐。且喜跑步,尤钟马拉松,长途奔袭,考验耐力与毅力,每有所进,心甚喜之。

 
吾以为,编程似布阵,算法如谋略,需精心筹谋,方可成就佳作。篮球乃团队之艺,协作共进,方显力量。跑步与马拉松,乃磨炼身心之途,愈挫愈勇,方能达至远方。愿交志同道合之友,共探此诸般妙趣。

诸君,此文尚佳,望点赞收藏,谢之!

这篇文章主要探讨在LangChain框架中连接外部的数据做数据增强的能力。我们的生活周围充斥着各种各样的数据,例如本地的文档、网页上的知识、企业内部的知识库、各类研究报告、软件数据库以及聊天的历史记录等。这些数据,无论是广泛的互联网数据,还是具有特定价值的其他内部数据,都是构建和优化大语言模型的重要资源。

数据增强模块的相关概念

        你可能会问,既然已经有了强大的大语言模型,例如OpenAI的GPT-4,为什么还需要连接外部数据呢?原因其实很简单,那就是大语言模型的知识是有限的。以GPT-4为例,它的数据集只训练到2023年4月,也就是说,这个时间之后的数据并没有被模型学习和理解。所以,到2023年下半年,仍会看到ChatGPT在其界面上显示:ChatGPT可能会产生关于人、时间、地点或事件不准确的信息。这是因为模型在训练数据集之外的知识领域中,其预测能力是受限的。

        除此之外,还需要个性化的知识,比如企业的内部知识。想象一下,如果你有一个企业,你可能希望你的聊天机器人能够理解和回答一些关于你的产品或服务的具体问题,这些问题的答案往往需要依赖你的企业内部的专有知识。大语言模型无法直接访问这些知识,因此需要将这些知识以某种方式连接到大语言模型。

        连接外部数据不仅可以填补大语言模型的知识缺失,而且还能让开发的应用程序更加可靠。当模型需要回答一个问题时,它可以根据真实的外部数据进行回答,而不是仅仅依赖于它在训练时学习的知识。例如,当询问模型“2023年的新冠病毒疫苗有哪些副作用?”时,模型可以根据最近的医学研究报告来提供答案,而不是依赖于它在两年前学习的可能已经过时的知识进行回答。

        这些大语言模型不仅需要连接外部的数据,填补缺失的知识,同时还收到了提示词的限制,因为构建好的提示词往往需要外部数据的加持。但是,这种提示词的字符数量是有限的,这就是我们通常所说的max tokens的概念。

        为了解决大语言模型的这些限制问题,LangChain设计了数据增强模块。设计这个模块的目的是检索与用户输入的问题相关的外部数据,包括筛选相关问题的相关的文档。然后,这些相关数据会形成提示词模板,提交给LLM或Chat Model类型的模型包装器。这些模型包装器封装了各个大语言模型平台的底层API,使得我们可以方便的与这些平台进行交互,获取大语言模型平台的输出。

        然而,加载了这些外部的文档数据后,我们经常希望对它们进行转换以更好的适应应用程序。最简单的例子是将一个长文档切割成多个较小的文档,避免文档长度超过max tokens限制。为了实现这一目标,LangChain框架提供了一系列内置的文档转换器,这些文档转换器可以对文档进行切割、组合、过滤等。

LEDVR工作流

        数据增强模块是一个多功能的数据增强集成工具,我们可以方便地称作LEDVR。其中,L表示加载器Loader、E代表嵌入模型包装器Text Embedding Model、D代表文档转换器Document Transformers、V表示向量数据库VectorStore、R表示检索器Retriever。

加载器

        加载器负责从各种来源加载数据作为文档,其中文档是由文本和相关元数据组成的。无论是简单的txt文档,还是任意网页文本内容,加载器都可以将他们加载为文档。

嵌入模型包装器

        嵌入模型包装器是一个专门为各种文本嵌入模型交互而设计的类。它的作用与LLM模型包装器和聊天模型包装器一样。

文档转换器 

        文档转换器主要用来对文档进行切割、组合、过滤等各种转换。数据增强模块提供了一系列内置的文档转换器。最常见的文档转换是切割文档,例如,将大型文档切割为小片段文档。文本切割器是最常见的文档转换器工具。文档转换器的目的是将加载的文档转换为可被嵌入模型包装器操作的文档数据格式。

向量数据库

        向量数据库是用于存储和检索嵌入向量的工具,处理的数据是通过模型平台的文本嵌入模型(Text Embedding Model)转换的向量数据,这是处理非结构化数据的一种常见方法。向量数据库负责存储嵌入数据并执行向量检索。在建索时,可以嵌入非结构化查询,以建索与嵌入数据最相似的嵌入向量。

检索器 

        检索器是一个接口,返回非结构化查询的文档。它比向量存储库更通用。检索器无需存储文档,只需要返回检索后的文档。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/874623.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring事务(1)

目录 一、事务回顾 1、什么是事务? 2、为什么需要事务? 3、事务的操作 二、Spring 中事务的实现 1、代码准备: (1)创建项目 spring-trans,引入 Spring Web,MyBatis,MySQL等依…

【C++】C++前言

目录 一.什么是C 1.1.面向过程: 1.2.面向对象: 二.C发展历史 三.C版本更迭 3.1.语法更新 3.2.关于C2X最新特性的讨论: 3.3.关于C23的一个小故事: 四.C参考文档: 五.C的重要性: 5.1.编程语言排行榜…

JESD204B学习与仿真

平台:vivado2018.3 芯片:xcku115-flva1517-2-i 场景:在高速ADC和DAC芯片中,有使用源同步的时钟和数据同步传输的方式,但是需要在逻辑内部对其进行校准。如果使用jesd204b接口传输数据,设计人员不需要了解…

《流程引擎原理与实践》开源电子书

流程引擎原理与实践 电子书地址:https://workflow-engine-book.shuwoom.com 第一部分:流程引擎基础 1 引言 1.1 流程引擎介绍 1.2 流程引擎技术的发展历程 1.3 相关产品国内外发展现状 1.4 本书的内容和结构安排 2 概念 2.1 基础概念 2.2 进阶…

MODBUS tcp学习总结

MODBUS TCP协议实例数据帧详细分析_modbus 帧结构-CSDN博客

Vuex看这一篇就够了

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 非常期待和您一起在这个小…

Win11 改造

记录一些安装 win11 系统之后,对使用不习惯的地方,进行的个人改造 右键菜单 Hiyoung006/Win11Useable: 将Win11右键菜单及资源管理器恢复为Win10样式的脚本 切换到旧版右键菜单: reg add "HKCU\Software\Classes\CLSID\{86ca1aa0-34…

什么是128陷阱?

Java包装类详解 Java包装类提供了一种将基本数据类型转换为对象的机制,这对于在需要对象而非基本数据类型的场景下尤为有用。本文将介绍拆装箱、包装类的编译器行为、常见方法以及自动装箱中的128陷阱。 拆装箱 拆装箱概念 拆箱(Unboxing&#xff09…

iview中Checkbox组件设置不勾选是0,勾选是1

正常情况: <Checkbox v-model"data.blow" true-value"1" false-value"0"><span>是否易燃易爆</span> </Checkbox>vue的data中&#xff0c;将Checkbox绑定的初始值设置成0。 data: function () {return {data: {blow: &…

Web前端:HTML篇(二)元素属性

HTML 属性 属性是 HTML 元素提供的附加信息。 HTML 元素可以设置属性属性可以在元素中添加附加信息属性一般描述于开始标签属性总是以名称/值对的形式出现&#xff0c;比如&#xff1a;name"value"。 属性实例 HTML 链接由 <a> 标签定义。链接的地址在 href …

数据结构(二叉树-2)

文章目录 一、 实现链式结构二叉树 1.1 Tree.h 1.2 Tree.c 前中后序遍历 前序遍历 中序遍历 后续遍历 1.2 Tree.c 结点个数 1.3Tree.c 叶子节点个数 1.4 Tree.c 二叉树的高度 1.5 Tree.c 层序遍历 1.6 判断是否为完全二叉树 1.7 销毁二叉树 test.c 一、 实现链式结构二叉树 ⽤链…

体重电子秤方案pcba方案设计开发应用

体重电子秤是一种利用电子技术实现物体重量测量的设备。它是现代生活中不可缺少的日常用品之一。本文将从产品介绍、结构设计、工作原理、功能设计和特点优势五个方面来介绍体重电子秤方案产品。 首先&#xff0c;体重电子秤方案的产品介绍。 体重电子秤是一种便携式的设备&…

vue this.$refs 动态拼接

业务需要&#xff0c;refs是不固定的 <vxe-grid refgridWarehouse v-bind"gridWarehouseOptions" v-if"tableHeight" :height"tableHeight":expand-config"{iconOpen: vxe-icon-square-minus, iconClose: vxe-icon-square-plus}"c…

04-Spring Data中的设计模式

Spring Data中的设计模式分析 模板方法模式 (Template Method Pattern) 源码分析 Spring Data中的JdbcTemplate、JpaTemplate、MongoTemplate等类使用模板方法模式来执行数据库操作&#xff0c;底层的资源管理和异常处理由模板类实现。 示例&#xff1a;JdbcTemplate publ…

SpringSecurity通用权限管理系统

1、介绍 权限管理是所有后台系统都会涉及的一个重要组成部分&#xff0c;而权限管理的核心流程是相似的&#xff0c;如果每个后台单独开发一套权限管理系统&#xff0c;就是重复造轮子&#xff0c;是人力的极大浪费&#xff0c;本项目就是针对这个问题&#xff0c;提供了一套通…

关于正运动学解机器人手臂算法

机器人正运动学是机器人学的一个分支&#xff0c;研究机器人的运动和位置之间的关系。它通过解析机器人的结构和关节参数&#xff0c;以及给定的关节角度&#xff0c;来计算机器人的末端执行器的位置和姿态。 机器人正运动学算法通常使用DH&#xff08;Denavit-Hartenberg&…

Python第三方库Kornia中LoFTR的使用

0&#xff0c;背景 浏览LoFTR代码主页&#xff1a;LoFTR&#xff0c;看到其中提到&#xff0c;LoFTR从0.5.11版本开始集成到kornias库中&#xff0c;所以决定尝试。 硬件&#xff1a;联想拯救者Y7000P 2020&#xff0c;i7-10750H&#xff0c;RTX2060 1&#xff0c;Kornia K…

Hive小文件合并

作者&#xff1a;振鹭 一、参数配置&#xff1a; 在Map输入的时候, 把小文件合并。 -- 每个Map最大输入大小&#xff0c;决定合并后的文件数 set mapred.max.split.size256000000; -- 一个节点上split的至少的大小 &#xff0c;决定了多个data node上的文件是否需要合并 set…

系统变量设置失败导致 /usr/bin:/bin 不在 PATH 环境变量,许多基本命令都无法调用!!手欠的!!!

GPT害人不浅&#xff0c;专坑我这种电脑小白&#xff0c;差点被骗重装系统。。 看起来你的 PATH 环境变量真的缺失了标准的二进制文件路径&#xff08;如 /usr/bin 和 /bin&#xff09;&#xff0c;这导致你无法使用许多常用命令&#xff0c;包括 nano 和 vim。我们需要采取另…

在 CentOS 7 上安装 Docker 并安装和部署 .NET Core 3.1

1. 安装 Docker 步骤 1.1&#xff1a;更新包索引并安装依赖包 先安装yum的扩展&#xff0c;yum-utils提供了一些额外的工具&#xff0c;这些工具可以执行比基本yum命令更复杂的任务 sudo yum install -y yum-utils sudo yum update -y #更新系统上已安装的所有软件包到最新…