当前位置:首页|资讯|通义千问|ChatGLM|大语言模型|清华

利用AI解读本地TXT、WORD、PDF文档

作者:码钉泥发布时间:2024-04-17

本教程带领大家使用 Ollama + Qwen(通义千问大语言模型)+ AnythingLLM 搭建本地知识库,实现手搓 AI+专家系统。今天给自己安排一位全能知识助手,领导再也不用担心我一问三不知了,升职加薪不是梦!


大语言模型的发展真的是一日千里。在前面的教程中,我为各位观众老爷演示了如何利用清华大学出品的ChatGLM3搭建本地的大语言模型,并通过API实现自动化写作。

随着ChatGLM4改为闭源发布,ChatGLM模型的热度一泻千里。新的大模型不断涌现,新的部署工具也层出不穷。阿里巴巴出品的通义千问迭代到1.5版本,性能基本超越ChatGLM3,成为我们新的选择。

今天,我们就要带领大家使用通义千问和LangChain搭建本地知识库,让电脑变成我们信息小助理。

1 运行环境

1.1 安装大语言模型

在前面的教程中,我们自己配置了Python环境用来运行ChatGLM模型。现在,我们有了更加方便的工具,可以一条指令运行本地LLM模型,那就是Ollama。

访问Ollama.com下载安装包。Ollama目前支持Linux、Windows和MacOS操作系统。并且支持CPU、NVIDIA GPU和AMD GPU。这意味着,如果你的电脑配有显卡,将会优先使用显卡进行推理(这样速度更快),如果没有显卡,将调用CPU进行推理(即使办公笔记本也可以运行,当然,推理速度会有点慢)。

我们先下载最熟悉的Windows安装包。根据默认设置安装。

安装完成后,打开一个CMD窗口,输入

ollama pull qwen:4b

这将帮你下载通义千问1.5_4B模型。模型的大小约2.3GB,无需魔法上网即可下载。

我这边下载了大概20分钟,下载完成后,可以使用Ollama默认的界面运行通义千问1.5_4B模型。

打开一个CMD窗口,输入

ollama run qwen:4b

然后,你就可以在CMD界面提出问题了。输入 `/bye` 可以退出聊天。

当然,这个界面只能做简单测试,我们后面将接入更加方便的图形界面(包括我们的老朋友Chatbox)进行本地对话。


Ollama支持流行的开源大语言模型,包括llama2和它的众多衍生品(包括vicuna、codellama),以及其他一些热点模型,例如Mistral、Dolphin、Falcon等。

访问https://ollama.com/library可以浏览Ollama提供的所有模型。


1.2 安装向量模型


下面我们将需要使用Ollama安装向量模型。向量模型比较小,大约230MB,很快就可以下载好

ollama pull nomic-embed-text

这将会帮助我们下载nomic-embed-text:latest。其中latest表示最新版。

向量模型是用来将Word和PDF文档转化成向量数据库的工具。通过向量模型转换之后,我们的大语言模型就可以更高效得理解文档内容。

向量模型无法单独使用。


1.3 利用Langchain处理文档

Langchain是一套利用大语言模型处理向量数据的工具。以前,搭建LLM+Langchain的运行环境比较复杂。现在我们使用AnythingLLM可以非常方便的完成这个过程,因为AnythingLLM已经内置了Langchain组件。

AnythingLLM是一个集成度非常高的大语言模型整合包。它包括了图形化对话界面、内置大语言模型、内置语音识别模型、内置向量模型、内置向量数据库、内置图形分析库。

可惜的是,AnythingLLM目前的易用性和稳定性仍有所欠缺。因此,在本教程中,我们仅使用AnythingLLM的向量数据库和对话界面。LLM模型和向量模型仍然委托给Ollama来管理。

AnythingLLM本身对Ollama的支持也非常完善。只需要通过图形界面,点击几下鼠标,我们就可以轻松完成配置。


第一步,打开AnythingLLM左下角的配置界面


第二步、配置LLM


在LLM Preference选项卡中,选择Ollama作为后端。依次填写

URL:http://127.0.0.1:11434Chat Model:选择 qwen:4b Token:8192

点击窗口上方的“Save changes”保存生效。


第三步、配置embedding模型

在Embedding Model选项卡中,选择Ollama作为后端。依次填写

URL:http://127.0.0.1:11434Chat Model:选择 nomic-embed-text:latest Max embedding chunk length:512

💡

注意:这个Max embedding chunk length数值会影响文档回答的质量,推荐设置成128-512中的某个数值。从512往下逐级降低,测试效果。太低也不好,对电脑性能消耗大。

