托管的 Chroma
Chroma Cloud 是我们完全托管的托管服务,目前处于早期访问阶段。填写调查问卷以跳过等待列表,并获得最佳的检索体验。全面访问将于 2025 年第一季度推出。
如果您在生产环境中使用 Chroma,请填写此表单,我们将把您添加到一个专门支持生产用户的 Slack 工作区。这是
- 在生产环境中构建 Chroma 时获得支持的最佳场所。
- 及时了解激动人心的新功能。
- 获取周边产品!
我们很乐意帮助您思考系统的设计,或者如果您适合我们即将推出的分布式云服务。
简单的 AWS 部署#
您可以在长时间运行的服务器上部署 Chroma,并远程连接到它。
有许多可能的配置,但为了方便起见,我们提供了一个非常简单的 AWS CloudFormation 模板,用于在 AWS 上的 EC2 上实验部署 Chroma。
Chroma 及其底层数据库至少需要 2GB 的 RAM,这意味着它无法适应 AWS 免费套餐提供的 1GB 实例。此模板使用 t3.small EC2 实例,每小时费用约为两美分,或每月 15 美元,并为您提供 2GiB 的内存。如果您按照这些说明操作,AWS 将相应地向您收费。
在本指南中,我们向您展示了如何使用 Chroma 的原生身份验证支持来保护您的端点。或者,您可以将其放在 AWS API Gateway 后面,或添加自己的身份验证代理。这个基本堆栈不支持任何类型的身份验证;任何知道您服务器 IP 的人都可以添加和查询嵌入。
默认情况下,此模板将所有数据保存在单个卷上。当您删除或替换它时,数据将消失。对于需要高可用性、备份等的严肃生产用途,请阅读并理解 CloudFormation 模板,并将其作为您需要的基础,或联系 Chroma 团队寻求帮助。
第 1 步:获取 AWS 账户#
您需要一个 AWS 账户。您可以使用已有的账户,或创建一个新账户。
第 2 步:获取凭证#
在此示例中,我们将使用 AWS 命令行接口。有几种方法来配置 AWS CLI,但为了这些示例的目的,我们假设您已获取 AWS 访问密钥,并将使用环境变量来配置 AWS。
在您的 shell 中导出 AWS_ACCESS_KEY_ID 和 AWS_SECRET_ACCESS_KEY 环境变量:
您还可以使用 AWS_REGION 环境变量配置 AWS 使用您选择的区域:
第 3 步:运行 CloudFormation#
Chroma 为每个版本发布了一个 CloudFormation 模板 到 S3。
要使用 AWS CloudFormation 启动模板,请运行以下命令行调用。
如果需要,请将 --stack-name my-chroma-stack 替换为不同的堆栈名称。
等待几分钟让服务器启动,Chroma 将可用!您可以使用 AWS 控制台或使用以下命令获取新 Chroma 服务器的公共 IP 地址:
请注意,即使实例的 IP 地址可用,Chroma 可能仍需要几分钟才能完全运行。
自定义堆栈(可选)#
CloudFormation 模板允许您传递特定的键/值对来覆盖堆栈的某些方面。可用的键包括:
InstanceType- 要运行的 AWS 实例类型(默认:t3.small)KeyName- 要使用的 AWS EC2 KeyPair,允许通过 SSH 访问实例(默认:无)
要使用 AWS CLI 设置 CloudFormation 堆栈的参数,请使用以下命令: --parameters 命令行选项。参数必须使用格式 ParameterName={parameter},ParameterValue={value} 指定。
例如,以下命令启动一个与上述类似的新堆栈,但在 m5.4xlarge EC2 实例上,并添加一个名为 mykey 的 KeyPair,以便任何拥有关联私钥的人都可以通过 SSH 进入机器:
步骤 4:Chroma 客户端设置#
一旦您的 EC2 实例启动并运行 Chroma,您需要做的就是配置您的 HttpClient 以使用服务器的 IP 地址和端口 8000。由于您在 AWS 上运行 Chroma 服务器,我们的 thin-client 包 可能足以满足您的应用程序需求。
步骤 5:清理(可选)#
要销毁堆栈并删除所有 AWS 资源,请使用 AWS CLI 的 delete-stack 命令。
注意
这将销毁 Chroma 数据库中的所有数据,除非您已经进行了快照或备份。
使用 AWS 进行身份验证#
默认情况下,我们的 CloudFormation 模板创建的 EC2 实例将不带身份验证运行。有许多方法可以在 AWS 上保护您的 Chroma 实例。在本指南中,我们将使用 Chroma 的本地身份验证支持进行简单的设置。
您可以在 身份验证指南 中了解更多关于 Chroma 身份验证的信息。
静态 API 令牌身份验证#
自定义 Chroma 的 CloudFormation 堆栈#
安全提示
当前的静态 API 令牌身份验证实现仅支持基于 ENV 的令牌。令牌必须是字母数字的 ASCII 字符串。令牌区分大小写。
例如,如果您希望静态 API 令牌为 "test-token",请在创建 Chroma 堆栈时传递以下参数。这将设置 Authorization: Bearer test-token 作为您的身份验证头。
要使用 X-Chroma-Token: test-token 类型的身份验证头,您可以设置 ChromaAuthTokenTransportHeader 参数:
客户端设置#
将 CHROMA_CLIENT_AUTH_CREDENTIALS 环境变量添加到您的本地环境中,并将其设置为您提供给服务器的令牌(在本例中为 test-token):
我们将使用 Chroma 的 Settings 对象在客户端上定义身份验证方法。
如果您使用自定义的 CHROMA_AUTH_TOKEN_TRANSPORT_HEADER(如 X-Chroma-Token),请将其添加到您的 Settings 中:
故障排除#
错误:该用户没有默认的VPC#
如果在创建 ChromaInstanceSecurityGroup 时遇到 No default VPC for this user 的错误,请前往 AWS VPC 部分 为您的用户创建一个默认的VPC。