创建与任何事物聊天的私人ChatGPT-AnythingLLM

2023-12-19 19:16:14 浏览数 (1)

AnythingLLM

AnythingLLM: 与任何事物聊天的私人ChatGPT

一款高效、可定制、开源且适用于企业的文档聊天机器人解决方案。

这是一个全栈应用程序,能让你将任何文档、资源或内容转换成任何LLM可以在聊天中使用的上下文。此应用程序允许你选择和使用商用的现成LLM或流行的开源LLM和Vector Database,同时支持多用户管理和权限设置。

示例

产品概览

AnythingLLM是一个全栈应用程序,你可以使用市售的商业LLM或流行的开源LLM以及向量数据库解决方案来构建一个无妥协的私人ChatGPT。你可以在本地运行,也可以远程托管,并能够智能地与你提供的任何文档进行交流。

AnythingLLM将你的文档分成被称为工作区的对象。工作区的功能类似于线程,但增加了对文档的容器化。工作区可以共享文档,但它们不会相互交流,因此你可以为每个工作区保持清晰的上下文。

AnythingLLM的一些酷炫功能

支持多用户实例和权限设置•支持多种文档类型(PDF、TXT、DOCX等)•通过简单的UI管理你的向量数据库中的文档•两种聊天模式对话查询。对话模式保留之前的问题和修正。查询模式是针对你的文档的简单问答•聊天中的引用链接到原始文档来源和文本•简单的技术堆栈,便于快速迭代•100%云部署就绪•"自带你的LLM"模式•非常高效的成本节约措施,用于管理非常大的文档。你将不会为一次性嵌入大型文档或成绩单支付多次费用。比其他文档聊天机器人解决方案节省90%的成本•完整的开发者API,用于自定义集成!

支持的LLM、嵌入器和向量数据库

支持的LLM:

•任何开源llama.cpp兼容模型[1]•OpenAI[2]•Azure OpenAI[3]•Anthropic ClaudeV2[4]•LM Studio (所有模型)[5]•LocalAi (所有模型)[6]

支持的嵌入模型:

•AnythingLLM原生嵌入器[7](默认)•OpenAI[8]•Azure OpenAI[9]•LM Studio (所有)[10]•LocalAi (所有)[11]

支持的向量数据库:

•LanceDB[12](默认)•Pinecone[13]•Chroma[14]•Weaviate[15]•QDrant[16]

技术概览

这个单体仓库包含三个主要部分:

collector:Python工具,使你能够快速将在线资源或本地文档转换成LLM可用的格式。•frontend:一个viteJS React前端,你可以运行它来轻松创建和管理LLM可以使用的所有内容。•server:一个nodeJS express服务器,处理所有交互,管理向量数据库和LLM互动。•docker:Docker指令和构建过程 从源代码构建的信息。

最低要求

提示

在AWS/GCP/Azure上运行AnythingLLM?你应该至少准备2GB的RAM。磁盘存储取决于你将要存储的数据量(文档、向量、模型等)。建议最少10GB。

•需要在你的机器上安装yarnnodepython 3.9 用于运行collector/中的脚本。•访问本地或远程运行的LLM。

*AnythingLLM默认使用由LanceDB[17]提供支持的内置向量数据库

*AnythingLLM默认在实例上私有嵌入文本 了解更多[18]

使用Docker(简单!)推荐使用方式

重要

如果你在localhost上运行其他服务,例如Chroma、LocalAi或LMStudio,你需要使用http://host.docker.internal:xxxx[19] 从Docker容器内通过AnythingLLM访问该服务,因为localhost:xxxx无法解析主机系统。例如:在主机上运行在localhost:8000的Chroma主机URL需要在AnythingLLM中使用http://host.docker.internal:8000[20]。

提示

最好将容器的存储卷挂载到主机上的文件夹,这样你就可以在不删除现有数据的情况下拉取未来的更新!

docker pull mintplexlabs/anythingllm:master

代码语言:javascript复制

export STORAGE_LOCATION="/var/lib/anythingllm" && 
mkdir -p $STORAGE_LOCATION && 
touch "$STORAGE_LOCATION/.env" && 
docker run -d -p 3001:3001 
-v ${STORAGE_LOCATION}:/app/server/storage 
-v ${STORAGE_LOCATION}/.env:/app/server/.env 
-e STORAGE_DIR="/app/server/storage" 
mintplexlabs/anythingllm:master

