LangChain 查询使用指「北」

这篇具有很好参考价值的文章主要介绍了LangChain 查询使用指「北」。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一只鹦鹉加上一根链条,组成了时下最流行的 AI 话题热门榜选手——LangChain。

LangChain 是一种 AI 代理工具,可以为以 ChatGPT 为代表的额大语言模型(LLM)增添更多功能。此外,LangChain 还具备 token 和上下文管理功能。本文主要通过查询 GPT 和查询文档两个示例[1]介绍如何使用 LangChain。

安装 LangChain

LangChain 是用于构建 LLM 应用的框架,使用 LangChain 可以快速构建 CVP 框架。LangChain 为 LLM 提供了两大核心功能:

  • 数据感知能力:将外部数据源纳入 LLM 应用的能力。

  • 代理能力:使用其他工具的能力。

与许多 LLM 工具一样,默认情况下,LangChain 使用的 LLM 是 OpenAI 的 GPT。因此,想要使用 LangChain,需要先从 OpenAI 获取 API 密钥[2]。LangChain 支持 Python 和 JavaScript。本教程展示的是 Python 示例代码,大家可以通过运行 pip install langchain 来安装 LangChain。

安装结束后就可以用 LangChain 查询文档、向量,当然也可以把 LangChain 当作 LlamaIndex 一样,让它与 GPT 的交互更丝滑。

查询 GPT

大多数人都是因为 ChatGPT 才对 GPT 有所了解。ChatGPT 是 OpenAI 的旗舰产品,是一个允许用户与 GPT 进行交互的界面。不过,如果想以编程的方式与 GPT 进行交互,那么就需要一个像 LangChain 这样的查询接口。

LangChain 为 GPT 提供了一系列的查询接口,从【通过一个 prompt 提问】的简单接口,到【通过多个问题让 GPT 进行上下文学习】的复杂接口,一应俱全。

接下来先介绍通过一个 prompt 模板将提问链接在一起的方法。

  • 首先,安装 Python 库。大家可以用 pip install langchain openai python-dotenv tiktoken 安装。笔者本人会使用 python-dotenv,因为个人习惯在一个 .env 文件中管理环境变量,不过大家可以根据自己的偏好选择如何加载 OpenAI API 密钥。

  • 准备好 OpenAI API 密钥后,必须加载 LangChain 工具。我们需要从 langchain 导入 PromptTemplateLLMChain,并从langchain.llms导入OpenAI。本示例中使用 OpenAI 的文本模型 text-davinci-003

  • 随后,创建一个查询 GPT 的模板,下述模板告诉 GPT 每次只回答一个问题:

  • 创建一个字符串(string),括号内输入变量,类似于 f-strings

import os
from dotenv import load_dotenv
import openai
load_dotenv()
openai.api_key = os.getenv("OPENAI_API_KEY")

