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接口传输数据,设计人员不需要了解…

Vuex看这一篇就够了

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

Win11 改造

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

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…

SpringSecurity通用权限管理系统

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

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…

系统变量设置失败导致 /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 #更新系统上已安装的所有软件包到最新…

使用 Socket和动态代理以及反射 实现一个简易的 RPC 调用

使用 Socket、动态代理、反射 实现一个简易的 RPC 调用 我们前面有一篇 socket 的文章&#xff0c;再之前&#xff0c;还有一篇 java动态代理的文章&#xff0c;本文用到了那两篇文章中的知识点&#xff0c;需要的话可以回顾一下。 下面正文开始&#xff1a; 我们的背景是一个…

【Linux网络】epoll模型构建Reactor_Tcp服务器{协议/客户端/bind/智能指针}

文章目录 1.std::enable_shared_from_this<TcpServer>2.std::bind3.std::make_shared4.std::shared_ptrstd::shared_ptr 和 std::weak_ptr配合使用 5.剖析代码6.整体代码Calculator.hppClientCal.ccCMakeLists.txtCommon.hppEpoller.hppLog.hppMain.ccnocopy.hppProtocol…

YOLOv8预测时报错ValueError

【问题描述】执行YOLOv8预测代码时&#xff1a; # 导入训练好的权重文件做预测 from ultralytics import YOLO# Load a pretrained YOLOv8n model model YOLO("/data/yolov8/runs/detect/train6/weights/best.pt")# Run inference on bus.jpg with arguments model…

四大引用——强软弱虚

目录 一、强引用 二、软引用 三、弱引用 四、虚引用 一、强引用 强引用是在程序代码之中普遍存在的&#xff0c;类似于“Object obj new Object()”&#xff0c;obj变量引用Object这个对象&#xff0c;就叫做强引用。当内存空间不足&#xff0c;Java虚拟机宁愿抛出OutOfMe…

使用 Redis 实现验证码、token 的存储,用自定义拦截器完成用户认证、并使用双重拦截器解决 token 刷新的问题

基于session实现登录流程 1.发送验证码 用户在提交手机号后&#xff0c;会校验手机号是否合法&#xff0c;如果不合法&#xff0c;则要求用户重新输入手机号 如果手机号合法&#xff0c;后台此时生成对应的验证码&#xff0c;同时将验证码进行保存&#xff0c;然后再通过短信…

安防视频监控EasyCVR视频汇聚平台修改配置后无法启动的原因排查与解决

安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台基于云边端一体化架构&#xff0c;兼容性强、支持多协议接入&#xff0c;包括国标GB/T 28181协议、部标JT808、GA/T 1400协议、RTMP、RTSP/Onvif协议、海康Ehome、海康SDK、大华SDK、华为SDK、宇视SDK、乐橙SDK、萤石云SD…

Linux学习第55天:Linux 4G 通信实验(更快、更高、更强)

Linux版本号4.1.15 芯片I.MX6ULL 大叔学Linux 品人间百味 思文短情长 无论是有线网络还是WiFi都是摆脱不了布线的尴尬&#xff0c;而4G通信可以彻底拜托网线的束缚&#xff0c;实现无线网络通信。 而说到4G就不得不提到5G&#xff0c;中…