tnblog
首页
视频
资源
登录

LangChain 一个完整的例子

3026人阅读 2023/10/5 17:08 总访问:3505502 评论:0 收藏:0 手机
分类: .net后台框架

LangChain 一个完整的例子

简介


这是该 LangChain 极简入门系列的最后一讲。我们将利用过去9讲学习的知识,来完成一个具备完整功能集的LLM应用。该应用基于 LangChain 框架,以某 PDF 文件的内容为知识库,提供给用户基于该文件内容的问答能力。

我们利用 LangChain 的QA chain,结合 Chroma 来实现PDF文档的语义化搜索。示例代码所引用的是AWS Serverless
Developer Guide
,该PDF文档共84页。

安装必要的 Python

  1. !pip install -q langchain==0.0.235 openai chromadb pymupdf tiktoken

设置OpenAI环境

  1. import os
  2. os.environ['OPENAI_API_KEY'] = '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'

下载PDF文件AWS Serverless Developer Guide

  1. !wget https://docs.aws.amazon.com/pdfs/serverless/latest/devguide/serverless-core.pdf
  2. PDF_NAME = 'serverless-core.pdf'

加载PDF文件

  1. from langchain.document_loaders import PyMuPDFLoader
  2. docs = PyMuPDFLoader(PDF_NAME).load()
  3. print (f'There are {len(docs)} document(s) in {PDF_NAME}.')
  4. print (f'There are {len(docs[0].page_content)} characters in the first page of your document.')


拆分文档并存储文本嵌入的向量数据

  1. from langchain.embeddings.openai import OpenAIEmbeddings
  2. from langchain.text_splitter import RecursiveCharacterTextSplitter
  3. from langchain.vectorstores import Chroma
  4. text_splitter = RecursiveCharacterTextSplitter(chunk_size=1000, chunk_overlap=200)
  5. split_docs = text_splitter.split_documents(docs)
  6. embeddings = OpenAIEmbeddings()
  7. vectorstore = Chroma.from_documents(split_docs, embeddings, collection_name="serverless_guide")

基于OpenAI创建QA链

  1. from langchain.llms import OpenAI
  2. from langchain.chains.question_answering import load_qa_chain
  3. llm = OpenAI(temperature=0)
  4. chain = load_qa_chain(llm, chain_type="stuff")

基于提问,进行相似性查询

  1. query = "What is the use case of AWS Serverless?"
  2. similar_docs = vectorstore.similarity_search(query, 3, include_metadata=True)

基于相关文档,利用QA链完成回答

  1. chain.run(input_documents=similar_docs, question=query)


欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739

评价

LangChain 简单应用(学习笔记)

LangChain 简单应用(学习笔记)[TOC] Langchain 简介大型语言模型(LLM)正在成为一种具有变革性的技术,使开发人员能够构...

LangChain 模型(学习笔记)

LangChain 模型(学习笔记)[TOC] Langchain 模型简介Langchain所封装的模型分为两类:——大语言模型 (LLM)——聊天模型 (C...

LangChain 数据连接(学习笔记)

LangChain 数据连接(学习笔记)[TOC] 什么是数据连接?LLM应用往往需要用户特定的数据,而这些数据并不属于模型的训练集。L...

LangChain 提示词(学习笔记)

LangChain 提示词(学习笔记)[TOC] 什么是提示词?提示词(Prompt)是指向模型提供的输入。这个输入通常由多个元素构成。La...

LangChain 输出解析器(学习笔记)

LangChain 输出解析器(学习笔记)[TOC] 简介LLM的输出为文本,但在程序中除了显示文本,可能希望获得更结构化的数据。这就...

LangChain 链(学习笔记)

LangChain 链(学习笔记)[TOC] 单一的LLM对于简单的应用场景已经足够,但是更复杂的应用程序需要将LLM串联在一起,需要多LL...

LangChain 记忆组件(学习笔记)

LangChain 记忆组件(学习笔记)[TOC] 单一的LLM对于简单的应用场景已经足够,但是更复杂的应用程序需要将LLM串联在一起,需...

LangChain 代理 Agent(学习笔记)

LangChain 代理 Agent(学习笔记)[TOC] 简介Agent 也就是代理,它的核心思想是利用一个语言模型来选择一系列要执行的动作。...

LangChain 回调 (Callback)

LangChain 回调 (Callback)[TOC] 简介Callback 是 LangChain 提供的回调机制,允许我们在 LLM 应用程序的各个阶段使用 Hoo...
这一世以无限游戏为使命!
排名
2
文章
640
粉丝
44
评论
93
docker中Sware集群与service
尘叶心繁 : 想学呀!我教你呀
一个bug让程序员走上法庭 索赔金额达400亿日元
叼着奶瓶逛酒吧 : 所以说做程序员也要懂点法律知识
.net core 塑形资源
剑轩 : 收藏收藏
映射AutoMapper
剑轩 : 好是好,这个对效率影响大不大哇,效率高不高
ASP.NET Core 服务注册生命周期
剑轩 : http://www.tnblog.net/aojiancc2/article/details/167
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术