使用大语言模型集成工具 LangChain 创建自己的论文汇总和查询工具

这篇具有很好参考价值的文章主要介绍了使用大语言模型集成工具 LangChain 创建自己的论文汇总和查询工具。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Langchain可以帮助开发人员构建由大型语言模型(llm)支持的应用程序。它提供一个框架将LLM与其他数据源(如互联网或个人文件)连接起来。这允许开发人员将多个命令链接在一起,以创建更复杂的应用程序。包括最近比较火爆的AutoGPT等都是使用了Langchain框架进行开发的。所以本文将介绍如何使用LangChain来创建我们自己的论文汇总工具。

使用大语言模型集成工具 LangChain 创建自己的论文汇总和查询工具

LangChain的基本使用方法

我们先了解LangChain的基本使用情况,所以这里使用HuggingFace为例,介绍LangChain最基本的用法。

1、整合transformer

 from langchain import PromptTemplate, HuggingFaceHub, LLMChain
 from langchain.embeddings import HuggingFaceEmbeddings
 from langchain.indexes import VectorstoreIndexCreator
 from langchain.callbacks.base import CallbackManager
 from langchain.callbacks.streaming_stdout import StreamingStdOutCallbackHandler
 from langchain.chains.qa_with_sources import load_qa_with_sources_chain
 from langchain.document_loaders import DirectoryLoader
 from langchain.text_splitter import RecursiveCharacterTextSplitter
 from langchain.vectorstores import FAISS
 from huggface_hub import hf_hub_download
 import textwrap
 import glob

这里需要HuggingFace的API key,如果你没有也不要紧,因为后面我们会使用OPEN AI的API,这里只是介绍基本功能

 HUGGING_FACE_API_KEY = "hf_...."

然后就可以为我们的问答模型创建一个提示的模板。这是传递给问答模型的默认模板,其中包含一个包含问题的变量。例如:

 template = """ You are going to be my assistant.
 Please try to give me the most beneficial answers to my
 question with reasoning for why they are correct.
 
  Question: {input} Answer: """
 prompt = PromptTemplate(template=template, input_variables=["input"])

从Huggingface加载模型。我们以facebook/mbart-large-50为例

 model = HuggingFaceHub(repo_id="facebook/mbart-large-50",
                        model_kwargs={"temperature": 0, "max_length":200},
                        huggingfacehub_api_token=HUGGING_FACE_API_KEY)
 chain = LLMChain(prompt=prompt, llm=model)

temperature表示输出的随机性程度。max_length则为我们令牌的最大长度

现在就可以载入模型:

 hf_embeddings = HuggingFaceEmbeddings(model_name='sentence-transformers/all-MiniLM-L6-v2')

2、创建langchain索引

Langhchain支持多种数据加载器和多种数据格式,需要通过它的数据加载器将我们的数据集加载并且放入索引中:

 my_loader = DirectoryLoader('my_data', glob='**/*.txt')
 docs = my_loader.load()
 text_split = RecursiveCharacterTextSplitter(chunk_size = 700, chunk_overlap = 0)
 text = text_split.split_documents(docs)

Langchain支持很多类型的矢量存储,每个向量中的值表示相应文档中每个术语的重要性或频率。这种表示允许通过测量向量之间的余弦相似度来轻松计算文档相似度。

向量存储通常用于信息检索系统和自然语言处理任务,如文档分类、搜索引擎和推荐系统。它们还可以用于主题建模和集群等任务。

这个示例将使用FAISS (Facebook AI相似度搜索),这是一个用于高效相似度搜索和密集向量聚类的开源库。它用于构建大规模的向量数据库,可以通过查询来检索与给定查询向量最相似的向量。

在FAISS矢量数据库中,每个矢量都表示为高维空间中的一个点。可以使用不同的索引方法对向量进行快速最近邻搜索,例如IVF、HNSW和PQ。FAISS还支持用于计算相似度的各种距离度量,例如L2、内积和余弦相似度。

 vectorstore = FAISS.from_documents(text, hf_embeddings)

3、提问

