AutoGPT:内存管理
设置客户端
采用Docker安装的AutoGPT在默认情况下采用Redis作为其内存管理客户端。其他情况下,默认为LocalCache(存储在JSON文件中)。
要切换到其他内存管理客户端,请将.env
中修改MEMORY_BACKEND
参数:
local
使用本地JSON存储文件pinecone
使用您在ENV设置中配置的Pinecone.io帐户redis
将使用您配置的redis内存管理milvus
将使用您配置的milvus内存管理weaviate
将使用您配置的weaviate内存管理
安装客户端
Redis安装
- 启动 Redis 容器
docker run -d --name redis-stack-server -p 6379:6379 redis/redis-stack-server:latest
- 在
.env
文件设置以下参数:MEMORY_BACKEND=redis REDIS_HOST=localhost REDIS_PORT=6379 REDIS_PASSWORD=<PASSWORD>
用您的密码替换 <PASSWORD>,省略尖括号(<>)。
可选配置:
WIPE_REDIS_ON_START=False
:运行时保留存储在 Redis 中的内存.MEMORY_INDEX=<WHATEVER>
:为 Redis 中的内存索引指定名称,默认值为auto-gpt
。
🌲 Pinecone API安装
Pinecone可存储大量基于向量的数据库,使代理可以在任何时候仅加载相关记忆。
编辑 .env
文件如下:
PINECONE_API_KEY
PINECONE_ENV
(例子:us-east4-gcp
)MEMORY_BACKEND=pinecone
Milvus安装
- 部署 Milvus 服务,可以使用 Docker 进行本地部署,也可以使用 Zilliz Cloud 进行托管。
- 运行
pip3 install pymilvus
安装所需的客户端库,请确保您的 PyMilvus 版本和 Milvus 版本兼容,以避免出现问题。 - 更新
.env
文件如下:MEMORY_BACKEND=milvus
- 二选一:
MILVUS_ADDR=host:ip
(本地部署)MILVUS_ADDR=https://xxx-xxxx.xxxx.xxxx.zillizcloud.com:443
(Zilliz云)
可选设置:
MILVUS_USERNAME='username-of-your-milvus-instance'
MILVUS_PASSWORD='password-of-your-milvus-instance'
MILVUS_SECURE=True
启用安全连接。仅当您的Milvus实例启用了TLS时才使用。注意:将MILVUS_ADDR
设置为https://
URL将覆盖此设置。MILVUS_COLLECTION
更改Milvus集合的名称。默认为autogpt
。
Weaviate安装
尽管处于实验阶段,AutoGP仍支持嵌入式Weaviate -- 允许Auto-GPT进程本身启动Weaviate实例。要启用它,请将USE_WEAVIATE_EMBEDDED
设置为 True
,并确保运行pip install "weaviate-client>=3.15.4"
。
安装Weaviate客户端
$ pip install weaviate-client
设置环境变量
在你的.env
文件中设置如下:
MEMORY_BACKEND=weaviate
WEAVIATE_HOST="127.0.0.1" # the IP or domain of the running Weaviate instance
WEAVIATE_PORT="8080"
WEAVIATE_PROTOCOL="http"
WEAVIATE_USERNAME="your username"
WEAVIATE_PASSWORD="your password"
WEAVIATE_API_KEY="your weaviate API key if you have one"
WEAVIATE_EMBEDDED_PATH="/home/me/.local/share/weaviate" # this is optional and indicates where the data should be persisted when running an embedded instance
USE_WEAVIATE_EMBEDDED=False # set to True to run Embedded Weaviate
MEMORY_INDEX="Autogpt" # name of the index to create for the application
查看内存使用量
使用 --debug
标签。
🧠 内存预填充
内存预填充允许您在运行Auto-GPT之前将文件注入到内存中并预先填充它。
$ python data_ingestion.py -h
usage: data_ingestion.py [-h] (--file FILE | --dir DIR) [--init] [--overlap OVERLAP] [--max_length MAX_LENGTH]
Ingest a file or a directory with multiple files into memory. Make sure to set your .env before running this script.
options:
-h, --help show this help message and exit
--file FILE The file to ingest.
--dir DIR The directory containing the files to ingest.
--init Init the memory and wipe its content (default: False)
--overlap OVERLAP The overlap size between chunks when ingesting files (default: 200)
--max_length MAX_LENGTH The max_length of each chunk when ingesting files (default: 4000)
# python data_ingestion.py --dir DataFolder --init --overlap 100 --max_length 2000
在上面的示例中,脚本初始化内存,并将位于Auto-Gpt/autogpt/auto_gpt_workspace/DataFolder
目录中的所有文件以100个块之间的重叠和每个块的最大长度为2000的方式注入到内存中。
请注意,您也可以使用--file
参数将单个文件注入到内存中,并且data_ingestion.py仅会注入/auto_gpt_workspace
目录中的文件。
DIR路径是关联于auto_gpt_workspace目录,因此python data_ingestion.py --dir . --init
将注入auto_gpt_workspace
目录中的所有内容。
请按需调整 max_length
和 overlap
参数。
记忆预填充是通过将相关数据注入到其内存中来提高AI准确性的技术。数据块被分割并添加到内存中,使AI能够快速访问它们并生成更准确的响应。它对于大型数据集或需要快速访问特定信息的情况非常有用。例如,在运行Auto-GPT之前注入API或GitHub文档。
WIPE_REDIS_ON_START=False
。对于其他客户端,我们目前在启动 Auto-GPT 时会强制清除内存。使用他们注入数据时,可以在 Auto-GPT 运行期间随时调用 data_ingestion.py
脚本。
一旦数据被读取过,内存将立即恢复对 AI 可用,即使是在 Auto-GPT 运行期间。是不是很牛逼!
版权声明:
作者:AutoGPT
链接:https://autogpt.cn/memory
来源:AutoGPT中文
文章版权归作者所有,未经允许请勿转载。