用AnythingLLM构建专属知识库
什么是 AnythingLLM ?
AnythingLLM是Mintplex Labs Inc.开发的一款可以与任何内容聊天的私人ChatGPT,是高效、可定制、开源的企业级文档聊天机器人解决方案。它能够将任何文档、资源或内容片段转化为大语言模型(LLM)在聊天中可以利用的相关上下文。
软件特点:
- 多用户实例支持和权限管理
- 全新的可嵌入式聊天小部件,适用于您的网站
- 支持多种文档类型(
PDF、TXT、DOCX等) - 通过简单的用户界面管理您的向量数据库中的文档
- 两种聊天模式:对话模式和查询模式。对话模式保留之前的问题和修改记录。查询模式用于对您的文档进行简单的问答。
- 聊天中的引用文献功能
- 完全适用于云部署。
- “自带
LLM“模型。 - 极其高效的成本节约措施,用于管理非常大的文档。您将永远不会为嵌入的大型文档或转录付费超过一次。比其他文档聊天机器人解决方案更省成本,降低
90%。 - 提供完整的开发者
API,用于自定义集成!

安装
在群晖上以 Docker 方式安装。
在注册表中搜索 anythingllm ,选择第一个 mintplexlabs/anythingllm,版本选择 latest。

权限
勾选 使用高权限执行容器

卷
在 docker 文件夹中,创建一个新文件夹 anythingllm,并在其中建一个子文件夹 data
在本机上新建一个 env.txt 文件,上传到 data 目录中,在文件中写入下面的内容
1 | SERVER_PORT=3001 |

现在的目录结构

默认 data 目录,Everyone 只有读权限

要给 data 目录赋予 Everyone 读写权限

对于 env.txt 文件

同样也要给予 Everyone 读写权限

| 文件夹 | 装载路径 | 说明 |
|---|---|---|
docker/anythingllm/data |
/app/server/storage |
存放数据库等 |
docker/anythingllm/env.txt |
/app/server/.env |
环境变量文件 |
前一项是通过
添加文件夹,后一项通过添加文件进行挂载

端口
本地端口不冲突就行,不确定的话可以用命令查一下
1 | # 查看端口占用 |
| 本地端口 | 容器端口 |
|---|---|
3014 |
3001 |

命令行安装
如果你熟悉命令行,可能用 docker cli 更快捷
1 | # 新建文件夹 anythingllm 和 子目录 |
也可以用 docker-compose 安装,将下面的内容保存为 docker-compose.yml 文件
1 | version: '3' |
然后执行下面的命令
1 | # 新建文件夹 anythingllm 和 子目录 |
运行
启动过程有点长,要稍等一会儿,当日志中显示 Primary server in HTTP mode listening on port 3001 时

在浏览器中输入 http://群晖IP:3014 就能看到主界面

设置向导
点中间的 Get started 开始设置向导

LLM Preference
如果你有 OpenAI 的 key,可以选这个试试。不过老苏没有,正好前一段装了 Ollama 还没删,所以 LLM 就选择了 Ollama

Embedding Preference
选择了默认的 AnythingLLM Embedder,这是 AnythingLLM 自带的

Vector Database Connection
选择了默认的 LanceDB,这同样是 AnythingLLM 自带的

接下来是设置 logo 和用户

这是我们选择的数据处理和隐私

创建工作空间

设置完成后的主界面

这个时候你再打开 env.txt 文件,已经根据你的设置做了改变
所以是完全可以通过设置来跳过向导的;

上传文档
点上传按钮

打开上传界面,可以上传文档,也可以指定网站

网上下了一份 华为投资控股有限公司2022年年度报告
下载地址:https://www-file.huawei.com/minisite/media/annual_report/annual_report_2022_cn.pdf

选中上传完成的文件,点 Move 1 file to workspace

将文件移入工作空间

点 Save and Embed 开始处理文档,等待处理完成

开始提问
进入工作空间

开始提问

答案感觉上都跟文档对不上,老苏切换 Chat Model 为 gemma:2b 时,又总是超时,可能原因还是机器太弱了吧

参考文档
Mintplex-Labs/anything-llm: A multi-user ChatGPT for any LLMs and vector database. Unlimited documents, messages, and storage in one privacy-focused app. Now available as a desktop application!
地址:https://github.com/Mintplex-Labs/anything-llmOllama - AnythingLLM by Mintplex Labs
地址:https://docs.useanything.com/feature-overview/llm-selection/ollama