LLM 系列 | 15:如何用LangChain做长文档问答?

简介

西塞山前白鹭飞,桃花流水鳜鱼肥。
在这里插入图片描述
小伙伴们好,我是微信公众号《小窗幽记机器学习》的小编:卖酱猪蹄的小女孩。今天新开一个专题:LangChain实践。前文ChatGPT Prompt 工程和应用系列文章可以如下自取,预告一下该系列还有2篇小作文,后续补下。

  • 04:ChatGPT Prompt编写指南
  • 05:如何优化ChatGPT Prompt?
  • 06:ChatGPT Prompt实践:文本摘要&推断&转换
  • 07:ChatGPT Prompt实践:以智能客服邮件为例
  • 08:ChatGPT Prompt实践:如何用ChatGPT构建点餐机器人?
  • 09:基于ChatGPT构建智能客服系统(query分类&安全审核&防注入)
  • 10:如何编写思维链Prompt?以智能客服为例
  • 11:LangChain危矣?亲测ChatGPT函数调用功能:以天气问答为例
  • 12:实测OpenAI函数调用功能:以数据库问答为例
  • 13:如何链接多个Prompt处理复杂任务?以智能客服为例(附完整代码)
  • 14:构建端到端智能客服(附完整代码)

本文作为LangChain专题的开篇,以长文档问答为例介绍如何使用LangChain。完整代码请在微信公众号:小窗幽记机器学习上添加小编微信。

加载数据

本次测试数据来源于百度百科上画江湖之不良人的词条数据,并以pdf格式保存到本地(右键->打印->另存为pdf)。

在这里插入图片描述

# load document
from langchain.document_loaders import PyPDFLoader
loader = PyPDFLoader("test_data.pdf")
documents = loader.load()

补充说下,如果是多个文档可以如下类似方式进行加载:

loaders = [....]
documents = []
for loader in loaders:documents.extend(loader.load())

短文本问答

load_qa_chain是LangChain中最通用的问答接口,用户可以对输入的文档进行问答。需要注意:load_qa_chain默认使用文档中的全部文本。如果将整个文档全部输入的话,可能会报错,所以本章节先只将带有答案的文档页面输入,后文补充介绍如何做整个文档的问答。

text-davinci-003

以下使用text-davinci-003模型(该模型是OpenAI接口的默认模型)进行问答:

from langchain.chains.question_answering import load_qa_chain
llm = OpenAI() # model_name="text-davinci-003"
chain = load_qa_chain(llm=llm)
query = "李星云会哪些武功?"
chain.run(input_documents=documents[1:2], question=query)

输出结果如下:

' Li Xingyun can perform the following martial arts techniques: Qinglian Sword Song, Huayang Needle Method, and Longquan Seven Star Scripture.'

可以看出,回答的内容是正确的。如果想要以中文形式回答,可以通过设计Prompt作为额外输入。

ChatGPT

改用ChatGPT模型进行问答:

from langchain.chains.question_answering import load_qa_chain
model_name = "gpt-3.5-turbo"
llm = OpenAI(model_name=model_name, temperature=0)
chain = load_qa_chain(llm=llm)
query = "李星云会哪些武功?"
chain.run(input_documents=documents[1:2], question=query)

输出结果如下:

'李星云的武功包括青莲剑歌、华阳针法、龙泉七星诀。'

与原文查找确认相同:

在这里插入图片描述

长文档问答

以上通过人工指定候选文本范围,但真实场景我们希望基于全部文档自动搜索答案。

向量召回

为此,改变思路先进行召回,缩小文档范围:

from langchain.embeddings.openai import OpenAIEmbeddings
from langchain.text_splitter import CharacterTextSplitter
from langchain.vectorstores import Chromatext_splitter = CharacterTextSplitter(chunk_size=1000, chunk_overlap=0)
texts = text_splitter.split_documents(documents)embeddings = OpenAIEmbeddings() # 默认的model="text-embedding-ada-002"
docsearch = Chroma.from_documents(texts, embeddings, metadatas=[{"source": str(i)} for i in range(len(texts))]).as_retriever()
# 可以在 as_retriever 指定参数 search_kwargs={"k": 1},从而实现Top K的召回
query = "李星云会哪些武功?"
docs = docsearch.get_relevant_documents(query)
print("docs len=", len(docs))

为此,召回了4个docs片段。

text-davinci-003

from langchain.chains.question_answering import load_qa_chainllm = OpenAI(temperature=0)chain = load_qa_chain(llm=llm, chain_type="map_reduce")
query = "李星云会哪些武功?"
chain.run(input_documents=docs, question=query)

