AnythingLLM:34K Star!一键上传文件轻松打造个人知识库,构建只属于你的AI助手,附详细部署教程

简介: AnythingLLM 是一个全栈应用程序,能够将文档、资源转换为上下文,支持多种大语言模型和向量数据库,提供智能聊天功能。

❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发非常感兴趣,我会每日分享大模型与 AI 领域的最新开源项目和应用,提供运行实例和实用教程,帮助你快速上手AI技术!

🥦 微信公众号|搜一搜:蚝油菜花 🥦


大家好,我是蚝油菜花,今天跟大家分享一下 AnythingLLM 这个能够将任何文档、资源转换为 AI 知识库,构建私人 AI 助手的强大应用。

🚀 快速阅读

AnythingLLM 是一个全栈应用程序,能够将任何文档、资源转换为上下文,以便大语言模型(LLM)在聊天期间作为参考使用。

  1. 核心功能:支持多用户管理、多种 LLM 和向量数据库,提供智能聊天功能。
  2. 技术原理:通过工作区隔离不同内容,确保上下文清晰,并支持本地和云部署。

AnythingLLM 是什么

AnythingLLM-show.gif

AnythingLLM 是一个全栈应用程序,旨在将任何文档、资源(如网址链接、音频、视频)或内容片段转换为上下文,以便大语言模型(LLM)在聊天期间作为参考使用。该应用程序允许用户选择使用哪个 LLM 或向量数据库,并支持多用户管理和权限设置。

通过 AnythingLLM,用户可以轻松构建一个私有 ChatGPT,不再受制于第三方平台。您可以本地运行,也可以远程托管,并能够与您提供的任何文档智能聊天。

AnythingLLM 的主要功能

  • 多用户实例支持和权限管理:支持多个用户同时使用,管理员可以设置不同用户的权限。
  • 工作区内的智能体 Agent:Agent 可以浏览网页、运行代码等,帮助用户更高效地处理任务。
  • 可嵌入聊天窗口:为您的网站定制的可嵌入聊天窗口,方便集成到现有系统中。
  • 多种文档类型支持:支持 PDF、TXT、DOCX 等多种文档格式。
  • 文档管理:通过简单的用户界面管理向量数据库中的文档。
  • 两种对话模式:提供“聊天”和“查询”两种模式,满足不同的需求。
  • 引用文档内容:聊天中会自动引用相关文档的内容,确保信息准确。
  • 高效处理超大文档:只需要一次嵌入即可处理超大文档,节省时间和成本。
  • 开发者 API:提供全套的开发人员 API,便于自定义集成。

AnythingLLM 的技术原理

  • 前端:基于 ViteJS + React 构建,提供直观的用户界面,方便用户创建和管理 LLM 可使用的所有内容。
  • 后端:基于 NodeJS Express 服务器,处理所有交互并进行向量数据库管理和 LLM 交互。
  • Docker:提供 Docker 指令和构建过程,方便用户从源代码构建和部署。
  • 文档收集器:基于 NodeJS Express 服务器,负责从 UI 处理和解析文档。

AnythingLLM 的最小要求

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

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

如何运行 AnythingLLM

1. 设置开发环境

  1. 安装依赖:在仓库根目录下运行 yarn setup,填充每个应用程序部分所需的 .env 文件。
  2. 启动服务器:运行 yarn dev:server 启动本地服务器。
  3. 启动前端:运行 yarn dev:frontend 启动本地前端。
  4. 启动文档收集器:运行 yarn dev:collector 启动文档收集器。

2. 自托管部署

Mintplex Labs 提供了多种部署方法,包括 Docker、AWS、GCP、Digital Ocean 和 Render.com。下面选择 Docker 作为部署方法进行详细介绍。

推荐使用 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 离线

如果你在远程机器(如 EC2)上运行 Docker 容器,并且无法通过 http://localhost:3001 访问 API,请确保在 frontend/.env.production 中设置正确的 API 基础 URL。例如,如果 Docker 实例的 IP 地址为 192.186.1.222,则应将 VITE_API_BASE 设置为 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 常见问题 进行排查。

