前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >LangChain手记 Question Answer 问答系统

LangChain手记 Question Answer 问答系统

作者头像
Steve Wang
发布2023-10-12 09:41:38
3010
发布2023-10-12 09:41:38
举报
文章被收录于专栏:从流域到海域从流域到海域

整理并翻译自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代价相同,也没有考虑文档之间的关联性)

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023-08-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • LLM‘s on Documents 文档上的大语言模型
  • Embedding 词嵌入
  • Vecotor Database 向量数据库
  • Stuff method 原材料方法
  • additional methods 额外方法
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档