写点什么

如何在亚马逊云科技部署高可用 MaxKB 知识库应用

概述

MaxKB 是一款基于 RAG 技术的开源知识库问答系统,支持对接多种大语言模型,广泛应用于智能客服、企业知识库等场景。虽然 MaxKB 社区版提供了便捷的 Docker 快速部署方式,但企业在生产环境中需要更高的可靠性、安全性和运维便利性。

本文介绍如何基于亚马逊云科技托管服务构建高可用 MaxKB 应用架构。方案采用 AmazonECS 运行容器化应用,配合 RDS PostgreSQL(含 pgvector 扩展)和 ElastiCache Valkey 提供数据持久化和缓存能力,通过 Application Load Balancer 实现流量分发和多可用区部署,确保 99.9%以上的服务可用性。方案还集成了 Secrets Manager 进行密钥管理,支持对接 Amazon Bedrock 模型服务。

本文面向需要在生产环境部署企业级 AI 知识库的架构师和运维工程师,提供从架构设计、服务配置到部署验证的完整实施指南。

📢限时插播:无需管理基础设施,利用亚马逊技术与生态,快速集成与部署生成式 AI 模型能力。

✨ 精心设计,旨在引导您深入探索 Amazon Bedrock 的模型选择与调用、模型自动化评估以及安全围栏(Guardrail)等重要功能。

⏩快快点击进入《多模一站通 —— Amazon Bedrock 上的基础模型初体验》实验构建无限, 探索启程!

方案价值

MaxKB 核心能力¹

MaxKB 是基于 RAG(检索增强生成)技术的开源知识库问答系统,自 2024 年 4 月发布以来,已获得 19,000+ GitHub Stars,发展为企业级智能体平台。其核心能力包括:

  • 开箱即用的 RAG 问答引擎:支持多格式文档导入(PDF、Word、Markdown 等),自动文档解析、文本分块和向量化处理,答案支持富文本展示(图片、表格、图表等);

  • 多模型灵活对接:基于开源架构,支持对接 Amazon Bedrock 托管模型及国内外主流大语言模型和 Embedding 模型服务,兼容标准 API 接口,可根据业务需求灵活选择和切换;

  • 工作流编排:内置工作流引擎和函数库,支持 MCP 工具调用,可编排复杂的 AI Agent 处理流程,实现多步骤任务自动化;

  • 快速集成:提供 API 接口和零编码嵌入方式,可快速集成到企业现有业务系统或第三方系统,降低企业开发和部署成本。

典型应用场景:智能客服(7×24 小时自动问答)、企业知识库(内部知识管理和检索)、智能办公助手等。

亚马逊云科技托管方案的增强价值

MaxKB 社区版提供基于 Docker Compose 的快速部署方式,适合开发测试和小规模应用。但在企业生产环境中,面临单点故障风险、手动运维负担重、安全管理复杂等挑战。本方案基于亚马逊云科技托管服务,提供以下企业级增强能力:

1. 企业级高可用性

  • 多可用区架构、可用性 SLA 可达 99.9%以上:应用层(ECS)、数据库层(RDS Multi-AZ)、缓存层(ElastiCache)均采用跨多可用区部署,RDS 主节点故障时 60-120 秒内自动切换,ALB 自动分发流量并剔除异常容器,保障整体架构可达 99.9%以上的服务可用性,满足企业级应用要求;

2. 弹性伸缩能力

  • 应用层自动扩缩容:面对业务流量波动的场景需求,ECS 可根据资源使用率或请求数量规则自动调整任务数量;

  • 向量查询加速:RDS PostgreSQL + pgvector 提供高性能向量检索,db.r8g.16xlarge 规格下 100 并发可达毫秒级响应;

  • 缓存层在线扩展:ElastiCache 支持在线添加节点,无需停机即可提升缓存容量

3. 安全与合规

  • 密钥集中管理:Secrets Manager 安全存储数据库凭证、API 密钥等敏感信息,支持自动轮换,避免硬编码风险

  • 网络隔离:VPC 私有子网部署数据库和缓存,仅应用层可访问,公网不可达

  • 细粒度权限控制:IAM 角色和 Security Group 实现最小权限原则

适用场景:本方案特别适合需要在生产环境部署智能客服、企业知识库等 AI 应用的中大型企业,以及对可用性、安全性、合规性有较高要求的行业客户(如金融、医疗、政务等)。

解决方案概述

本解决方案将 MaxKB Docker 托管运行在亚马逊云科技容器服务 ECS 上,并配置 Amazon RDS for PostgresSQL 和 ElastiCache Valkey(兼容 Redis),作为 MaxKB 的外部数据库,实现 MaxKB 应用的高可用架构。

架构设计

1、用户通过互联网连接到应用程序,所有请求首先通过 Elastic Load Balancing 服务,确保流量均匀分布并提高系统可用性和容错能力。

2、负载均衡器将流量智能分配到 ECS 集群 内的多个 Service Frontend 实例,实现请求的高效处理和资源的动态伸缩。ECS 集群提供容器化环境,便于部署和管理应用服务。

