AnythingLLM:轻松打造个人知识库,构建专属AI助手,附详细部署教程

Written by 30115776@qq.com

AnythingLLM

今天我们来介绍一款名为 AnythingLLM 的强大应用,它可以帮助你将任何文档、资源转换为 AI 知识库,构建属于自己的私人 AI 助手。无论是文本、PDF、音频,甚至视频,都能轻松变成能够与大语言模型(LLM)互动的参考材料。接下来,我们将通过一系列详细的步骤与教程,帮助你快速部署并掌握这一工具。

🚀 快速阅读

AnythingLLM 是一款全栈应用程序,它能够将任何文档或资源(例如网址链接、音频、视频)转化为能够被大语言模型(LLM)使用的上下文。这意味着,用户可以通过它来构建一个私人 AI 助手,而不再依赖于第三方平台。

核心功能

  • 支持多用户管理、多个 LLM 与向量数据库。
  • 提供智能聊天功能,可根据用户需求动态生成内容。
  • 完善的权限设置,保障用户信息安全。

技术原理

  • 通过工作区隔离不同内容,确保上下文信息的准确性与清晰性。
  • 提供本地与云部署的选项,灵活应对不同的需求。

AnythingLLM 是什么

AnythingLLM-show.gif

AnythingLLM 是一款旨在将所有类型的文档或资源转化为可与大语言模型(LLM)交互的上下文的应用。你可以上传 PDF、TXT、DOCX 等格式的文档,甚至链接和音频也能转化为 AI 助手的知识源。该应用程序支持多用户管理,确保团队协作时的信息安全和权限控制,且能够选择使用不同的 LLM 或向量数据库。

通过 AnythingLLM,你不仅可以自定义知识库,还能根据自己的需求来进行部署与调整。你可以在本地运行,也可以选择将其部署到云端。

AnythingLLM 的主要功能

  • 多用户实例支持和权限管理:适合团队协作,管理员可以设置用户权限,确保操作的安全性与灵活性。
  • 智能体 Agent:内置智能体可以浏览网页、运行代码等,帮助用户自动化处理日常任务。
  • 可嵌入聊天窗口:为您的网站定制的聊天窗口,方便集成到现有的系统中,提升用户体验。
  • 支持多种文档格式:如 PDF、TXT、DOCX 等文档格式,几乎可以处理所有你常用的文件。
  • 文档管理与向量数据库:通过简单的界面管理文档,提升知识管理的效率。
  • 两种对话模式:提供“聊天”与“查询”两种模式,灵活应对不同的业务需求。
  • 引用文档内容:在聊天过程中,系统会自动引用相关文档内容,确保回答的准确性。
  • 高效处理超大文档:处理超大文档时,系统支持高效一次性嵌入,节省时间和计算成本。
  • 开发者 API:提供全面的 API 支持,便于用户进行二次开发与自定义集成。

AnythingLLM 的技术原理

  • 前端:基于 ViteJS 和 React 构建,用户界面直观简洁,操作简单,能够轻松创建与管理 LLM 可用的所有文档资源。
  • 后端:使用 NodeJS Express 服务器处理所有的交互请求,并与向量数据库、LLM 进行深度整合。
  • Docker 支持:通过 Docker 提供镜像与部署步骤,用户可以方便地在不同环境中构建和运行。
  • 文档收集器:通过 NodeJS 服务器负责解析和处理用户上传的文档。

AnythingLLM 的最小要求

为了确保 AnythingLLM 的顺利运行,建议满足以下最低要求:

  • 内存:至少 2GB RAM
  • 磁盘存储:推荐 10GB 以上,具体取决于存储的数据量(文档、向量、模型等)
  • 软件:需要安装 docker,以及 yarnnode(用于本地开发)
  • LLM 访问:需要访问本地或远程运行的语言模型

如何运行 AnythingLLM

1. 设置开发环境

  • 安装依赖:运行 yarn setup,配置必要的环境变量。
  • 启动服务器:使用 yarn dev:server 启动本地服务器。
  • 启动前端:运行 yarn dev:frontend 启动前端界面。
  • 启动文档收集器:执行 yarn dev:collector 启动文档收集器,开始解析文档。

2. 自托管部署

推荐使用 Docker 进行部署,确保应用的稳定性与易扩展性。通过以下步骤,您可以在本地快速部署 AnythingLLM

推荐使用 Docker 进行部署

为了确保 AnythingLLM 的最佳性能和稳定性,推荐使用 Docker 化部署。以下是详细的步骤:

1. 拉取最新镜像

首先,从 Docker Hub 拉取最新的 AnythingLLM 镜像:

docker pull mintplexlabs/anythingllm

2. 持久化存储

为了确保数据在容器重启后不会丢失,建议将容器的存储卷挂载到主机的文件夹中。这样可以在更新镜像时保留现有数据。

