当前位置: 首页 > news >正文

LangChain手记 Question Answer 问答系统

整理并翻译自DeepLearning.AI×LangChain的官方课程:Question Answer(源代码可见)

本节介绍使用LangChian构建文档上的问答系统,可以实现给定一个PDF文档,询问关于文档上出现过的某个信息点,LLM可以给出关于该信息点的详情信息。这种使用方式比较灵活,因为并没有使用PDF上的文本对模型进行训练就可以实现文档上的信息点问答。本节介绍的Chain也比较常用,它涉及到了嵌入(embedding)和向量存储(vector store)。

(笔者注:embedding指的是将一个实体映射到高维空间,以高维向量的形式存储,以最大限度地capture其信息,自然语言处理使用embedding方式表示单词,即词向量。自然语言处理语境下,embedding都指的是word embedding词嵌入)

首先是一个简单的例子:
在这里插入图片描述
在这里插入图片描述
下面解释了一下底层原理:

LLM‘s on Documents 文档上的大语言模型

在这里插入图片描述
由于最大token数限制,LLM最多只能一次性处理几千个token。因而如果有一个文档级别的信息(远大于几千token),LLM没办法直接处理,因而引入词嵌入(embedding)和向量存储(vector store)来解决这个问题

在这里插入图片描述

Embedding 词嵌入

  • 嵌入向量捕捉上下文/含义
  • 相似(指语义相似)内容地文本对应相似的向量

如下图:句子1)和2)语义相似,因而它们的表示向量也相似。
在这里插入图片描述
因而我们可以使用表示向量的相似程度来判定两句话的相似程度,在回答文档上的问题时,先找出和提问相似的信息,作为输入喂给LLM,期望LLM能根据相似信息做出解答。

(笔者注:事实上,LLM内部就是将文本转化为词向量(tokenizer)来处理的,直接以向量形式存储节省了文本到向量的转化步骤。)

Vecotor Database 向量数据库

在这里插入图片描述
在这里插入图片描述
当一个查询输入时,先将其向量化,然后跟向量数据库里面的所有项对比,找出最相似的n项。
在这里插入图片描述
查询结果放入输入的上下文中喂给LLM,得到回复。

下面分步解释过程:
在这里插入图片描述
使用CSVLoader对象loader加载一个csv文件,里面存放了户外服装相关信息,打印第一行信息如上图。

因为文本量比较少,不需要分块,因而可以直接创建embedding,查看一个embedding(其实是一组词向量):
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
上述过程可以使用RetrievalQA chain轻松实现:
在这里插入图片描述
在这里插入图片描述

Stuff method 原材料方法

在这里插入图片描述
原材料是最简单的方法,只需要将所有的原始数据放到prompt中作为上下文喂给语言模型。
优点:只需调用一次LLM。LLM可以一次性访问所有数据。
缺点:LLM有上下文长度,对于大型文档或者多个文档超过上下文长度时无法生效。

additional methods 额外方法

在这里插入图片描述
Map_reduce:将文档每一个块和提问一起输入一个LLM中,汇总所有LLM结果,再使用一个LLM处理拿到最终答案。
(很有效,可以处理任意数量的文档,还可以并行,但很贵,且独立对待每一个文档,即忽略了文档之间的关联性)

在这里插入图片描述
Refine:从一个块和LLM中得到回复之后,再把结果作为下一轮的输出,不断优化到最后一个块,得到最终结果。
(好处时考虑了文档之间的关联性,和map_reduce代价相同)

在这里插入图片描述
Map_rank:处理所有块,给每一个块和LLM的结果打分,选一个分最高的作为最终结果。
(需要LLM有能力给结果打分,和map_reduce代价相同,也没有考虑文档之间的关联性)

相关文章:

LangChain手记 Question Answer 问答系统

