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

淄川区建设局网站中学网站建设方案 分校区

淄川区建设局网站,中学网站建设方案 分校区,做网站的都改行做什么了,网站页面多大LangChain是一个基于大语言模型#xff08;如ChatGPT#xff09;用于构建端到端语言模型应用的 Python 框架。它提供了一套工具、组件和接口#xff0c;可简化创建由大型语言模型 (LLM) 和聊天模型提供支持的应用程序的过程。LangChain 可以轻松管理与语言模型的交互#x… LangChain是一个基于大语言模型如ChatGPT用于构建端到端语言模型应用的 Python 框架。它提供了一套工具、组件和接口可简化创建由大型语言模型 (LLM) 和聊天模型提供支持的应用程序的过程。LangChain 可以轻松管理与语言模型的交互将多个组件链接在一起以便在不同的应用程序中使用。 今天我们来学习DeepLearning.AI的在线课程:LangChain for LLM Application Development的第四门课QA over Documents也就是对文档进行问答。根据Langchain官方文档的说明针对文档的问答包括五个步骤 创建文档加载器Loder创建索引(index)从该索引创建一个检索器(retriever)创建问答链chain对文档进行提问 创建文档加载器Loder 在对文档进行问答之前我们需要做一些基础性工作比如设置openai的api key以及langchain所需要的一些关于文档文档的基础库下面我们导入本地环境配置文件.env, 在.env文件中我们存放了opai的api key  import os import pandas as pd from langchain.chains import RetrievalQA from langchain.chat_models import ChatOpenAI from langchain.document_loaders import CSVLoader from langchain.embeddings import OpenAIEmbeddings from langchain.vectorstores import DocArrayInMemorySearch from IPython.display import display, Markdownfrom dotenv import load_dotenv, find_dotenv _ load_dotenv(find_dotenv()) # read local .env file 今天我们需要实验的对象是一个csv文件我们要对这个csv文档的内容进行问答下面我们先导入该csv文件 dfpd.read_csv(OutdoorClothingCatalog_1000.csv)df 该文档主要包含2列name和description,其中name表示商品的名称,description表示该商品的说明信息下面我们查看一下其中的某个商品信息 print(df[10:11].name.values[0]) print() print(df[10:11].description.values[0]) 下面我们将该商品的信息翻译成中文这样便于大家理解 要实现对文档内容的问答我们首先需要创建一个文档的加载器Loader,这里因为是csv文件所以我们需要创建一个CSVLoader file OutdoorClothingCatalog_1000.csv loader CSVLoader(file_pathfile)创建索引(index) 创建了文档加载器loder以后我们需要创建一个用于检索文档内容的索引器这里我们需要指定指定一个向量数据库我们使用DocArrayInMemorySearch作为向量数据库DocArrayInMemorySearch是由Docarray提供的文档索引它将会整个文档以向量的形式存储在内存中对于小型数据集来说使用DocArrayInMemorySearch会非常方便接下来我们还要指定一个数据源loder index VectorstoreIndexCreator(vectorstore_clsDocArrayInMemorySearch ).from_loaders([loader]) 这里我们需要说明的是当加载文档后将执行三个主要步骤 将文档分割成块为每个文档创建embeddings将文档和embeddings存储到向量数据库中 接下来我们可以直接使用索引来进行简单的对文档进行问答 #问题 请以 Markdown 形式在表格中列出您所有具有防晒功能的衬衫并总结每一件衬衫。query Please list all your shirts with sun protection \ in a table in markdown and summarize each one.#通过索引进行查询 response index.query(query)#在jupyter notebook中展示查询结果 display(Markdown(response)) 这里我们提出的问题是“请以 Markdown 形式在表格中列出您所有具有防晒功能的衬衫并对每一件衬衫进行总结。”从上面llm返回的结果中我们可以看到llm找到了4件具有防嗮功能的衬衫并且它对每一件衬衫都进行了总结最后还加了一个最终的总结如果我们没有对格式有特殊要求的话这样的回答基本符合我们的要求。 Embeddings 前面我们使用的是DocArrayInMemorySearch组件在内存中向量化存储数据所以它只适合该小型数据集向量化存储由于大型语言模型一次只能检索几千个单词,所以当遇到较大规模的文档时DocArrayInMemorySearch就不再适用了。对于大型文档我们需要使用词嵌入(word Embedding)技术所谓word Embedding是一种将文本转换成数字的技术因为计算机只认识数字对于文本信息计算机是无法理解的让要计算机能理解文本信息我们将需要将文本信息转换成一组计算机可以理解的数字这组数字称为向量两个含义相近的词他们所在的向量空间中的位置可能会比较接近而两个含义不同的词,他们在向量空间中的距离可能就比较遥远请看下面的例子 在上面的这个例子中的三句话 My dog Rover likes to chase squirrels.(我的狗Rover喜欢追松鼠。) Fluffy, my cat, refuses to eat from a can.我的猫蓬松拒绝吃罐头食品。The Chevy Bolt accelerates to 60 mph in 6.7 seconds.雪佛兰 Bolt 在 6.7 秒内加速至 60 英里/小时。 中第一句和第二句都是描述动物的第三句是描述汽车的所以第一句和第二句经过Embedding以后生成的两组向量这两组向量在向量空间中的位置会比较接近我们称这种情况为两个向量具有相似性也就是说第一句话和第二句话有相似性(因为他们都在描述动物)第三句话与前两句话不相似。 向量数据库 前面我们解释了小规模文档检索和Embedding基本原理那么对于大规模文档文档该如果处理呢对于大规模文档首先需要将文档进行切片分割操作,把文档切分成一个个块(chunks),然后对每个块做embedding最后再把由embedding生成的所有向量存储在向量数据库中如下图所示 向文档提出问题 当我们完成了大规模文档的向量数据库存储以后接下来在用户提问时系统会将用户的问题进行Embedding操作并生成一组向量接着将该组向量与向量数据库中的所有向量进行比较找出前n个最相似的向量并将其转换成对应的文本信息,如下图所示 这些与用户问题最相似的文本信息最后会喂给大型语言模型(LLM),并由LLM生成最终的回复信息如下图所示 接下来我们就来对之前的数据集做Embedding然后我们再生成一个问答chain来实现对文档的问答 #1.加载文档,并进行文档切割 file OutdoorClothingCatalog_1000.csv loader CSVLoader(file_pathfile) docs loader.load()#2.创建embeddings embeddings OpenAIEmbeddings()#3.创建向量数据库 db DocArrayInMemorySearch.from_documents(docs, embeddings )#4.创建检索器 retriever db.as_retriever()#5.创建RetrievalQA qa_stuff RetrievalQA.from_chain_type(llmChatOpenAI(temperature 0.0), chain_typestuff, retrieverretriever, verboseTrue ) 这里需要说明的是由于我们的数据集是一个1000行的csv文件所以我们使用DocArrayInMemorySearch作为向量数量数据库因为它比较擅长处理小规模的数据集然后我们创建了一个检索器retriever最后我们创建了一个RetrievalQA的chain,该chain包含三个主要的参数其中llm参数被设置为openai的llm,默认为gpt-3.5-turbo, retriever参数设置设置为前面我们由DocArrayInMemorySearch创建的retriever最后一个重要的参数为chain_type该参数包含了四个可选值stuffmap_reducerefinemap_rerank 其中: stuff这种最简单粗暴会把所有的 document 一次全部传给 llm 模型进行总结。如果docume很  多的话势必会报超出最大 token 限制的错。 map_reduce: 这个方式会先将每个 document 通过llm 进行总结最后将所有 document 总结出的结果再进行一次总结。 refine这种方式会先总结第一个 document然后在将第一个 document 总结出的内容和第二个 document 一起发给 llm 模型再进行总结以此类推。这种方式的好处就是在总结后一个 document 的时候会带着前一个的 document 进行总结给需要总结的 document 添加了上下文增加了总结内容的连贯性。 map_rerank: 这种方式会通过llm对每个文档进行一次总结然后得到一个分数最后选择一个分数最高的总结作为最终回复。 下面我们调用qa_stuff来实现对文档的问题我们的问题还是与之前用index来进行文档问答的问题一样Please list all your shirts with sun protection in a table in markdown and summarize each one.  即“请以 Markdown 形式在表格中列出您所有具有防晒功能的衬衫并每一件衬衫进行总结。” query Please list all your shirts with sun protection in a table \ in markdown and summarize each one.response qa_stuff.run(query)display(Markdown(response)) 这里我们看到通过qa_stuff返回的结果与之前用index来提问时返回的结果非常接近llm找到同样的四件具有防嗮功能的衬衫并在最后对每一件衬衫进行了总结这也符合我们的要求。 Index 与  RetrievalQA 之前我们用index.query()这个方法只用一行代码也实现了上述的文档问答的功能也许有读者会问既然index.query()可以只用一行代码就完成了文档问答功能又何必要舍近求远搞一个RetrievalQA这样的对象来实现并且增加很多繁琐的步骤(有5个步骤)来实现同样的效果呢Langchain框架的作者Harrison Chase在课件视频中是这么解释的通过index来进行文档问答只需一行代码但是这其中其实隐藏了很多的实现细节如果我们使用的是RetrievalQA对象来实现文档问答功能那么我们就可以了解其中的细节比如Embeddings向量数据库等内容反正各有各的好处吧。 参考资料 DocArrayInMemorySearch | ️ Langchain Retrievers | ️ Langchain
http://www.huolong8.cn/news/357668/