资源


❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发非常感兴趣,我会每日分享大模型与 AI 领域的最新开源项目和应用,提供运行实例和实用教程,帮助你快速上手AI技术!

🥦 微信公众号|搜一搜:蚝油菜花 🥦

相关文章
|
2月前
|
云安全 人工智能 安全
Dify平台集成阿里云AI安全护栏,构建AI Runtime安全防线
阿里云 AI 安全护栏加入Dify平台,打造可信赖的 AI
2828 166
|
2月前
|
人工智能 测试技术 API
构建AI智能体:二、DeepSeek的Ollama部署FastAPI封装调用
本文介绍如何通过Ollama本地部署DeepSeek大模型,结合FastAPI实现API接口调用。涵盖Ollama安装、路径迁移、模型下载运行及REST API封装全过程,助力快速构建可扩展的AI应用服务。
842 6
|
2月前
|
人工智能 API 开发工具
构建AI智能体:一、初识AI大模型与API调用
本文介绍大模型基础知识及API调用方法,涵盖阿里云百炼平台密钥申请、DashScope SDK使用、Python调用示例(如文本情感分析、图像文字识别),助力开发者快速上手大模型应用开发。
1378 16
构建AI智能体:一、初识AI大模型与API调用
|
2月前
|
存储 机器学习/深度学习 人工智能
构建AI智能体:三、Prompt提示词工程:几句话让AI秒懂你心
本文深入浅出地讲解Prompt原理及其与大模型的关系,系统介绍Prompt的核心要素、编写原则与应用场景,帮助用户通过精准指令提升AI交互效率,释放大模型潜能。
596 5
|
2月前
|
机器学习/深度学习 人工智能 JSON
PHP从0到1实现 AI 智能体系统并且训练知识库资料
本文详解如何用PHP从0到1构建AI智能体,涵盖提示词设计、记忆管理、知识库集成与反馈优化四大核心训练维度,结合实战案例与系统架构,助你打造懂业务、会进化的专属AI助手。
296 6
|
9月前
|
SQL
【YashanDB知识库】手工迁移Doris数据到崖山分布式
【YashanDB知识库】手工迁移Doris数据到崖山分布式
|
9月前
|
存储 人工智能 搜索推荐
WiseMindAI:一款AI智能知识库,数据完全本地化,支持文档对话、10+种文档、10+AI大模型等
WiseMindAI 是一款由 Chris 开发的 AI 智能学习助手,支持数据完全本地化存储,确保用户隐私安全。它兼容多种文档格式(如 PDF、Markdown 等),并提供 AI 文档总结、智能笔记、沉浸式翻译、知识卡片生成等功能。此外,WiseMindAI 支持 10+ 大语言模型和自定义 AI 插件,适用于 Windows 和 Mac 平台,支持简体中文、繁体中文及英文。
864 74
WiseMindAI:一款AI智能知识库,数据完全本地化,支持文档对话、10+种文档、10+AI大模型等
|
9月前
|
Java 数据库连接
【YashanDB知识库】使用DBeaver 插入数据 nvarchar字段插入为空
【YashanDB知识库】使用DBeaver 插入数据 nvarchar字段插入为空
【YashanDB知识库】使用DBeaver 插入数据 nvarchar字段插入为空
|
9月前
|
Oracle 关系型数据库 Java
【YashanDB知识库】Flink CDC实时同步Oracle数据到崖山
本文介绍通过Flink CDC实现Oracle数据实时同步至崖山数据库(YashanDB)的方法,支持全量与增量同步,并涵盖新增、修改和删除的DML操作。内容包括环境准备(如JDK、Flink版本等)、Oracle日志归档启用、用户权限配置、增量日志记录设置、元数据迁移、Flink安装与配置、生成Flink SQL文件、Streampark部署,以及创建和启动实时同步任务的具体步骤。适合需要跨数据库实时同步方案的技术人员参考。
【YashanDB知识库】Flink CDC实时同步Oracle数据到崖山

热门文章

最新文章