用AnythingLLM构建专属知识库

什么是 AnythingLLM ?

AnythingLLMMintplex Labs Inc. 开发的一款可以与任何内容聊天的私人 ChatGPT,是高效、可定制、开源的企业级文档聊天机器人解决方案。它能够将任何文档、资源或内容片段转化为大语言模型(LLM)在聊天中可以利用的相关上下文。

软件特点:

  • 多用户实例支持和权限管理
  • 全新的可嵌入式聊天小部件,适用于您的网站
  • 支持多种文档类型(PDFTXTDOCX等)
  • 通过简单的用户界面管理您的向量数据库中的文档
  • 两种聊天模式:对话模式和查询模式。对话模式保留之前的问题和修改记录。查询模式用于对您的文档进行简单的问答。
  • 聊天中的引用文献功能
  • 完全适用于云部署。
  • “自带 LLM “模型。
  • 极其高效的成本节约措施,用于管理非常大的文档。您将永远不会为嵌入的大型文档或转录付费超过一次。比其他文档聊天机器人解决方案更省成本,降低 90%
  • 提供完整的开发者 API,用于自定义集成!

安装

在群晖上以 Docker 方式安装。

在注册表中搜索 anythingllm ,选择第一个 mintplexlabs/anythingllm,版本选择 latest

权限

勾选 使用高权限执行容器

docker 文件夹中,创建一个新文件夹 anythingllm,并在其中建一个子文件夹 data

在本机上新建一个 env.txt 文件,上传到 data 目录中,在文件中写入下面的内容

1
2
3
4
SERVER_PORT=3001
STORAGE_DIR="/app/server/storage"
UID='1000'
GID='1000'

现在的目录结构

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

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

对于 env.txt 文件

同样也要给予 Everyone 读写权限

文件夹 装载路径 说明
docker/anythingllm/data /app/server/storage 存放数据库等
docker/anythingllm/env.txt /app/server/.env 环境变量文件

前一项是通过 添加文件夹,后一项通过 添加文件 进行挂载

端口

本地端口不冲突就行,不确定的话可以用命令查一下

1
2
# 查看端口占用
netstat -tunlp | grep 端口号
本地端口 容器端口
3014 3001

命令行安装

如果你熟悉命令行,可能用 docker cli 更快捷

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 新建文件夹 anythingllm 和 子目录
mkdir -p /volume1/docker/anythingllm/data

# 进入 anythingllm 目录
cd /volume1/docker/anythingllm

# 修改 data 目录权限
chmod -R 777 data

# 将 env.txt 放入当前目录

# 修改 env.txt 文件权限
chmod 777 env.txt

# 运行容器
docker run -d \
--restart unless-stopped \
--cap-add SYS_ADMIN \
--name anythingllm \
-p 3014:3001 \
-v $(pwd)/data:/app/server/storage \
-v $(pwd)/env.txt:/app/server/.env \
mintplexlabs/anythingllm

也可以用 docker-compose 安装,将下面的内容保存为 docker-compose.yml 文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
version: '3'

services:
anythingllm:
image: mintplexlabs/anythingllm
container_name: anythingllm
restart: unless-stopped
cap-add:
- SYS_ADMIN
ports:
- 3014:3001
volumes:
- ./data:/app/server/storage
- ./env.txt:/app/server/.env

然后执行下面的命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 新建文件夹 anythingllm 和 子目录
mkdir -p /volume1/docker/anythingllm/data

# 进入 anythingllm 目录
cd /volume1/docker/anythingllm

# 修改 data 目录权限
chmod -R 777 data

# 将 env.txt 放入当前目录

# 修改 env.txt 文件权限
chmod 777 env.txt

# 将 docker-compose.yml 放入当前目录

# 一键启动
docker-compose up -d

运行

启动过程有点长,要稍等一会儿,当日志中显示 Primary server in HTTP mode listening on port 3001

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

设置向导

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

  • LLM Preference

如果你有 OpenAIkey,可以选这个试试。不过老苏没有,正好前一段装了 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 Modelgemma: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-llm

Ollama - AnythingLLM by Mintplex Labs
地址:https://docs.useanything.com/feature-overview/llm-selection/ollama