图龙网络科技

问答社区

原创作者: 图龙网络科技 发布时间: 2023-09-23 229.8K 人阅读

AnythingLLM 面向所有人的超高效和开源企业级文档聊天机器人解决方案。

太极混元 发布于 7个月前 分类:CHATGPT

AnythingLLM:一个符合业务标准的文档聊天机器人
面向所有人的超高效和开源企业级文档聊天机器人解决方案。

一个全栈应用程序,使您能够将任何文档、资源或内容转换为任何 LLM 都可以在聊天期间用作参考的上下文。此应用程序允许您选择要使用的 LLM 或向量数据库。目前,该项目支持Pinecone,ChromaDB等用于矢量存储,OpenAI用于LLM/聊天。

开源:https://github.com/hanselpetter/AnythingLLM/archive/refs/heads/master.zip

SSH终端执行:git@github.com:hanselpetter/AnythingLLM.git

1713663258-aa8af3ebe14831a

产品概述

AnythingLLM 旨在成为一个全栈应用程序,您可以在其中使用商用现成的 LLM 或流行的开源 LLM 和 vectorDB 解决方案。

Anything LLM 是一个全栈产品,您可以在本地运行,也可以远程托管,并能够与您提供的任何文档进行智能聊天。

AnythingLLM 将您的文档划分为称为 的对象。工作区的功能很像线程,但增加了文档的容器化。工作区可以共享文档,但它们不会相互通信,因此您可以保持每个工作区的上下文干净。workspaces

AnythingLLM的一些很酷的功能

  • 多用户实例支持和监督
  • 通过简单的 UI 以原子方式管理矢量数据库中的文档
  • 两种聊天模式和 .对话保留了以前的问题和修改。查询是针对您的文档的简单 QAconversationquery
  • 每个聊天回复都包含链接到原始内容的引文
  • 简单的技术堆栈,可实现快速迭代
  • 100% 云部署就绪。
  • “自带法学硕士”模式。仍在进行中 - 目前仅支持 OpenAI
  • 极其高效的节约成本措施,用于管理超大型文档。您永远不会为多次嵌入大量文档或成绩单付费。比其他文档聊天机器人解决方案更具成本效益 90%。
  • 用于自定义集成的完整开发人员 API!

技术概述

此 monorepo 由三个主要部分组成:

  • collector:使您能够快速将在线资源或本地文档转换为 LLM 可用格式的 Python 工具。
  • frontend:一个 viteJS + React 前端,您可以运行它来轻松创建和管理 LLM 可以使用的所有内容。
  • server:一个 nodeJS + express 服务器,用于处理所有交互并执行所有 vectorDB 管理和 LLM 交互。

要求

  • yarn在您的机器上node
  • python3.9+ 用于在 .collector/
  • 访问像 , .GPT-3.5GPT-4
  • 一个 Pinecone.io 免费帐户*。 *您可以使用直接替换来代替这些。这只是最容易快速启动和运行的方法。我们支持多个矢量数据库提供商。

如何入门(Docker - 简单设置)

使用 Docker 在几分钟内启动并运行

如何入门(开发环境)

  • yarn setup从项目根目录。
    • 这将填写您在每个应用程序部分中所需的文件。在继续之前先填写这些内容,否则事情将无法正常进行。.env
  • cd frontend && yarn install && cd ../server && yarn install从项目根目录。

要在本地启动服务器(从存储库的根目录运行命令):

  • 确保已设置并填写。server/.env.developmentyarn dev:server

要在本地启动前端(从存储库的根目录运行命令):

  • 确保已设置并填写。frontend/.env
  • 确保VITE_API_BASE="http://localhost:3001/api" yarn dev:frontend

接下来,您将需要一些内容进行嵌入。这可能是 Youtube 频道、Medium 文章、本地文本文件、Word 文档,等等。这是您将使用存储库部分的位置。collector/

设置并运行收集器脚本

了解文档

了解矢量缓存

贡献

  • 创建问题
  • 创建分支名称格式为<issue number>-<short name>

遥测

Mintplex Labs Inc 的 AnythingLLM 包含收集匿名使用信息的遥测功能。

为什么?