打开 http://localhost:3001[21] 你现在正在使用AnythingLLM!你的所有数据和进度将在容器重建或从Docker Hub拉取时持续存在。

了解更多关于使用Docker运行AnythingLLM的信息[22]

如何开始(开发环境)

•从项目根目录运行yarn setup。• 这将填写你在应用程序各部分需要的.env文件。在继续之前去填写这些,否则事情可能不会正确运行。•运行yarn prisma:setup来构建Prisma客户端并迁移数据库。

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

•确保server/.env.development设置并填写完整。yarn dev:server

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

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

了解关于文档的更多信息[23]

了解关于向量缓存的更多信息[24]

独立脚本

这个仓库包含你可以运行以从YouTube频道、Medium文章、本地文本文件、Word文档等收集数据的独立脚本。你将在collector/部分的仓库中使用这些脚本。

去设置并运行收集器脚本[25]

贡献

•创建问题•使用<问题编号>-<简称>格式创建PR•太棒了,让我们合并吧

遥测

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

为什么?

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

选择退出

在你的服务器或docker .env设置中设置DISABLE_TELEMETRY为"true",以选择退出遥测。

代码语言:javascript复制
DISABLE_TELEMETRY="true"

你们明确追踪什么?

我们只会追踪帮助我们做出产品和路线图决策的使用细节,具体包括:

•你安装的版本•添加或移除文档时。没有关于文档的信息。只是发生了这一事件。这让我们知道使用情况。•使用的向量数据库类型。让我们知道哪个向量数据库提供商最受欢迎,以优先处理该提供商发布更新时的更改。•使用的LLM类型。让我们知道最受欢迎的选择,并优先处理该提供商发布更新时的更改。•发送聊天。这是最常规的“事件”,让我们了解这个项目在所有安装中的日常活动。再次强调,只有事件被发送 - 我们没有关于聊天本身的性质或内容的任何信息。

你可以通过查找所有调用Telemetry.sendTelemetry的位置来验证这些声明。此外,这些事件被写入输出日志,因此如果启用,你还可以看到发送的具体数据。不收集IP或其他识别信息。遥测提供商是PostHog[26] - 一个开源的遥测收集服务。

References

[1] 任何开源llama.cpp兼容模型: https://github.com/Mintplex-Labs/anything-llm/blob/master/server/storage/models/README.md#text-generation-llm-selection [2] OpenAI: https://openai.com/ [3] Azure OpenAI: https://azure.microsoft.com/en-us/products/ai-services/openai-service [4] Anthropic ClaudeV2: https://www.anthropic.com/ [5] LM Studio (所有模型): https://lmstudio.ai/ [6] LocalAi (所有模型): https://localai.io/ [7] AnythingLLM原生嵌入器: https://github.com/Mintplex-Labs/anything-llm/blob/master/server/storage/models/README.md [8] OpenAI: https://openai.com/ [9] Azure OpenAI: https://azure.microsoft.com/en-us/products/ai-services/openai-service [10] LM Studio (所有): https://lmstudio.ai/ [11] LocalAi (所有): https://localai.io/ [12] LanceDB: https://github.com/lancedb/lancedb [13] Pinecone: https://pinecone.io/ [14] Chroma: https://trychroma.com/ [15] Weaviate: https://weaviate.io/ [16] QDrant: https://qdrant.tech/ [17] LanceDB: https://github.com/lancedb/lancedb [18] 了解更多: https://github.com/Mintplex-Labs/anything-llm/blob/master/server/storage/models/README.md [19] http://host.docker.internal:xxxx: http://host.docker.internal:xxxx/ [20] http://host.docker.internal:8000: http://host.docker.internal:8000/ [21] http://localhost:3001: http://localhost:3001/ [22] 了解更多关于使用Docker运行AnythingLLM的信息: https://github.com/Mintplex-Labs/anything-llm/blob/master/docker/HOW_TO_USE_DOCKER.md [23] 了解关于文档的更多信息: https://github.com/Mintplex-Labs/anything-llm/blob/master/server/storage/documents/DOCUMENTS.md [24] 了解关于向量缓存的更多信息: https://github.com/Mintplex-Labs/anything-llm/blob/master/server/storage/vector-cache/VECTOR_CACHE.md [25] 去设置并运行收集器脚本: https://github.com/Mintplex-Labs/anything-llm/blob/master/collector/README.md [26] PostHog: https://posthog.com/

0 人点赞