LangChain的数据增强

news2024/9/25 9:35:08

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

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

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

这篇文章主要探讨在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.coloradmin.cn/o/1945808.html

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

相关文章

给Windows系统中注入服务,即windwos守护进程

最近总是在windwos环境下测试nginx,总是需要频繁重启nginx服务。于是考虑有没有可能把nginx加入到系统服务的操作。在网上找了一大堆资料,现在来总结一下! 方法1:利用nssm工具实现 这是一个守护进程的软件,可以在win…

初阶数据结构——二叉树大汇总

这篇博客将会讲到二叉树的部分内容及堆的相关知识~ 这里将会涉及到大量的递归(头大) 目录 1.树 1.1树的概念 1.2树的相关概念 1.3树的表示 1.4树的实际应用 2.二叉树 2.1二叉树的概念 2.2特殊的二叉树 2.2.1 满二叉树 2.2.2 完全二叉树 2.2…

【昇腾AI创新大赛集训营南京站学习笔记】-Ascend算子开发课程

昇腾AI创新大赛训练营 14:00-14:30 基础知识-理论课 一、CANN 、达芬奇架构和算子 1.AI Core逻辑架构 达芬奇架构包含三部分: 1)计算类:矩阵计算单元(两个矩阵扔进去相乘)、向量计算单元、标量计算单元 2)控…

一天搞定React(4)——Redux

Hello!大家好,今天带来的是React前端JS库的学习,课程来自黑马的往期课程,具体连接地址我也没有找到,大家可以广搜巡查一下,但是总体来说,这套课程教学质量非常高,每个知识点都有一个…

鸿蒙OpenHarmony Native API【drawing_path.h】 头文件

drawing_path.h Overview Related Modules: [Drawing] Description: 文件中定义了与自定义路径相关的功能函数 Since: 8 Version: 1.0 Summary Functions FunctionDescription[OH_Drawing_PathCreate] (void)[OH_Drawing_Path] * 函数用于创建一个路径对象OH_Drawin…

前端页面:用户交互持续时间跟踪(duration)user-interaction-tracker

引言 在用户至上的时代,精准把握用户行为已成为产品优化的关键。本文将详细介绍 user-interaction-tracker 库,它提供了一种高效的解决方案,用于跟踪用户交互的持续时间,并提升项目埋点的效率。通过本文,你将了解到如…

EXO-chatgpt_api 解释

目录 chatgpt_api 解释 resolve_tinygrad_tokenizer 函数 resolve_tokenizer 函数 调试和日志记录​​​​​​​ 参数 返回值 初始化方法 __init__ 异步方法 注意事项 chatgpt_api 解释 展示了如何在一个项目中组织和导入各种库、模块和类,以及如何进行一些基本的We…

双向链表(C语言版)

1. 双向链表的结构 注意:这里的“带头”跟单链表的“头结点”是两个概念,实际上在单链表阶段称呼不太严谨,但是为了更好地理解就直接称为单链表的头结点。带头链表里的头结点,实际为“哨兵位”,哨兵位结点不存储任何有…

rsync文件远程同步

目录 一、什么是rsync远程同步 二、实操rsync远程文件同步 1、配置rsync同步源 2、客户端部署 3、增量备份​编辑 4、删除文件 5、如何实现免交互登录 6、crontab rsync 实现定时同步 7、使用ssh实现rsync数据同步【☆】 如何使用ssh免交互实现数据同步?…

C++ Map Set的模拟实现

C Map Set的模拟实现 文章目录 前言一、Map 和 Set是什么?1.Set2.Map 二、困难点困难一、set和map中值的类型不同困难二、Map和Set中值不可修改困难三、红黑树中迭代器的和--1.2.- - 困难四、map中[ ] 运算符重载的实现1.修改红黑树以及Map和Set中insert的返回值1.修…

Spring Boot入门指南:轻松构建高效Spring应用(四)

Spring Boot入门指南:轻松构建高效Spring应用(三)-CSDN博客 一.传递参数 7.传递数组 1.在IDEA中写出处理代码 2.打开postman 或者这样:key相同时,也会组成一个数组。 8. 传递集合 如果像数组传参一样传递集合,可能…

Transformer合集

资料 位置编码:https://zhuanlan.zhihu.com/p/454482273 自注意力:https://zhuanlan.zhihu.com/p/455399791 LN:https://zhuanlan.zhihu.com/p/456863215 ResNet:https://zhuanlan.zhihu.com/p/459065530 Subword Tokenizati…

重生之我们在ES顶端相遇第5章-常用字段类型

思维导图 前置 在第4章,我们提到了 keyword(一笔带过)。在本章,我们将介绍 ES 的字段类型。全面的带大家了解 ES 各个字段类型的使用场景。 字段类型 ES 支持以下字段类型(仅介绍开发中常用,更多内容请自…

接口自动化测试框架实战-4-日志方法封装

上一小节我们讲解了文件读写方法的封装方法,本小节我们完成一下框架日志的封装方法。 首先我们讲解一下日志封装和日志记录有哪些用处? 更加方便的设置日志的格式和输出方式全局方法可以各个类/函数中都能统一调用分类记录接口用例执行日志,方便嵌入测试报告错误日志提示,…

乘云数字受邀Zabbix MeetUp济南站,分享《DataBuff在打造可观测性数据底座上的探索》

7月20日,Zabbix主办的MeetUp线下活动在济南圆满举行,众多技术大咖汇集现场,交流技术知识、分享先进的思想。乘云数字受邀参加此次盛宴,创始人兼CEO向成钢在现场发表了关于“DataBuff在打造可观测性数据底座上的探索”的主题演讲。…

【多模态】CLIP-KD: An Empirical Study of CLIP Model Distillation

论文:CLIP-KD: An Empirical Study of CLIP Model Distillation 链接:https://arxiv.org/pdf/2307.12732 CVPR 2024 Introduction Motivation:使用大的Teacher CLIP模型有监督蒸馏小CLIP模型,出发点基于在资源受限的应用中&…

NFTScan 浏览器现已支持 .mint 域名搜索功能!

近日,NFT 数据基础设施 NFTScan 浏览器现已支持用户输入 .mint 域名进行 Mint Blockchain 网络钱包地址的搜索查询, NFTScan 用户能够轻松地使用域名追踪 NFT 交易,为 NFT 钱包地址相关的搜索查询功能增加透明度和便利性。 NFTScan explorer…

C++树形结构(2 树的直径)

目录 1.定义: 2.直径的性质: 3.树的直径求解方法: 4.直径端点求解方法: 朴素方法: 优化方法: 5.例题: 6.直径公共点: 7.例题: 8.去掉再加上: 9.例…

Hi3751V560_SELinux

Hi3751V560_SELinux setenforce Enforcing setenforce Permissive(或“setenforce 0”) getenforce V560:demo本身的: [ 13.765161] type=1400 audit(1628821512.905:4): avc: denied { read } for pid=1926 comm="system_server" name="ifindex" d…

vue3前端开发-小兔鲜项目-图片切换效果和动态class

vue3前端开发-小兔鲜项目-图片切换效果和动态class!这次实现的效果是&#xff0c;图片预览效果&#xff0c;根据小图片&#xff0c;来实时改变大图&#xff08;预览&#xff09;的效果。同时让动态的特征class也跟着显示出来。 <script setup> import {ref} from vue // …