然后我们就可以创建最有趣的部分,问答(QA) LLM链。因为我们希望能够检查答案的来源,所以可以使用“load_qa_with_sources_chain”:

 my_chain = load_qa_with_sources_chain(model, chain_type="refine")
 query = "Any question that you want to ask the model"
 documents = vectorstore.similarity_search(query)
 result = with_sources_chain({"input_documents": documents, "question": query})

这样在result变量中就能获得我们问题的答案了。

以上就是LangChain的基本使用方法,下面我们来将他与OpenAI金正整合,创建一个我们自己的项目。

论文汇总和查询

langchain里面包含了很多实用的工具,比如pdf文件的读取,openai API的对接,所以我们可以直接拿来使用:

 from langchain.chains.summarize import load_summarize_chain
 from langchain.document_loaders import PyPDFLoader
 from langchain import OpenAI, PromptTemplate
 import glob

然后就可以通过OpenAI对象来与openai的API进行对接:

 llm = OpenAI(temperature=0.2)

PyPDFLoader对象已经为我们封装好了PDF的操作,所以可以直接使用,这里我们遍历目录,读取目录中的所有文件进行操作:

 def summarize_pdfs_from_folder(pdfs_folder):
     summaries = []
     for pdf_file in glob.glob(pdfs_folder + "/*.pdf"):
         loader = PyPDFLoader(pdf_file)
         docs = loader.load_and_split()
         chain = load_summarize_chain(llm, chain_type="map_reduce")
         summary = chain.run(docs)
         print("Summary for: ", pdf_file)
         print(summary)
         print("\n")
         summaries.append(summary)
     
     return summaries

将摘要保存为文本文件:

 with open("summaries.txt", "w") as f:
     for summary in summaries:
         f.write(summary + "\n"*3)

然后使用VectorStoreIndexCreator来对摘要进行索引:

 from langchain.indexes import VectorstoreIndexCreator
 from langchain.document_loaders import PyPDFDirectoryLoader
 loader = PyPDFDirectoryLoader("./pdfs/")
 
 docs = loader.load()
 index = VectorstoreIndexCreator().from_loaders([loader])

索引创建完成后就可以查询了:

 query = "What is the core idea behind the CoOP (context optimization) paper?"
 index.query(query)
 
 # Output
 # " The core idea behind the CoOP paper is to model 
 # a prompt's context words with learnable vectors 
 # while keeping the entire pre-trained parameters fixed, 
 # in order to adapt CLIP-like vision-language models for 
 # downstream image recognition tasks."

或者:

 query = "What is the central idea that can allow for scaling transformers to 1 million tokens?"
 
 index.query(query)
 
 # Output
 # ' The central idea is to use the Recurrent Memory Transformer (RMT) architecture to extend the context length of BERT, allowing it to store and process both local and global information across up to 2 million tokens.'

看样子还不错。

总结

使用LangChain来总结和查询研究论文非常的简单,LangChain很容易使用,也很容易学习。我们可以通过它来完成我们自己的自定义任务,这个论文汇总的代码在这里:

https://avoid.overfit.cn/post/72755915e57545dfa6673c1c4335ef0b

如果你测试可以直接下载来使用。文章来源地址https://www.toymoban.com/news/detail-454897.html