3、应用程序内可以配置 LLM 模型和 Embedding 模型,支持访问 Bedrock 的模型服务:

  1. Bedrock LLM:提供大型语言模型服务

  2. Bedrock Embedding:提供文本嵌入服务

4、系统与 Secrets Management 模块集成,通过 Secrets Manager 安全存储和管理应用所需的密钥、令牌、凭证等敏感信息,确保信息不被硬编码到应用中。

5、应用程序连接到 RDS PostgreSQL 数据库服务,PostgreSQL 提供了强大的关系型数据库功能;同时在数据库安装了 pgvector,使您能够直接在 PostgreSQL 数据库中高效地存储、操作和分析向量数据。

6、架构引入了 Amazon ElastiCache for Valkey 缓存层(兼容 Redis 8.0),用于存储频繁访问的数据,减少数据库负载并提高应用响应速度。

亚马逊云科技托管数据库的产品优势

Amazon RDS for PostgresSQL

PostgreSQL 是许多企业开发人员和企业的首选开源关系数据库,为领先的商用和移动应用程序提供助力。Amazon RDS 让用户能够更轻松地在云中设置、操作和扩展 PostgreSQL 部署。借助 Amazon RDS,您可以在几分钟内完成可扩展的 PostgreSQL 部署,不仅经济实惠,而且可以调整硬件容量。Amazon RDS 除了具备托管的优势外,针对知识库应用场景也有明显的优势:

1.跨 AZ 强一致,保证主备数据一致性

Amazon RDS  Multi-AZ 部署架构在存储层 EBS 采用物理同步复制机制,主节点写入操作同步到备节点后才返回确认,确保数据零丢失,满足知识库数据完整性要求。

2.自动 failover,保证系统可用性

当 Amazon RDS 主节点故障时,Multi-AZ 支持自动 failover 到备节点,故障转移时间通常在 60-120 秒内完成,应用程序自动重连,无需人工干预,提供 99.95% 的可用性 SLA。

3.vector 向量查询性能高,读性能横向扩展

PostgreSQL 支持 pgvector 扩展,在满足 OLTP 数据库正常的业务需求之外还可以提供向量存储和高并发检索的能力,满足多模态业务需求,另外 RDS 只读副本可以进行在线扩展,支持最多 15 个只读副本。在 10TB 以内,并且有高 QPS 需求的场景下,性价比优于 Elasticsearch 和 Milvus。

如下是在 Amazon RDS for PostgreSQL db.r8g.16xlarge 规格下使用 VectorDBBench 进行 100 并发线程进行压测,每次压测时长 300s,分别在 Performance768D1M 和 Performance768D10M 两种数据集下,不同 ef_search 下的性能表现:

ElastiCache for Valkey

Valkey 是由 Linux 基金会支持的开源缓存数据库,保证了 vendor 的中立性,过去 6 个月,有 50 多万次 container pull 代码,几千个贡献,以及 40 多家公司的支持。亚马逊云科技作为 Valkey 的主要贡献之一,ElastiCache for Valkey 不仅给客户带来稳定的方案,也能保证 Valkey 持续的创新。ElastiCache for Valkey 的主要优势如下:

性价比提升

  1. 单点处理能力增强,采用 IO 线程多路复用技术,吞吐量增加 72%和 P99 耗时降低 71%,可以达到 1.2M QPS 读取性能,用户可以用更少节点数量或者更小机型来支撑同样规模应用。

  2. 托管的 ElastiCache for Valkey 8.0 优化了内存结构,单节点上可以存储更多的数据(相同数据存储空间占用减少 20%)。

客户端兼容性高

  1. 已有客户端访问 Valkey,接口和 redis 7.2 兼容,jedis、redis-benchmark、rediscluster、K6 等。

  2. Valkey-glide 作为亚马逊云科技贡献的开源客户端,与 python/Java/node.js/golang 多种客户端提供一致能力,支持更好 failover 以及连接池管理等。

其他增强

  1. Valkey8.0 主从复制效率大幅提升,RDB 和复制 backlog 的双通路实现,可以加快 sync 速度,单独进程处理 RDB 复制可以减少对主节点影响。

  2. resharding 重分片期间抗主节点故障能力增强。

  3. 提供 slot 级别指标,提供更好可观测性。

MaxKB on Amazon 解决方案部署指南

部署要求

MaxKB 应用部署要求包括:

  • 操作系统:Ubuntu 22.04 / CentOS 7(内核版本要求 ≥ 3.10)

  • CPU/内存:4C/8GB 以上

  • 磁盘空间:100GB

  • PostgrsSQL:17.6 版本

  • Redis:8.0 版本

在亚马逊云科技部署之前,您需要有一个可访问的亚马逊云科技账户,部署的主要资源包括:

  • Amazon VPC

  • Amazon RDS for postgreSQL

  • Amazon ElastiCache for Valkey

  • Amazon ECS

  • Amazon ALB

CDK 部署方式

