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”,了解最新资讯。 alt

本文由 mdnice 多平台发布

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

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

相关文章

【社区活动(上海)】 .NET 开发者日来了!

点击蓝字 关注我们 作为一个免费、跨平台、开源的开发平台,.NET 在前端开发领域一直有着不俗的表现。除 UWP、Winform 外,近年来,随着 Blazor 的出现,以及 .NET MAUI(.NET 多平台应用 UI)的到来&#xff0c…

腾讯焦虑了,一向温文尔雅的马化腾也发脾气了

大家好,我是校长。 昨天小马哥内部讲话在互联网上疯传,这应该是,腾讯这家公司创办以来,马化腾最焦虑也最外露的一次讲话了,重点大概涉及 3 大方面,8 大项内容: 1、所有业务线 ROI 化&#xff0c…

专访马化腾:首次开谈个人经历、管理心得、技术创新、微信的诞生等

本次访谈时间发生于2016年10月22日下午,当时清华经管学院举行了清华管理全球论坛。会上清华经管学院学院院长钱颖一教授同腾讯创始人马化腾展开了两小时精彩对话。主要内容包括马化腾创办腾讯的前期经历,腾讯内部的管理方式、微信的前生今世和马化腾看好…

一张估值20亿的“笑脸”,正在拆掉OpenAI的围墙

文| Juny 编辑| VickyXiao 由ChatGPT引发的人工智能风潮还在猛烈地刮着。但从各个角度来看,目前这都是一个巨头争霸的战场:更大的模型、更强的算力、更多的用户、更雄厚的资金……这些都似乎成为了想要加入这场角逐的门票。与此同时,核心技术…

Web3中文|42岁退休身价百亿,王慧文高调复出再创业只为Ta

若不是因为ChatGPT,可能很多IT圈外的人对这位“已退休”的美团联合创始人王慧文并不了解。 6天内发出5条关于AI的朋友圈,王慧文“复出”欲打造中国版OpenAI(ChatGPT开发商)的消息一夜间疯传。 王慧文是谁?为何引起这么…

AI新产品层出不穷,学不过来怎么办。

最近各个互联网巨头和创业新贵发布的AI工具,AI模型层出不穷,相关自媒体的热度也都很高,当然,各种大佬的隔空喊话也是非常吸引眼球,那么很多人就会觉得,要看的东西太多了,要学的东西太多了&#…

ChatGPT VS Bard :人工智能江湖“倚天屠龙记”

转自 | 走向未来(the-land-of-future) 作者 | 王文广 “虎越雄关踪影杳,兔临春境万家新。”岁末年初,人工智能江湖掀起了江湖上的一场“血雨腥风”。这场风雨的起因是屠龙刀——ChatGPT。 人工智能江湖轶事 屠龙刀ChatGPT一现江湖&#xff…

【JavaScript】前端必学的tab栏切换布局分析

文章目录 综合案例:案例分析:示例代码: 自定义属性的操作:1.获取属性值:2.设置属性值3.移除属性值 综合案例: 本案例要完成的就是当鼠标点击上面相应的选项卡(tab),下面内容跟随变化: 比如此时我…

移动端布局

视口 浏览器显示页面内容的屏幕区域。视口可以分为布局视口、视觉视口和理想视口 1.布局视口 1.一般移动设备的浏览器都配备了布局视口,用于解决早期的PC端页面在手机上显示的问题 2.PC上的网页大多都能在手机上呈现,一般默认可以通过手动缩放网页 2.视觉…

关于移动端布局(响应式布局),你必须要知道的

前言 响应式Web设计可以让一个网站同时适配多种设备和多个屏幕,可以让网站的布局和功能随用户的使用环境(屏幕大小、输入方式、设备/浏览器能力)而变化。本文主要介绍一些响应式布局容易忽略但又很重要的知识点。 视口 移动前端中常说的 v…

移动端常见布局

移动端技术选型 1.单独制作移动端页面(主流) 流式布局(百分比布局)flex弹性布局(强烈推荐)lessrem媒体查询布局混合布局 2.响应式页面兼容移动端(其次) 媒体查询bootstrap 一、…

前端常用的几种布局方式(推)

布局 静态布局:布局特点:设计方法:PC :移动端: 优点:缺点: 流式布局:布局特点:设计方法:缺点: 自适应布局:布局特点:设计方法: 响应式布局:布局特…

【前端布局篇】响应式布局 Bootstrap 移动端布局

前言 1. 布局介绍 布局:layout 对事物的全面规划和安排 页面布局:对页面的文字、图形或表格进行格式设置。包括字体、字号、颜色纸张大小和方向以及页边距等。 网页布局:利用html搭建结构与内容,使用CSS添加装饰 HTML5CSS3系列课程 携程…

分析前端页面常见布局排版

首先我们先关注显示器 显示器的分辨率问题很大程度影响页面最后的渲染展示效果; 常见的显示器分辨率: 1024*600 (文物 大屁股显示器) 1280*1024 (1% 用户 正方形显示器 即将灭绝) 1366*768(30% 用户 其中有20%的笔记本用户是从1920*1080的分辨率系统放大过来的) 1440*900…

迷雾:我们是否拥有自己的数据?

从上世纪 60 年代个人电脑出现到现在,数字世界已经深入到我们生活的点点滴滴,从微小 “数字细胞” 到庞大概念的 “元宇宙”。ChatGPT 的火热也再次我们感受到强大的数字力量,甚至很多人都在思考如何改变才能避免工作上被替代。但是在数字世界…

硅图并购 MIPS | 历史上的今天

整理 | 王启隆 透过「历史上的今天」,从过去看未来,从现在亦可以改变未来。 今天是 2023 年 6 月 29 日,在 2008 年的今天,CNNIC 发布《第 22 次中国互联网络发展状况统计报告》,截至 2008 年 6 月底,中国网…

苹果推出 Mac OS X | 历史上的今天

整理 | 王启隆 透过「历史上的今天」,从过去看未来,从现在亦可以改变未来。 今天是 2023 年 3 月 24 日,在 2016 年的今天,暴雪娱乐公司发布了第一人称射击多人游戏《守望先锋》。根据评分汇总网站 Metacritic 的统计,…

iPhone 3G 发布 | 历史上的今天

整理 | 王启隆 透过「历史上的今天」,从过去看未来,从现在亦可以改变未来。 今天是 2023 年 6 月 9 日,在 2004 年的今天,第 28 届雅典奥运会的圣火在中国北京举行火炬传递仪式,传递路线以天安门为起点,途径…

吴军:阅读与写作50讲01

作业: 时间:未说明 人物:追求美丽女子的男人及该名美丽的女子。文章是从一个男人的角度去讲述一个女子的美丽与贤良。 地点:具体没讲,但通过河边的景物衬托女子的美好。男子可能在河边观察女子,并掀起心中的…

吴军给大学生的书单

文章目录 第一类、经典1.《庄子》A2.《孟子》A3.《史记》A4.《圣经》B5.《论法的精神》A6.《社会契约论》B7.《路德维希费尔巴哈和德国古典哲学的终结》B8. 《查拉斯图拉如是说》和《偶像的黄昏》B9.《宋词300首》A10.《元曲300首》B 第二类、东方文学1.《水浒传》A2.《牡丹亭》…