运行结果如下:

" Li Xingyun's martial arts include the Qinglian Sword Song, the Shock Rainbow, the Zhisheng Qiankun Gong, the Five Thunder Heart Sutra, and the Illusion Sound Sutra. He also wields the Suxin Sword."

可以看出,回复内容多数是胡说八道,比如竟然出现"至圣乾坤功"和"五雷天心诀"。效果整体比较差。以下将QA部分的模型更换为ChatGPT。

ChatGPT

from langchain.chains.question_answering import load_qa_chainmodel_name = "gpt-3.5-turbo-16k"
llm = OpenAI(model_name=model_name, temperature=0)chain = load_qa_chain(llm=llm)
query = "李星云会哪些武功?"
chain.run(input_documents=docs, question=query)

输出结果如下:

'李星云会青莲剑歌、惊虹、天罡诀、华阳针法等武功。'

可以看出,这种召回+ChatGPT的方式容易受到召回数据的干扰。所以,这种方式很大程度上依赖于召回阶段的质量,特别是当上述问题的答案分布于多处的情况。

综合整个长文档,其实上述答案其实很接近真实的答案,但是玩了一个trick:用等武功这类话术。其实还缺了了一个龙泉七星诀

小结

今天这篇小作文作为LangChain实践专题的首篇,主要介绍如何基于load_qa_chain接口做长文档问答。后续会持续介绍其他的问答接口和其他的向量化方案,感兴趣的小伙伴们可以留意关注下。

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

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

相关文章

找出1-1000中的所有完美数

再次练习查找完美数,找出 1-1000 中的所有完美数。 【学习的细节是欢悦的历程】 Python 官网:https://www.python.org/ Free:大咖免费“圣经”教程《 python 完全自学教程》,不仅仅是基础那么简单…… 地址:https://l…

三元操作 三元操作符 if-else / ? :

Python 三元操作符 if-else , 其他语言三元操操作符 ? : ;“三元操作”语句,她也就是一个表达式。 【学习的细节是欢悦的历程】 Python 官网:https://www.python.org/ Free:大咖免费“圣经”教程《 python 完全自学教…

document-question-answering-bot(文档问答机器人)

任务说明: https://wiki.deepin.org 上有900多条deepin系统相关的中文教程和词条,请编写能根据这些内容回答问题的中文聊天机器人。使用者通过命令行界面输入问题,机器人输出回答和参考的wiki文档的链接。 聊天机器人要能根据 deepin wiki …

IOS真机调试、发布TestFlight等流程

IOS真机调试、发布TestFlight等流程 1、真机调试步骤 使用最新版本的xcode 14 可以简单的进行真机调试,不需要添加钥匙串之类的。 1、在Xcode -> Preferences -> Accounts 中添加苹果ID 2、创建你的项目,在Bundle Identifier中填写项目Identifie…

ChatGPT/InstructGPT论文(二)

一. 导读 第一篇解读:ChatGPT/InstructGPT论文(一) 继ChatGPT大火后,越来越多人想了解ChatGPT相关技术。OpenAI官网虽然没有给出ChatGPT足够详细的信息,但给出了一篇推荐阅读论文InstructGPT,经过对比&…

2023了,学习深度学习框架哪个比较好?

PPT、视频和对应的文章免费开源在:https://chenzomi12.github.io/ 都2023年,才来回答这个问题,自然毫无悬念地选择PyTorch,TensorFlow在大模型这一波浪潮中没有起死回生,有点惋惜,现在GLM、GPT、LLaMA等各种…

【ChatGPT】人工智能发展的背后厉害:跌宕起伏的近百年

文章目录 前言一、麦卡洛克-皮特斯神经元二、赫布式学习三、感知机四、反向传播算法五、卷积神经网络六、递归神经网络七、通用计算GPU芯片八.生成式神经网络与大型语言模型总结 前言 今天,ChatGPT等大型语言预训练神经网络模型已经成为广为人知的名字,…

ChatGPT又添劲敌?OpenAI核心员工创业,新模型获一片叫好

关注并星标 从此不迷路 计算机视觉研究院 公众号ID|ComputerVisionGzq 学习群|扫码在主页获取加入方式 计算机视觉研究院专栏 作者:Edison_G 在 ChatGPT 巨人的肩膀上又有了改进。 转自《机器之心》 ChatGPT 给 AI 领域带来的变革&#xff0c…

aigc分享