整理并翻译自DeepLearning.AILangChain的官方课程:Question Answer(源代码可见) 本节介绍使用LangChian构建文档上的问答系统,可以实现给定一个PDF文档,询问关于文档上出现过的某个信息点,LLM可以给出关于该…...

如何优化css中的一些昂贵属性

如何优化css中的一些昂贵属性 就性能而言,某些 CSS 属性比其他属性的成本更高。如果使用不当,它们可能会减慢我们的网页速度并降低对用户的响应速度。在本文中,我们将探讨一些成本最高的 CSS 属性以及如何优化它们。 box-shadow box-shado…...

基于安防监控EasyCVR视频汇聚融合技术的运输管理系统的分析

一、项目背景 近年来,随着物流行业迅速发展,物流运输费用高、运输过程不透明、货损货差率高、供应链协同能力差等问题不断涌现,严重影响了物流作业效率,市场对于运输管理数字化需求愈发迫切。当前运输行业存在的难题如下&#xf…...

在WordPress站点中展示阅读量等流量分析数据(超详细实现)

这篇文章也可以在我的博客中查看 关于本文 专业的流量统计系统能够相对真实地反应网站的访问情况。 这些数据可以在后台很好地进行分析统计,但有时我们希望在网站前端展示一些数据 最常见的情景就是:展示页面的浏览量 这简单的操作当然也可以通过简单…...

学习 Iterator 迭代器

今天看到一个面试题, 让下面解构赋值成立。 let [a,b] {a:1,b:2} 如果我们直接在浏览器输出这行代码,会直接报错,说是 {a:1,b:2} 不能迭代。 看了es6文档后,具有迭代器的就一下几种类型,没有Object类型,…...

JVM---垃圾回收算法介绍

目录 分代收集理论 三种垃圾回收算法 标记-清除算法(最基础的、基本不用) 标记-复制算法 标记-整理算法 正式因为jvm有了垃圾回收机制,作为java开发者不会去特备关注内存,不像C和C。 优点:开发门槛低、安全 缺点…...

Ubuntu一直卡死的问题(20.04)

Ubuntu一直卡死的问题(18.04)_ubuntu频繁死机_Mr.Yi的博客-CSDN博客 我自己的解决方法: 1、首先强制关机重启后,直接打开命令行查看磁盘的使用: df -h发现/dev/loop都沾满了,我们能需要做的就是把他们清理干净 sud…...

自动化测试用例设计实例

在编写用例之间,笔者再次强调几点编写自动化测试用例的原则: 1、一个脚本是一个完整的场景,从用户登陆操作到用户退出系统关闭浏览器。 2、一个脚本脚本只验证一个功能点,不要试图用户登陆系统后把所有的功能都进行验证再退出系统…...

CSS3基础

CSS3在CSS2的基础上增加了很多功能,如圆角、多背景、透明度、阴影等,以帮助开发人员解决一些实际问题。 1、初次使用CSS 与HTML5一样,CSS3也是一种标识语言,可以使用任意文本编辑器编写代码。下面简单介绍CSS3的基本用法。 1.1…...

【栈】 735. 行星碰撞

735. 行星碰撞 解题思路 如果数组元素大于0 说明向右移动 那么不管 左边元素是不是大于0 都不会碰撞 如果数组元素小于0 说明想左边移动 那么判断左边元素 如果左边元素大于0 碰撞 那么遍历数组 当前元素大于0 直接入栈 如果当前元素小于0 判断栈顶元素是不是大于0 如果大…...

水库大坝安全监测MCU,提升大坝管理效率的利器!

水库大坝作为防洪度汛的重要设施,承担着防洪抗旱,节流发电的重要作用。大坝的安全直接关系到水库的安全和人民群众的生命财产安全。但因为水库大坝的隐患不易被察觉,发现时往往为时已晚。因此,必须加强对大坝的安全管理。其安全监…...

【vue2类型助手】vue2-cli 实现为 vue2 项目中的组件添加全局类型提示

