AutoGPT:内存管理

设置客户端

采用Docker安装的AutoGPT在默认情况下采用Redis作为其内存管理客户端。其他情况下,默认为LocalCache(存储在JSON文件中)。

要切换到其他内存管理客户端,请将.env中修改MEMORY_BACKEND参数:

  • local使用本地JSON存储文件
  • pinecone使用您在ENV设置中配置的Pinecone.io帐户
  • redis将使用您配置的redis内存管理
  • milvus将使用您配置的milvus内存管理
  • weaviate将使用您配置的weaviate内存管理

    安装客户端

    Redis安装

    如果您使用 Docker安装Auto-GPT,则 Redis 已经包含在其中,无需进一步设置。
    默认设置不适用于公开访问,缺乏安全措施。请务必设置好密码。
    1. 启动 Redis 容器
      docker run -d --name redis-stack-server -p 6379:6379 redis/redis-stack-server:latest
    2. .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

     

    关于Docker的密码设置和其他配置,请查阅 redis-stack-server

     

    🌲 Pinecone API安装

    Pinecone可存储大量基于向量的数据库,使代理可以在任何时候仅加载相关记忆。

    1. 如果您还没有pinecone账户,请前往pinecone并注册一个账户。
    2. 选择Starter计划以避免被收费。
    3. 在左侧边栏的默认项目下找到您的API密钥和区域。

      编辑 .env 文件如下:

      • PINECONE_API_KEY
      • PINECONE_ENV (例子: us-east4-gcp)
      • MEMORY_BACKEND=pinecone

      Milvus安装

      Milvus是一种开源的高度可扩展的向量数据库,用于存储大量基于向量的数据并提供快速搜索。它可以使用 Docker 快速部署,也可以作为Zilliz Cloud提供的云服务进行部署。

      1. 部署 Milvus 服务,可以使用 Docker 进行本地部署,也可以使用 Zilliz Cloud 进行托管。
      2. 运行 pip3 install pymilvus安装所需的客户端库,请确保您的 PyMilvus 版本和 Milvus 版本兼容,以避免出现问题。
      3. 更新.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安装

          Weaviate是一个开源的向量数据库。它允许存储来自ML模型的数据对象和向量嵌入,并无缝扩展到数十亿个数据对象。要设置Weaviate数据库,请查看官方的Quickstart教程

          尽管处于实验阶段,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文档。

          如果您使用 Redis 作为内存管理客户端,请确保在运行 Auto-GPT 时设置WIPE_REDIS_ON_START=False

          对于其他客户端,我们目前在启动 Auto-GPT 时会强制清除内存。使用他们注入数据时,可以在 Auto-GPT 运行期间随时调用 data_ingestion.py 脚本。

          一旦数据被读取过,内存将立即恢复对 AI 可用,即使是在 Auto-GPT 运行期间。是不是很牛逼!

          版权声明:
          作者:AutoGPT
          链接:https://autogpt.cn/memory
          来源:AutoGPT中文
          文章版权归作者所有,未经允许请勿转载。

          THE END
          分享
          AutoGPT:内存管理
          设置客户端 采用Docker安装的AutoGPT在默认情况下采用Redis作为其内存管理客户端。其他情况下,默认为LocalCache(存储在JSON文件中)。 要切换到其他内存管……
          <<上一篇
          下一篇>>
          文章目录
          关闭
          目 录