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可存储大量基于向量的数据库,使代理可以在任何时候仅加载相关记忆。
- 如果您还没有账户,请前往并注册一个账户。
- 选择
Starter计划以避免被收费。 - 在左侧边栏的默认项目下找到您的API密钥和区域。
编辑 .env 文件如下:
PINECONE_API_KEYPINECONE_ENV(例子:us-east4-gcp)MEMORY_BACKEND=pinecone
Milvus安装
是一种开源的高度可扩展的向量数据库,用于存储大量基于向量的数据并提供快速搜索。它可以使用 Docker 快速部署,也可以作为提供的云服务进行部署。
- 部署 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安装
是一个开源的向量数据库。它允许存储来自ML模型的数据对象和向量嵌入,并无缝扩展到数十亿个数据对象。要设置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中文
文章版权归作者所有,未经允许请勿转载。