为了简化高可用架构的部署流程,我们提供了基于 Amazon CDK(Cloud Development Kit)的一键部署代码和脚本:通过基础设施即代码(IaC)的方式,能够自动处理资源间的依赖关系,一条命令即可完成 VPC、RDS、ElastiCache、ECS、ALB 等所有组件的创建和配置,无需手动在控制台操作多个服务,大幅降低部署复杂度和人为错误,显著提高部署成功率和运维效率。

以下部署命令请在 Linux 环境运行。

1、从 github 下载 MaxKB-on-Amazon 部署代码

运行以下命令下载部署代码包:

git clone https://github.com/supinyu/sample-maxkb-on-aws.git
复制代码

2、安装 Docker

sudo yum install docker python3-pip git npm -y
# Configure Docker Componentssudo systemctl enable docker
sudo systemctl start docker
sudo usermod -aG docker $USER
newgrp docker
复制代码

3、安装 aws cdk

sudo npm install -g aws-cdk
复制代码

4、安装相关的 npm 包

cd 20251020-hex-cdk
npm install aws-cdk-lib
复制代码

5、账号信息及部署 Region ID 导入到环境变量中

export AWS_ACCOUNT_ID=XXXXXXXXXXXXexport AWS_REGION=us-west-2
复制代码

6、进行 CDK 部署

cdk bootstrap aws://$AWS_ACCOUNT_ID/$AWS_REGION
cdk deploy HexRagCdkStack --require-approval never
复制代码

以上部署过程通常需要 15-20 分钟,CDK 会自动完成以下操作:

  • 创建 VPC 和子网

  • 配置安全组规则

  • 部署 RDS PostgreSQL 数据库(含 pgvector 扩展)

  • 部署 ElastiCache Valkey 集群

  • 创建 ECS 集群和任务定义

  • 配置 ALB 负载均衡器

  • 设置 Secrets Manager 密钥管理

  • 配置自动扩展策略

7、 验证部署

部署完成后,CDK 会输出 ALB 的 DNS 地址,通过该地址即可访问 MaxKB 应用:

# 输出示例RagCdkStack.LoadBalancerDNS = RagCdkStack-ALB-XXXXXXXXXX.us-west-2.elb.amazonaws.com
复制代码

8、版本更新

如需更新 MaxKB 版本(比如从 maxkb-v2.1.1 升级到 maxkb-v2.x.x),只需修改 Dockerfile 中对应的 MaxKB 镜像版本号,然后重新执行部署命令:

cdk deploy HexRagCdkStack —require-approval never
复制代码

CDK 会自动检测变更并仅更新受影响的资源,实现零停机滚动更新。

MaxKB 应用效果

这里我们以一个对话问答助手为例,演示 MaxKB 的使用效果。

支持 Bedrock 模型

首先需要添加 LLM 模型和 Embedding 模型,MaxKB 支持 Bedrock 模型,可以在模型配置页面进行添加,具体的操作如下:

1、添加 LLM 模型

2、添加 Embedding 模型

3、知识库创建

接下来,我们创建知识库

4、上传需要问答的 pdf 文档

5、创建知识库问答助手

在创建对话助手页面,可以配置对话流程,MaxKB 具有灵活的流程配置功能。配置完成,用户可以针对对话流程进行调试和发布。

对话助手发布之后,我们可以进行相关的问答。

在管理界面,我们也可以对相关的数据进行统计监控。

总结

本方案通过将 MaxKB 社区版迁移部署在亚马逊云科技托管服务上,构建了高可用、可扩展的 RAG 知识库应用,实现了从单机 Docker 部署向企业级云原生架构的转型,为企业知识管理和智能问答场景提供了完整的技术解决方案。

参考资料

[1] MaxKB on Github:https://github.com/1Panel-dev/MaxKB

[2] MaxKB 社区版下载:https://community.fit2cloud.com/#/products/maxkb/downloads

[3] MaxKB 离线安装文档:https://maxkb.cn/docs/v2/installation/offline_installtion/

*前述特定亚马逊云科技生成式人工智能相关的服务目前在亚马逊云科技海外区域可用。亚马逊云科技中国区域相关云服务由西云数据和光环新网运营,具体信息以中国区域官网为准。

本篇作者


本期最新实验《多模一站通 —— Amazon Bedrock 上的基础模型初体验

✨ 精心设计,旨在引导您深入探索 Amazon Bedrock 的模型选择与调用、模型自动化评估以及安全围栏(Guardrail)等重要功能。无需管理基础设施,利用亚马逊技术与生态,快速集成与部署生成式 AI 模型能力。

⏩️[点击进入实验] 即刻开启 AI 开发之旅构建无限, 探索启程!

用户头像

还未添加个人签名 2019-09-17 加入

进入亚马逊云科技开发者网站,请锁定 https://dev.amazoncloud.cn 帮助开发者学习成长、交流,链接全球资源,助力开发者成功。

评论

发布
暂无评论
如何在亚马逊云科技部署高可用MaxKB知识库应用_人工智能_亚马逊云科技 (Amazon Web Services)_InfoQ写作社区