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。
•需要在你的机器上安装yarn
和node
•python
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",以选择退出遥测。
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/