点击窗口上方的“Save changes”保存生效。


第四步、选择LanceDB向量数据库

在Vector Database选项卡中,选择LanceDB作为后端。这是一个内置的向量数据库。

如果你熟悉Pinecone等云端数据库,也可以配置相关的数据库,这样可以实现资料库漫游。

2 业务逻辑

我们简单介绍一下整个工作流程。

第一步、创建向量数据库

文档→AnythingLLM→Ollama(Nomic Embedding)→向量数据→AnythingLLM(LanceDB)


问题→AnythingLLM→Ollama(Qwen 4b)→AnythingLLM→答案

3 配置与优化


下面,我们开始进入AnythingLLM,配置Workspace以开始基于文档的对话。

点击 New Workspace,创建一个名为Chat的工作空间。无需进行任何设置,就可以直接开始与通义千问进行对话。

再次点击 New Workspace,重新创建一个名为Test的工作空间。我们将在这个空间内上传一些文档。

点击上传图标,拖拽你的资料文档到下面这个大大的按钮上(你也可以单击它!)

AnythingLLM几乎支持所有包含文字的文档格式:txt、doc(word文档)、csv、xls(excel表格)、pdf等等。

我推荐你上传word文档或pdf文档。注意:扫描图片制作的PDF暂时无法支持,你需要使用OCR软件将这种PDF转换成word文档上传。

上传完成后,选中相应的文档,并点击 Move to Workspcae。

然后点击Save and Embed。

AnythingLLM便开始调用Nomic Embed模型处理你的文件。使用CPU处理一个文件大约需要5~10分钟。我上传的这份《2023中国网络文学产业研究报告》,全文有2万字(去掉了图片),处理了大约七八分钟。完成后,关闭上传窗口。

点击齿轮图标,打开Test空间的设置选项。

选择Chat Settings,将对话模式更改为Query(默认是Chat)

Query模式能够确保仅采用上传文档中的信息进行回答(而不会采用大模型本身的信息)。

点击Update Workspace,保存设置。点击返回按钮,返回主界面。


下面,是没有开启文档对话(Chat模式、未上传任何文档)的回答效果。明显的泛泛而谈。

现在我们来试试基于文档对话(Query模式、上传1篇文档)的效果吧。

点击Show CItations,可以查看引用的数据。

你可以对一个话题上传多份文档,以提高回答质量。文档的相关性越高,回答的质量更好。如果你对回答不太满意,也可以尝试重新组织一下问题的文字,或者更换体量更大的本地大模型处理。

4 ChatBox集成

我们的老朋友ChatBox也可以很容易的集成Ollama。将ChatBox升级到1.2.2以上,即可配置Ollama作为后端,方便的使用通义千问大模型进行聊天了。

你需要在ChatBox的设置界面中进行选择Ollama作为后端。

在模型选项卡选择 Ollama 作为AI模型提供方。

API域名填写 http://127.0.0.1:11434

模型选择 qwen:4b

保存后即可进行对话。

下面是我使用Ollama运行Mistral 7B进行对话的示例。

ChatBox可以很方便的切换Ollama管理的大语言模型。


5 总结


通过今天的教程,我们已经可以不需要进行繁琐的Python环境搭建,就能够方便的在本地运行大语言模型。

Ollama和AnythingLLM方便的将我们需要的大语言模型运行环境,打包成Windows的通用图形界面,降低了大语言模型本地运行的门槛。同时Ollama可以根据我们的硬件配置自动选择使用显卡(GPU)或者CPU来运行量化好的模型。

在我们之前的教程中,只能使用CPU来运行量化后的 ChatGLM3模型。使得拥有GPU显卡的用户运行效率偏慢。Ollama很好的解决了这个问题。Ollama使用16位的GGUF量化模型,相对于之前我们介绍的GGML(Int4)量化模型格式,所保存数据精度更高。

此外,Ollama还支持uncensored llama2模型,可以应用的场景更加广泛。

目前,Ollama对中文模型的支持还相对有限。除了通义千问,Ollama没有其他更多可用的中文大语言模型。鉴于ChatGLM4更改发布模式为闭源,Ollama短期似乎也不会添加对 ChatGLM模型的支持。

尽管有一些不足。但是Ollama和AnythingLLM还是帮助我们更加方便的在本地运行属于自己的大语言模型,使得LLM应用对于普通人来说更加触手可及。



Copyright © 2024 aigcdaily.cn  北京智识时代科技有限公司  版权所有  京ICP备2023006237号-1