Linux/MacOS

export STORAGE_LOCATION=$HOME/anythingllm && \\
mkdir -p $STORAGE_LOCATION && \\
touch \"$STORAGE_LOCATION/.env\" && \\
docker run -d -p 3001:3001 \\
--cap-add SYS_ADMIN \\
-v ${STORAGE_LOCATION}:/app/server/storage \\
-v ${STORAGE_LOCATION}/.env:/app/server/.env \\
-e STORAGE_DIR=\"/app/server/storage\" \\
mintplexlabs/anythingllm

Windows

# 在 PowerShell 终端中运行
$env:STORAGE_LOCATION=\"$HOME\\Documents\\anythingllm\"; `
If(!(Test-Path $env:STORAGE_LOCATION)) {
   New-Item $env:STORAGE_LOCATION -ItemType Directory}; `
If(!(Test-Path \"$env:STORAGE_LOCATION\\.env\")) {
   New-Item \"$env:STORAGE_LOCATION\\.env\" -ItemType File}; `
docker run -d -p 3001:3001 `
--cap-add SYS_ADMIN `
-v \"$env:STORAGE_LOCATION`:/app/server/storage\" `
-v \"$env:STORAGE_LOCATION\\.env:/app/server/.env\" `
-e STORAGE_DIR=\"/app/server/storage\" `
mintplexlabs/anythingllm;

3. 使用 Docker Compose

如果你更喜欢使用 Docker Compose,可以使用以下配置文件:

version: \'3.8\'
services:
  anythingllm:
    image: mintplexlabs/anythingllm
    container_name: anythingllm
    ports:
      - \"3001:3001\"
    cap_add:
      - SYS_ADMIN
    environment:
      - STORAGE_DIR=/app/server/storage
      - JWT_SECRET=\"make this a large list of random numbers and letters 20+\"
      - LLM_PROVIDER=ollama
      - OLLAMA_BASE_PATH=http://127.0.0.1:11434
      - OLLAMA_MODEL_PREF=llama2
      - OLLAMA_MODEL_TOKEN_LIMIT=4096
      - EMBEDDING_ENGINE=ollama
      - EMBEDDING_BASE_PATH=http://127.0.0.1:11434
      - EMBEDDING_MODEL_PREF=nomic-embed-text:latest
      - EMBEDDING_MODEL_MAX_CHUNK_LENGTH=8192
      - VECTOR_DB=lancedb
      - WHISPER_PROVIDER=local
      - TTS_PROVIDER=native
      - PASSWORDMINCHAR=8
    volumes:
      - anythingllm_storage:/app/server/storage
    restart: always

volumes:
  anythingllm_storage:
    driver: local
    driver_opts:
      type: none
      o: bind
      device: /path/on/local/disk

4. 访问用户界面

完成上述步骤后,访问 http://localhost:3001 即可使用 AnythingLLM 的用户界面。所有数据和进度将持久保存,即使在容器重建或从 Docker Hub 拉取新镜像后也不会丢失。

常见问题解决

无法连接到本地服务

如果你在 Docker 容器中无法连接到主机上的服务(如 Chroma、LocalAI 或 LMStudio),请确保将 localhost 替换为 host.docker.internal。例如,如果 Ollama 在主机上运行并绑定到 http://127.0.0.1:11434,则应将连接 URL 设置为 http://host.docker.internal:11434

注意:在 Linux 上,http://host.docker.internal 不可用,应使用 http://172.17.0.1 作为替代。

API 无法工作,无法登录,LLM 离线

API 无法工作:在远程机器上运行时,确保配置正确的 API 基础 URL,例如 VITE_API_BASE="http://192.186.1.222:3001/api"

Ollama 问题

如果你遇到与 Ollama 相关的错误(如 llama:streaming - could not stream chat. Error: connect ECONNREFUSED 172.17.0.1:11434),请参考 Ollama 常见问题 进行排查。

资源

总结:通过 AnythingLLM,你可以轻松将自己的文档资源转换为 AI 知识库,并创建一个专属于你的私人 AI 助手。它不仅支持多种部署方式,还提供了灵活的用户管理与权限设置,帮助你在任何环境下都能高效利用 AI 技术。如果你对这一应用感兴趣,赶紧根据本教程开始部署吧!

30115776@qq.com

Pretium lorem primis lectus donec tortor fusce morbi risus curae. Dignissim lacus massa mauris enim mattis magnis senectus montes mollis taciti accumsan semper nullam dapibus netus blandit nibh aliquam metus morbi cras magna vivamus per risus.

JoyGen:用音频生成3D说话人脸视频,快速生成逼真的唇部同步视频

OmniSearch:阿里巴巴通义推出的多模态检索增强生成框架

发表评论