到了这里,关于使用大语言模型集成工具 LangChain 创建自己的论文汇总和查询工具的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Langchain-Chatchat大语言模型本地知识库的踩坑、部署、使用

    Langchain-Chatchat是一个基于ChatGLM大语言模型与Langchain应用框架实现,开源、可离线部署的检索增强生成(RAG)大模型的本地知识库问答应用项目。 GitHub: https://github.com/chatchat-space/Langchain-Chatchat 本项目实现原理如下图所示,过程包括加载文件 - 读取文本 - 文本分割 - 文本向量化

    2024年02月04日
    浏览(70)
  • LangChain 本地化方案 - 使用 ChatYuan-large-v2 作为 LLM 大语言模型

    ChatYuan-large-v2 是一个开源的支持中英双语的功能型对话语言大模型,与其他 LLM 不同的是模型十分轻量化,并且在轻量化的同时效果相对还不错,仅仅通过 0.7B 参数量就可以实现 10B 模型的基础效果,正是其如此的轻量级,使其可以在普通显卡、 CPU 、甚至手机上进行推理,而

    2024年02月16日
    浏览(47)
  • 自然语言处理从入门到应用——LangChain:模型(Models)-[聊天模型(Chat Models):使用少量示例和响应流式传输]

    分类目录:《大模型从入门到应用》总目录 LangChain系列文章: 基础知识 快速入门 安装与环境配置 链(Chains)、代理(Agent:)和记忆(Memory) 快速开发聊天模型 模型(Models) 基础知识 大型语言模型(LLMs) 基础知识 LLM的异步API、自定义LLM包装器、虚假LLM和人类输入LLM(

    2024年02月15日
    浏览(56)
  • 使用Java和ChatGPT Api来创建自己的大模型聊天机器人

    什么是大模型? 大型语言模型(LLM)是一种深度学习模型,它使用大量数据进行预训练,并能够通过提示工程解决各种下游任务。LLM 的出发点是建立一个适用于自然语言处理的基础模型,通过预训练和提示工程的方式实现模型在新的数据分布和任务上的强大泛化能力。LLM 旨

    2024年02月12日
    浏览(47)
  • 【架构实战】如何通过 langchain 把LLM大模型能力集成到企业应用中?

    本文为您提供关于如何通过 langchain 把 LLM 大模型能力集成到企业应用中的详细实践指南。在本文中,我将简要介绍 LLM 模型及其能力,并提供一种基于 langchain 的解决方案,以便企业可以将 LLM 模型集成到其应用程序中。 LLM(Language Model)是一种基于深度学习的语言模型,它可

    2024年02月07日
    浏览(41)
  • 逐步攻略:使用Matlab音频系统工具箱创建自己的VST插件,让音乐编程在Nashville崭新绽放

    尊敬的读者,欢迎阅读这篇文章。我作为一个热爱音乐和编程的人,十分激动地在这里和大家分享我最近的一次学习经验。正如标题所述,我们将探索一种崭新的方式来创建 VST 插件,即使用 Matlab 音频系统工具箱。这篇文章也许对于那些像我一样在音乐和编程的交叉点上寻找

    2024年02月09日
    浏览(48)
  • 为集成LLM到测试平台提供更便捷的方式:为讯飞的LLM星火创建接入LangChain类(全部源代码)

    为集成LLM到测试平台提供更便捷的方式:为讯飞的LLM星火创建接入LangChain类(全部源代码) LangChain是一个强大的框架,旨在帮助开发人员使用语言模型构建端到端的应用程序。它提供了一套工具、组件和接口,可简化创建由大型语言模型 (LLM) 和聊天模型提供支持的应用程序

    2024年02月06日
    浏览(51)
  • Matlab机械臂建模:机器人工具箱的使用&&导入自己的机械臂模型

            本文主要介绍 如何在matlab中建立机械臂模型( 前提要下载了Robotics Toolbox机器人工具箱~ ),并进行基于正逆运动学计算的轨迹运动 。对于已有的Solidworks机械臂三维模型,如何导入Matlab,并对其进行运动控制。         关于 机器人工具箱的安装 及函数的详细

    2024年02月07日
    浏览(54)
  • 【AI工具】 一款多SOTA模型集成的高精度自动标注工具(直接安装使用,附源码)

    高精度自动标注工具简介及其特性 标注工具的安装 开启自动标注 X-AnyLabeling 是一款全新的交互式自动标注工具,其基于AnyLabeling进行构建和二次开发,在此基础上扩展并支持了许多的模型和功能,并借助Segment Anything和YOLO等主流模型提供强大的 AI 支持。无须任何复杂配置,下

    2024年02月08日
    浏览(45)
  • chatglm2-6b模型在9n-triton中部署并集成至langchain实践

    近期, ChatGLM-6B 的第二代版本ChatGLM2-6B已经正式发布,引入了如下新特性: ①. 基座模型升级,性能更强大,在中文C-Eval榜单中,以51.7分位列第6; ②. 支持8K-32k的上下文; ③. 推理性能提升了42%; ④. 对学术研究完全开放,允许申请商用授权。 目前大多数部署方案采用的是

    2024年02月12日
    浏览(80)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包