众所周知,在过去的2023一年期间,语言模型发展趋势在大模型、跨模态、语义理解、隐私保护和可解释性得到了很好的体现,而这些优良的发展趋势将进一步推动语言模型在人工智能领域的发展和应用。所以,在学习LangChain也是应运而生。本文将根据个人亲身经历,详细介绍LangChain的概念以及使用案例,主要是使用了他的智能问答。
LangChain是一个强大的框架,旨在帮助开发人员使用语言模型构建端到端的应用程序。它提供了一套工具、组件和接口,可简化创建由大型语言模型 (LLM) 和聊天模型提供支持的应用程序的过程。LangChain 可以轻松管理与语言模型的交互,将多个组件链接在一起,并集成额外的资源,例如 API 和数据库。总结起来就是LangChain是一个创新框架、具有智能代理的特性、在使用时提供了接口和功能的一个集成框架(终究还是逃离不了框架的命运~)。截止写稿为止,LangChain的最新版本为v0.1.3。
LangChain英文官方地址:https://www.langchain.com/
LangChain中文官网:https://www.langchain.com.cn/
Python官方地址:https://python.langchain.com/en/latest/
LangChain源代码地址:https://github.com/langchain-ai/langchain
LangChain库划分为三个大层:基础层、能力层、应用层。
在以前LangChain提供了6个主要的大模块,每个模块在官网也提供一些入门示例、指南、参考文档和概念指南,这些模块按照逐渐增加的复杂性排列如下:
在升级后,LangChain进行了架构调整,合并了一些模块,目前是四大核心模块(模型、检索、调用序列、决策和调度)和内存模块、回调模块、实验扩展模块。
LangChain 目前支持很多用例,有很多场景已经实现了交付,下面是支持的一些常见用例。
LangChain工作核心点就是把大数据量的数据组合起来,让LLM能够尽可能少地消耗计算力就能轻松地引用。它的工作原理是把一个大的数据源,比如一个50页的PDF文件,分成一块一块的,然后把它们嵌入到一个向量存储(Vector Store)里。此时,我们有了大文档的向量化表示,就可以用它和LLM一起工作,只检索我们需要引用的信息,来创建一个提示-完成(prompt-completion)对。
加载所需的文档
from langchain.document_loaders import TextLoader
loader = TextLoader('../question_ask.txt')
创建检索所需要的索引
from langchain.indexes import VectorstoreIndexCreator
index = VectorstoreIndexCreator().from_loaders([loader])
从数据源进行检索,获取数据源中的数据
query = "What did the president say about Ketanji Brown Jackson"
index.query(query)
执行调用操作,获取提出问题的响应,得到解答
from langchain.chains.question_answering import load_qa_chain
chain = load_qa_chain(llm, chain_type="stuff")
chain.run(input_documents=docs, question=query)
针对不同的需求场景,可能需要对应的合适的检索器。用户可以用自然语言的方式,来构建自己的GPT应用,简单的比如一个根据提示词生成的各种系统角色;或者通过自定义Action实现一些复杂的功能:比如调用第三方API、读取本地或网络文档等。在一定程度上可以不用通过LangChain等编码来实现增强检索等,但是LangChain的一些思路和实现还是值得学习和借鉴的,比如LangChain中可以使用本地化部署的LLM和向量存储等,来解决隐私数据泄漏问题。本文主要介绍了LangChain的核心理念以及一个问答的简单实现,希望能给你带来帮助。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。