AIGC技术分享 AIGC概述 AIGC的概念、应用场景和发展历程https://36kr.com/p/2135547607286144 ppt https://36kr.com/p/2243237713604482 机器学习基础 机器学习的基本概念、分类和常用算法,如线性回归、决策树、支持向量机、神经网络等。 深度学习基础 深度学…

【倒计时2天】CCIG文档图像智能分析与处理论坛开启直播预约,共探智能文档处理前沿技术

文档是人们在日常生活、工作中产生的信息的重要载体,各领域从业者几乎每天都要与金融票据、商业规划、财务报表、会议记录、合同、简历、采购订单等文档“打交道”。让计算机具备阅读、理解和解释这些文档图像的能力,在智能金融、智能办公、电子商务等许…

Chatgpt-plus帮我写的Python教程

Chatgpt-plus帮我写的Python教程 昨天急不可耐的开通了Chatgpt plus,就想着赶快试用下,不得不说真的强大!,现在还只是gpt4模型,不知道gpt5模型出来会变成什么样子,下面是gpt花了三分钟帮我写的教程&#x…

程序员与chatgpt的碰撞

背景:生产环境要复制一条数据,并修改指定字段且id要自增 ChatGPT是一款非常出色的聊天机器人,它使用了最先进的自然语言处理技术,可以与人类进行自然的对话。它可以回答各种问题,包括一般的知识问题、天气、新闻、娱乐…

AI掌绘艺术:揭秘Stable Diffusion华美图韵背后那些提示词的秘密

开篇 好了好了,我知道这个标题有点大,大得像我妈的锅一样。但是,我保证,当你读完这篇文章后,你不仅会明白我为什么敢用这样的标题,而且你也会想试试宝贵的AI画画方法。 首先,我要说&#xff0…

ChatGPT背后的开源AI框架Ray,现在值10亿美元

机器之心报道 编辑:泽南、小舟 Ray 被 OpenAI、亚马逊等科技公司用来开发大模型,是最近异军突起的框架。 最近一段时间,文本生成的人工智能在互联网上掀起了一阵风暴:ChatGPT 因为可以对人们能想到的几乎任何问题提供非常详细、近…

ChatGPT背后的故事和秘密是什么?

大家好。近期,德国一家公司在公司内部暂停了使用人工智能应用ChatGPT,原因竟然是担心其可能会泄露敏感数据。这则消息引发了广泛的关注和探讨,下面我们来了解其中的详情吧! 首先,让我们了解一下ChatGPT是什么。ChatGP…

【阿里云】第一次进行域名注册、备案以及使用全过程

前言 随着ChatGPT的爆火,让我直面感受到了一项技术的突破可以产生堪比原子弹爆炸的威力,因而在品尝过ChatGPT带来的便利与甜头后,就一直在跟进,同时也在能力范围内,让数十位朋友使用上了ChatGPT 前段时间&#xff0c…

【AI提示】ChatGPT提示工程课程(吴恩达OpenAI)转换文本(中文chatgpt版)

设置 翻译 通用翻译器 语调变换 格式转换 拼写检查/语法检查。 转换 在本笔记中,我们将探索如何使用大型语言模型进行文本转换任务,例如语言翻译、拼写和语法检查、语气调整和格式转换。 设置 import openai import osfrom dotenv import load_dotenv, f…

ChatGPT游戏领域的创新助手|小智ai

ChatGPT丨小智ai丨chatgpt丨人工智能丨OpenAI丨聊天机器人丨AI语音助手丨GPT-3.5丨开源AI平台 导语: ChatGPT(Chat Generative Pre-trained Transformer)作为一种先进的自然语言处理模型,不仅在对话领域取得了突破,而且…

用ChatGPT控制NPC,行动逼真到像正常人!斯坦福谷歌新研究炸场,赋予大模型准确记忆力...

萧箫 发自 凹非寺量子位 | 公众号 QbitAI 放任25个AI共同生活,他们竟然模拟起了人类的行动! 不仅像人一样起床、刷牙、吃饭、睡觉,还会被迫“出门打工”,甚至在闲暇时分一起庆祝节日。 这一切,来自斯坦福和谷歌的一项新…

ChatGPT背后的技术和多模态异构数据处理的未来展望——我与一位资深工程师的走心探讨

上周,我和一位从业三十余年的工程师聊到ChatGPT。 作为一名人工智能领域研究者,我也一直对对话式大型语言模型非常感兴趣,在讨论中,我向他解释这个技术时,他瞬间被其中惊人之处所吸引🙌,我们深…