实现 vue2 全局组件提示 vue2 项目全局注册组件直接使用没有提示 由于vue2中使用volar存在很大的性能问题,所以只能继续使用vetur,但是这样全局组件会没有提示,这对于开发来说,体验十分不友好,所以开发此cli并借助ve…...

mysql 索引 区分字符大小写

mysql 建立索引,特别是unique索引,是跟字符集、字符排序规则有关的。 对于utf8mb4_0900_ai_ci来说,0900代表Unicode 9.0的规范,ai表示accent insensitivity,也就是“不区分音调”,而ci表示case insensitiv…...

Stable Diffusion Webui源码剖析

1、关键python依赖 (1)xformers:优化加速方案。它可以对模型进行适当的优化来加速图片生成并降低显存占用。缺点是输出图像不稳定,有可能比不开Xformers略差。 (2)GFPGAN:它是腾讯开源的人脸修…...

为什么kafka 需要 subscribe 的 group.id?我们是否需要使用 commitSync 手动提交偏移量?

目录 一、为什么需要带有 subscribe 的 group.id二、我们需要使用commitSync手动提交偏移量吗?三、如果我想手动提交偏移量,该怎么做? 一、为什么需要带有 subscribe 的 group.id 消费概念: Kafka 使用消费者组的概念来实现主题的…...

什么是Web应用程序防火墙,WAF与其他网络安全工具差异在哪?

一、什么是Web 应用程序防火墙 (WAF) ? WAF软件产品被广泛应用于保护Web应用程序和网站免受威胁或攻击,它通过监控用户、应用程序和其他互联网来源之间的流量,有效防御跨站点伪造、跨站点脚本(XSS攻击)、SQL注入、DDo…...

打家劫舍 II——力扣213

