langchain本地知识库(langchain 本地)这样也行?
众所周知 OpenAI 的 API 无法联网,所以大家如果想通过它的API实现联网搜索并给出回答、总结 PDF 文档、基于某个 Youtube
众所周知 OpenAI 的 API 无法联网,所以大家如果想通过它的API实现联网搜索并给出回答、总结 PDF 文档、基于某个 Youtube 视频进行问答等等的功能肯定是无法实现的所以,我们来介绍一个非常强大的第三方开源库:。
LangChain LangChain 是一个用于开发由语言模型驱动的应用程序的框架他主要拥有 2 个能力:可以将 LLM 模型与外部数据源进行连接&允许与 LLM 模型进行交互这个库目前非常活跃,每天都在迭代,已经有 22k 的 star,更新速度飞快。
基础功能LLM 调用支持多种模型接口,比如 OpenAI、Hugging Face、AzureOpenAI ...Fake LLM,用于测试缓存的支持,比如 in-mem(内存)、SQLite、Redis、SQL
用量记录支持流模式(类似打字效果)Prompt管理,支持各种自定义模板文档分割器向量化对接向量存储与搜索,比如 Chroma、Pinecone、QdrandChainsLLMChain各种工具Chain
LangChainHub必知概念Loader 加载器顾名思义,这个就是从指定源进行加载数据的比如:文件夹 DirectoryLoader、Azure 文件存储AzureBlobStorageContainerLoader、CSV文件 CSVLoader、印象笔记 EverNoteLoader、Google网盘 GoogleDriveLoader、任意的网页 ...。
Document 文档当使用loader加载器读取到数据源后,数据源需要转换成 Document 对象后,后续才能进行使用Text Spltters 文本分割为什么需要文本分割?因为我们每次不管是把文本当作 prompt 发给 openai api ,还是还是使用 openai api embedding 功能都是有字符限制的。
比如我们将一份300页的 pdf 发给 openai api,让它进行总结,它肯定会报错“超过最大 Token” ,所以这里就需要使用文本分割器去分割我们 loader 进来的 DocumentVectorstores 向量数据库
因为数据相关性搜索其实是向量运算所以不管我们是使用 openai api embedding 功能还是直接通过向量数据库直接查询,都需要将我们的加载进来的数据 Document 进行向量化,才能进行向量运算搜索。
转换成向量也很简单,只需要我们把数据存储到对应的向量数据库中即可完成向量的转换Chain 链我们可以把 Chain 理解为任务一个 Chain 就是一个任务,当然也可以像链条一样,一个一个的执行多个链Agent 代理
简单的理解就是它可以动态的帮我们选择和调用chain或者已有的工具。执行过程可以参考下面这张图:
Embedding用于衡量文本的相关性这个也是 OpenAI API 能实现构建自己知识库的关键所在他相比 fine-tuning 最大的优势就是,不用进行训练并且可以实时添加新的内容,而不用加一次新的内容就训练一次,并且各方面成本要比 fine-tuning 低很多。
实战通过上面的必备概念大家应该对 LangChain 有了一定的了解,但是可能还有些懵接下来我们通过一个实战case帮助大家理解上述内容PS:因为我们 OpenAI API 进阶,所以我们后面的范例使用的 LLM 都是以Open AI 为例,后面大家可以根据自己任务的需要换成自己需要的 LLM 模型即可。
完成一次问答在这里,我们先用一个最简单的案例帮助大家进行理解:“用 LangChain 加载 OpenAI 的模型,并且完成一次问答”在开始之前,我们需要先设置我们的 openai 的 key,这个 key 可以在用户管理里面创建,这里就不细说了。
import osos.environ["OPENAI_API_KEY"] = 你的api key然后,我们进行导入和执行from langchain.llms import OpenAIllm = OpenAI(model_name="text-davinci-003",max_tokens=1024)llm("怎么评价人工智能")
这时,我们就可以看到他给我们的返回结果了总结本文章只是对 LangChain做了一个初级讲解,后续还会给大家出更多实战case希望大家通过这篇文章能够有所收获,同时能结合 LangChain 开发出更有创意的产品。
免责声明:本站所有信息均搜集自互联网,并不代表本站观点,本站不对其真实合法性负责。如有信息侵犯了您的权益,请告知,本站将立刻处理。联系QQ:1640731186