from langchain import PromptTemplate, LLMChain
from langchain.llms import OpenAI
davinci = OpenAI(model_name="text-davinci-003")
multi_template = """Answer the following questions one at a time.

Questions:
{questions}

Answers:
"
""
  • 使用 PromptTemplate 从字符串创建模版,且指定输入变量。

  • 准备好提示模板后,可以创建 LLM 链条(chain),传入 prompt 和选择的 LLM。

然后就可以提问了!输入问题后,就可以通过 run 来运行 LLM chain 导入问题并获得答案。

llm_chain = LLMChain(
   prompt=long_prompt,
   llm=davinci
)
qs_str = (
   "Which NFL team won the Super Bowl in the 2010 season?\\\\n" +
   "If I am 6 ft 4 inches, how tall am I in centimeters?\\\\n" +
   "Who was the 12th person on the moon?" +
   "How many eyes does a blade of grass have?"
)
print(llm_chain.run(qs_str))

下图为得到的答案:

查询文档

GPT 和 LLM 的痛点之一就是它们受限于训练时所使用的数据。这些训练数据是模型能够获取到的知识,这意味着随着时间的推移,在旧数据上训练的 LLM 不仅可能无法处理上下文,其答案准确性也有待提高。将 LangChain 和向量数据库结合可以解决这个问题,例如开源的向量数据库 Milvus。

本示例将通过查询文档的例子,演示如何通过 LangChain 将最新的知识添加到 LLM 应用,并进行语义检索。在本示例中,我们使用 Zilliz Cloud 的文档[3],大家可以通过 Colab[4] 获取源码。请先运行 pip install langchain openai milvus pymilvus python-dotenv tiktoken 安装需要使用到的库。

与前面的示例一样,首先加载 OpenAI API 密钥和 LLM。然后用 Milvus Lite 启动向量数据库,这样可以直接在 notebook 中运行 Milvus。

import os
from dotenv import load_dotenv
import openai
load_dotenv()
openai.api_key = os.getenv("OPENAI_API_KEY")
from langchain.llms import OpenAI
davinci = OpenAI(model_name="text-davinci-003")
from milvus import default_server
default_server.start()

现在可以开始学习如何查询文档了。这次从 LangChain 导入了很多内容,需要 OpenAI Embeddings、文本字符拆分器、Milvus 向量数据库、加载器和问答检索链。

  • 首先,设置一个加载器并加载 urls 链接中的内容。本例中,将加载 Zilliz Cloud 介绍的文档,即加载链接 'https://zilliz.com/doc/about_zilliz_cloud'

  • 其次,将文档拆分并将其存储为 LangChain 中的一组文档。

  • 接着,设置 Milvus 向量数据库。在本例中,我们为刚才通过 UnstructuredURLLoaderCharacterTextSplitter 获取的文档数据创建了一个 Milvus 集合(collection)。同时,还使用了 OpenAI Embeddings 将文本转化为 embedding 向量。

  • 准备好向量数据库后,可以使用 RetrievalQA 通过向量数据库查询文档。使用 stuff 类型的链,并选择 OpenAI 作为 LLM,Milvus 向量数据库作为检索器。

接下来,大家就可以查询啦!通过 run 运行查询语句。当然,最后别忘了关闭向量数据库。

from langchain.embeddings.openai import OpenAIEmbeddings
from langchain.text_splitter import CharacterTextSplitter
from langchain.vectorstores import Milvus
from langchain.document_loaders import UnstructuredURLLoader
from langchain.chains import RetrievalQA

loader = UnstructuredURLLoader(urls=['https://zilliz.com/doc/about_zilliz_cloud'])
documents = loader.load()
text_splitter = CharacterTextSplitter(chunk_size=1000, chunk_overlap=0)
docs = text_splitter.split_documents(documents)
embeddings = OpenAIEmbeddings()
vector_db = Milvus.from_documents(
   docs,
   embeddings,
   connection_args={"host""127.0.0.1""port": default_server.listen_port},
)
qa = RetrievalQA.from_chain_type(llm=OpenAI(), chain_type="stuff", retriever=vector_db.as_retriever())
query = "What is Zilliz Cloud?"
qa.run(query)
default_server.stop()

以上就是 LangChain 的安装和使用方法,如果大家在使用过程中还有疑问,可搜索小助手微信 “zilliz-tech” 进入我们的微信群进行交流。

(本文作者 Yujian Tang 系 Zilliz 开发者布道师;陈室余系 Zilliz 软件工程师)


  • 如果在使用 Milvus 或 Zilliz 产品有任何问题,可添加小助手微信 “zilliz-tech” 加入交流群。

  • 欢迎关注微信公众号“Zilliz”,了解最新资讯。

本文由 mdnice 多平台发布文章来源地址https://www.toymoban.com/news/detail-467566.html

到了这里,关于LangChain 查询使用指「北」的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • AIGC出击研发、营销,文心一言们要改变鞋服行业产业链条?

    (图片来源于网络,侵删) 文 | 螳螂观察 作者 | 叶小安 你敢设想这样一种未来吗? 看到的消费品广告都是AI设计的,甚至连电影、电视甚至直播带货都是由AI机器人制作好的画面。 2022年尾,ChatGPT的诞生刷爆全网,“编程将被杀死”、“编辑将被取代”,“教师被替换”等

    2024年02月11日
    浏览(40)
  • 振弦采集仪及在线监测系统完整链条的岩土工程隧道安全监测

    振弦采集仪及在线监测系统完整链条的岩土工程隧道安全监测 近年来,随着城市化的不断推进和基础设施建设的不断发展,隧道建设也日益成为城市交通发展的必需品。然而,隧道建设中存在着一定的安全隐患,如地质灾害、地下水涌流等,因此隧道工程的安全监测显得尤为

    2024年02月15日
    浏览(66)
  • 岩土工程监测案例:完整链条的振弦传感器、采集仪和在线监测系统

    岩土工程监测案例:完整链条的振弦传感器、采集仪和在线监测系统 在岩土工程监测中,振弦传感器被广泛应用于测量土体或岩体的振动情况,以了解地震或其他振动事件对结构物或地基的影响。振弦传感器具有高精度、快速响应、易于安装和低成本等优点,因此在地震、振

    2024年02月09日
    浏览(56)
  • 【Java】一只小菜坤的编程题之旅【3】

    这个题我们用一个非常简单的思想就能实现,我们先将字符串转换为字符数组,然后对字符数组进行排序,然后再把排序完的字符数组转换为字符串,比较他们是否相等。

    2024年02月13日
    浏览(42)
  • Git gui教程---第七篇 Git gui的使用 返回上一次提交

    1. 查看历史,打开gitk程序 2. 选中需要返回的版本,右键,然后点击Rest master branch to here 3.出现弹窗 每个选项我们都试一下,从Hard开始 会丢失所有的修改【此处的修改包含新增的文件也会没了】,并回退到上一个版本 变动后,可以看到OtherFile回退到上一次的提交了。 如果

    2024年02月11日
    浏览(38)
  • 用Threejs做一只会动的3D玉兔祝大家中秋快乐

           2022年中秋佳节即将来临,中秋节是我们国家的传统节日。在民间活动中,全国各地的老百姓通常会举行很隆重的活动来度过中秋节,通常比较见的就有赏灯、赏月、吃月饼、喝桂花酒、赏桂花等活动,而每年的中秋节都是天气比较凉爽的季节,人们刚刚经历了酷暑,

    2024年01月17日
    浏览(52)
  • Laf & 中大猫谱:让每一只流浪猫都有家

    中大猫谱是一款辅助 校园流浪猫救助 的开源小程序项目,服务端使用 Laf 云开发 。 猫谱主要功能包括:猫咪信息登记、照片分享、拍照识猫、公告和留言等。项目创立的初衷,是解决校园猫猫交流群里的一个常见问题:问猫猫是谁。 如果,把猫猫的信息和照片都整理到小程

    2024年02月10日
    浏览(59)
  • P2437 蜜蜂路线---一只小蜜蜂啊,飞入花丛中啊......

    # 蜜蜂路线 ## 题目背景 无 ## 题目描述 一只蜜蜂在下图所示的数字蜂房上爬动,已知它只能从标号小的蜂房爬到标号大的相邻蜂房,现在问你:蜜蜂从蜂房 $m$ 开始爬到蜂房 $n$,$mn$,有多少种爬行路线?(备注:题面有误,右上角应为 $n-1$) ![](https://cdn.luogu.com.cn/upload/pic/1575

    2024年01月21日
    浏览(31)
  • uniapp小程序路由跳转,使用uni.navigateBack方法,实现页面返回上一页

    在小程序中uni.navigateTo和uni.redirectTo是通过路由拼接的方式传参 uni.navigateBack() 是一个用于在uni-app中进行页面后退操作的API。它可以让你返回到上一个页面。在给定的示例中,uni.navigateBack() 被调用并传入了一个对象作为参数。该对象具有一个属性 delta,用于指定要后退的页面

    2024年04月28日
    浏览(46)
  • uni-app:切换页面刷新,返回上一页刷新(onShow钩子函数的使用)

    切换页面刷新:通过onShow()便可实现 返回上一页通过uni.navigateBack({delta: 1});实现 以返回上一页刷新为例 在A页面写入方法refreshHandler() 在A页面写入onLoad(),onShow()  onLoad(): 首次进入页面时执行的方法,这里直接引入refreshHandler() 可以直接查询到页面数据 onShow(): 进入页面执行

    2024年02月15日
    浏览(65)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包