我们使用这些信息来帮助我们了解 AnythingLLM 的使用方式,帮助我们确定新功能和错误修复工作的优先级,并帮助我们提高 AnythingLLM 的性能和稳定性。

选择退出

在服务器或 docker .env 设置中设置为“true”以选择退出遥测。DISABLE_TELEMETRY

DISABLE_TELEMETRY="true"

你明确跟踪什么?

我们只会跟踪有助于我们做出产品和路线图决策的使用详细信息,特别是:

  • 安装版本
  • 添加或删除文档时。没有关于文档的信息。只是事件发生了。这给了我们一个使用的概念。
  • 正在使用的矢量数据库的类型。让我们知道哪个矢量数据库提供程序最常用于在该提供程序的更新到达时确定更改的优先级。
  • 正在使用的 LLM 类型。让我们了解最受欢迎的选择,并在该提供商的更新到达时确定更改的优先级。
  • 聊天已发送。这是最常规的“事件”,让我们了解该项目在所有装置中的日常活动。同样,只发送事件 - 我们没有关于聊天本身的性质或内容的信息。

您可以通过查找调用的所有位置来验证这些声明。此外,这些事件将写入输出日志,因此您还可以查看发送的特定数据(如果启用)。不会收集 IP 或其他识别信息。遥测提供程序是 PostHog - 一种开源遥测收集服务。Telemetry.sendTelemetry

如何使用 Dockerized Anything LLM

使用 AnythingLLM 的 Dockerized 版本可以更快、更完整地启动 AnythingLLM。

要求

  • 在您的计算机或计算机上安装 Docker

如何安装

  • git clone此存储库并访问根目录。cd anything-llm
  • cd docker/
  • cp .env.example .env以创建文件。.env
  • 编辑文件并更新变量.env
  • docker-compose up -d --build要构建映像 - 这将需要一些时间。

构建过程完成后,您的 docker 主机将显示映像为联机。这会将应用构建为 .http://localhost:3001

如何使用用户界面

  • 要访问完整的应用程序,请访问您的浏览器。http://localhost:3001

如何将文件添加到我的系统

  • 从 Workspace 设置中的 UI 上传文件

  • 运行收集器脚本来获取外部数据(文章、URL 等)

    • docker exec -it --workdir=/app/collector anything-llm python main.py
  • 运行收集器监视脚本以处理 hotdir 中的文件

    • docker exec -it --workdir=/app/collector anything-llm python watch.py
    • 合规文件上传到,它们将被处理并在 UI 中可用。./collector/hotdir

如何更新和重建环境环境?

  • 更新并运行以使用新环境进行重建。./docker/.envdocker-compose up -d --build

关于 ENV 中的 UID 和 GID

  • 默认情况下,UID 和 GID 设置为 1000。这是 Docker 容器和大多数主机操作系统上的默认用户。如果主机用户 UID 和 GID 与文件中设置的内容不匹配,则可能会遇到权限问题。.env

⚠️Vector DB 支持⚠️

开箱即用,支持所有向量数据库。下面列出了任何需要特殊配置的向量数据库。

将本地 ChromaDB 与 Dockerized AnythingLLM 结合使用

  • 确保您的文件中有./docker/.env
#./docker/.env
...other configs

VECTOR_DB="chroma"
CHROMA_ENDPOINT='http://host.docker.internal:8000' # Allow docker to look on host port, not container.

...other configs

常见问题和解决方法

API不工作,无法登录,LLM“离线”?

您可能正在远程计算机(如 EC2)或其他实例上运行 docker 容器,其中可访问的 URL 不是,而是类似 - 在这种情况下,您需要做的就是在运行之前将以下内容添加到您的http://localhost:3001http://193.xx.xx.xx:3001frontend/.env.productiondocker-compose up -d --build

# frontend/.env.production
GENERATE_SOURCEMAP=false
VITE_API_BASE="http://<YOUR_REACHABLE_IP_ADDRESS>:3001/api"

例如,如果 docker 实例在 you 上可用,则如 所示。192.186.1.222VITE_API_BASEVITE_API_BASE="http://192.186.1.222:3001/api"frontend/.env.production

还是不行?

在 Discord 上寻求帮助

0个回复

  • 龙族们都在等待回复

提供中小企业建站高端正版精品系统

正品模板 购买协议