localGPT——一款100%本地布署且支持LangChain的应用

2023-06-14 16:16:08 浏览数 (1)

前言

在AI盛行的当下,我辈AI领域从业者每天都在进行着AIGC技术和应用的探索与改进,今天主要介绍排到github排行榜第二名的一款名为localGPT的应用项目,它是建立在privateGPT的基础上进行改造而成的。

我认为这个项目最大的亮点在于:

1.使用LLM的力量,无需互联网连接,就可以向你的文档提问。100%私密,任何数据都不会离开你的执行环境。你可以摄取文档并提问,无需互联网连接!2.使用LangChain和Vicuna-7B以及InstructorEmbeddings构建。可以借助LangChain构建更高级能力的pipeline。

项目的github地址:https://github.com/PromtEngineer/localGPT

localGPT

这个项目的灵感来自于原始的privateGPT(https://github.com/imartinez/privateGPT)。这里的大部分描述都受到了原始privateGPT的启发。

针对privateGPT,笔者之前有过专门的文章介绍:privatGPT——私有化GPT模型的全新应用。

在这个模型中,我已经将GPT4ALL模型替换为Vicuna-7B模型,并且我们使用InstructorEmbeddings代替原始privateGPT中使用的LlamaEmbeddings。无论是Embeddings还是LLM都将在GPU上运行,而不是CPU。如果你没有GPU,它也支持CPU(下面有指令)。

使用LLM的力量,无需互联网连接,就可以向你的文档提问。100%私密,任何数据都不会离开你的执行环境。你可以摄取文档并提问,无需互联网连接!

使用LangChain和Vicuna-7B以及InstructorEmbeddings构建。

环境设置

为了设置运行这里的代码的环境,首先安装所有需求:

代码语言:javascript复制
pip install -r requirements.txt

测试数据集

这个仓库使用美丽国宪法作为一个例子。

摄取你自己的数据集的指令

将你所有的.txt、.pdf或.csv文件放入SOURCE_DOCUMENTS目录

在load_documents()函数中,将docs_path替换为你的source_documents目录的绝对路径。

运行以下命令摄取所有数据。

代码语言:javascript复制
python ingest.py

它将创建一个包含本地vectorstore的索引。根据你的文档的大小,可能需要一些时间。

你可以摄取任意数量的文档,所有的文档都将累积在本地embeddings数据库中。

如果你想从一个空数据库开始,删除索引。

注意:当你第一次运行这个时,它将需要下载embedding模型,所以可能需要一些时间。在后续的运行中,没有数据会离开你的本地环境,可以在没有互联网连接的情况下运行。

向你的文档提问,本地化!

为了提问,运行像这样的命令:

代码语言:javascript复制
python run_localGPT.py

等待脚本要求你的输入。

按回车键。等待LLM模型消耗提示并准备答案。一旦完成,它将打印答案和它从你的文档中使用的4个源作为上下文;然后你可以在不重新运行脚本的情况下再提一个问题,只需再次等待提示即可。

注意:当你第一次运行这个时,它将需要互联网连接下载vicuna-7B模型。之后你可以关闭你的互联网连接,脚本推理仍然会工作。没有数据会离开你的本地环境。

输入exit

结束脚本。

在CPU上运行

默认情况下,localGPT将使用你的GPU来运行ingest.py和run_localGPT.py脚本。但是,如果你没有GPU并希望在CPU上运行,现在你可以做到(警告:这将会很慢!)。你需要使用--device_type cpu标志与两个脚本一起使用。

对于摄取,运行以下命令:

代码语言:javascript复制
python ingest.py --device_type cpu

为了提问,运行像这样的命令:

代码语言:javascript复制
python run_localGPT.py --device_type cpu

它是如何工作的?

选择正确的本地模型和LangChain的力量,你可以在本地运行整个流程,没有任何数据离开你的环境,并且性能合理。

ingest.py使用LangChain工具解析文档并使用InstructorEmbeddings在本地创建嵌入。然后,它使用Chroma vector store将结果存储在本地向量数据库中。

run_localGPT.py使用本地LLM(在这种情况下是Vicuna-7B)来理解问题并创建答案。答案的上下文是从本地向量存储中提取的,使用相似性搜索从文档中定位正确的上下文片段。

你可以将此本地LLM替换为HuggingFace的任何其他LLM。确保你选择的任何LLM都是HF格式的。

系统要求

Python版本

要使用此软件,你必须安装Python 3.10或更高版本。早期版本的Python将无法编译。

C 编译器

如果你在pip安装过程中构建轮子时遇到错误,你可能需要在你的计算机上安装C 编译器。

对于Windows 10/11

要在Windows 10/11上安装C 编译器,请按照以下步骤操作:

•安装Visual Studio 2022。•确保选择了以下组件:•通用Windows平台开发•Windows的C CMake工具•从MinGW网站下载MinGW安装程序。•运行安装程序并选择"gcc"组件。

NVIDIA驱动问题:

按照此页面安装NVIDIA驱动。

免责声明

这是一个测试项目,用于验证使用LLMs和向量嵌入进行问题回答的全局解决方案的可行性。它不是生产就绪的,也不是用于生产的。Vicuna-7B基于Llama模型,因此具有原始Llama许可。

0 人点赞