动规 int robrange(vector<int>& nums, int start, int end){int first=nums[start]...

动手学深度学习—卷积神经网络LeNet(代码详解)

1. LeNet LeNet由两个部分组成&#xff1a; 卷积编码器&#xff1a;由两个卷积层组成&#xff1b;全连接层密集块&#xff1a;由三个全连接层组成。 每个卷积块中的基本单元是一个卷积层、一个sigmoid激活函数和平均汇聚层&#xff1b;每个卷积层使用55卷积核和一个sigmoid激…...

腾讯面经总结

最近在准备面试&#xff0c;看了很多大厂的面经&#xff0c;抽空将腾讯面试的题目整理了一下&#xff0c;希望对大家有所帮助~ 一面 1、mysql索引结构&#xff1f; 2、redis持久化策略&#xff1f; 3、zookeeper节点类型说一下&#xff1b; 4、zookeeper选举机制&#xff…...

matlab机器人工具箱基础使用

资料&#xff1a;https://blog.csdn.net/huangjunsheng123/article/details/110630665 用vscode直接看工具箱api代码比较方便&#xff0c;代码说明很多 一、模型设置 1、基础效果 %采用机器人工具箱进行正逆运动学验证 a[0,-0.3,-0.3,0,0,0];%DH参数 d[0.05,0,0,0.06,0.05,…...

在RK3568开发板上搭建NFS服务器:打通ARM与X86文件共享

1. 项目概述&#xff1a;为什么要在RK3568上折腾NFS&#xff1f;手头有一块瑞芯微RK3568的开发板&#xff0c;性能不错&#xff0c;四核A55的架构&#xff0c;跑个轻量级服务器绰绰有余。最近在做一个边缘计算相关的原型验证&#xff0c;需要在开发板和我的主力工作站之间频繁地…...

LEFT JOIN 中 ON 与 WHERE 过滤的差异

在 MySQL 数据库开发中&#xff0c;LEFT JOIN&#xff08;左外连接&#xff09;是一个最常被误用的语法。许多开发者往往习惯性地将所有过滤条件一股脑地往 ON 后面塞&#xff0c;或者为了排版好看将条件全部扔到 WREHRE 里面。 这种模糊的逻辑在普通内连接&#xff08;INNER J…...

Navicat密码忘了别慌!手把手教你用Java小工具找回(支持15/16版本)

Navicat密码找回实战指南&#xff1a;零基础也能操作的Java解密方案 上周五凌晨两点&#xff0c;李工程师在部署紧急热修复时突然发现——Navicat里保存的生产数据库密码居然记不清了。这个场景对于经常需要管理多个数据库连接的开发者来说并不陌生。本文将详细介绍一套经过验证…...

无监督聚类挖掘声音语义:从音乐描述文本发现认知规律

1. 这不是传统聚类&#xff0c;而是一场对“声音语言”的考古式挖掘你有没有试过听一首歌&#xff0c;然后被某段音色击中——那种“像融化的玻璃糖纸裹着雨滴坠落”的感觉&#xff1f;或者在音乐评论区刷到“低频像沉入深海的青铜钟”“人声有未拆封的羊皮纸质感”这类描述&am…...

保姆级教程:用UltraISO给U盘刻录Ubuntu 22.04启动盘,一次成功不踩坑

零基础实战&#xff1a;用UltraISO打造Ubuntu 22.04启动盘的终极指南 第一次接触Linux系统安装的新手&#xff0c;往往会在制作启动盘这一步遇到各种意想不到的问题。U盘明明已经刻录完成&#xff0c;却在启动时出现黑屏、报错甚至根本无法识别——这些困扰过无数初学者的坑&am…...

ComfyUI全面掌握-知识点详解——ComfyUI 开发与扩展基础(开发指南+环境搭建)

本文为「ComfyUI 全面掌握」系列第 23 篇&#xff0c;是高阶进阶章节的第一篇知识点详解博客。作为开发系列的起点&#xff0c;本文将带你系统了解 ComfyUI 社区贡献流程&#xff0c;并手把手搭建完整的自定义节点开发环境&#xff0c;为后续的节点开发与发布奠定坚实的技术基础…...

基于LSTM的无人艇波浪方向估计:从时序预测到工程实践

1. 项目概述&#xff1a;当无人艇“学会”感知海浪在海洋工程和无人系统领域&#xff0c;让机器“感知”并“理解”它所处的海洋环境&#xff0c;尤其是波浪的动态特性&#xff0c;一直是个核心挑战。想象一下&#xff0c;你驾驶一艘小船&#xff0c;如果能提前几秒甚至更久“预…...

手写NumPy版RBM:从能量函数到吉布斯采样的可调试实现

1. 项目概述&#xff1a;这不是又一个“RBM扫盲帖”&#xff0c;而是一次亲手拆解神经网络祖师爷级模型的实操复盘Restricted Boltzmann Machine&#xff08;受限玻尔兹曼机&#xff09;&#xff0c;简称RBM&#xff0c;不是教科书里那个被反复引用却没人真去跑通的抽象符号&am…...

UE5下载安装避坑指南:硬件驱动、VS环境与版本管理实战

1. 这不是“点几下就能好”的安装&#xff0c;而是UE5项目生命周期的第一次关键决策很多人点开Epic Games Launcher&#xff0c;看到那个醒目的“Install”按钮&#xff0c;下意识就点了下去——结果十分钟后卡在98%&#xff0c;或者装完打开编辑器直接报错“Failed to load mo…...

开源鸿蒙OpenHarmony在微纳卫星上的航天级改造与应用实践

1. 项目概述&#xff1a;当开源鸿蒙“遇见”微纳卫星最近在航天圈里有个挺有意思的事儿&#xff0c;开源鸿蒙OpenHarmony系统&#xff0c;就是咱们手机、平板上那个鸿蒙系统的开源版本&#xff0c;现在已经成功“上天”了。这事儿不是概念验证&#xff0c;而是实打实地应用在了…...