相关文章:

  • 免费建网站的程序wordpress文章变缩略图
  • 最强的网站建设电话做数码后期上数码网站
  • 苏宁易购网站建设的不足之处个人网站怎么设计
  • 哈尔滨网站建设培训价格低的形容词
  • 网站模板安装教程wordpress 分类 文章
  • 宁波网站建站wordpress怎么添加连接
  • 百度站长工具大全一个wordpress的爱好者
  • 注册安全工程师证书wordpress seo 自定义结构
  • 网站平台建设可行性价格套餐网站
  • 如何做网站美化申请个人营业执照需要什么资料
  • 视频制作素材网站烟台做网站的企业
  • 网站建设的相关职位怎样批量做全国网站
  • 网络技术网站是做什么的主页免费下载
  • 贵阳手机网站开发国外摄影网站
  • 织梦网站模板还原的文件在哪里想在网上做开发网站接活儿
  • 南通企业建设网站电话如何后台修改网站联系人
  • 医疗网站跳出率环保类网站模板
  • 权威行业网站建设公司西安网站建设的网站
  • 厦门网站设计公司哪家好福建电商小程序厦门开发公司做网站的人 优帮云
  • 个人建设网站还要备案么龙岗龙城街道做网站
  • 网上有哪些接单做效果图的网站如何提高网站开发效率
  • 网站 开发 备案代理杭州app开发公司集中
  • 学做视频的网站有哪些内容在本地做改版如何替换旧网站会影响百度收录吗
  • 深圳华强北做网站哈尔滨网页设计外包公司
  • 太原网站设计公司wordpress关注插件
  • 娱乐网站建设ppt模板如何建一个论坛网站
  • 邢台做网站价位wordpress上不去
  • 武昌做网站哪家好实现网站"今天访问量昨天访问量"统计插件 for dedecms
  • 镇江建设集团网站wordpress安装在哪里
  • 怎样制作网站建设方案17素材网官网