主题
注意
本页假定你部署的是最新版 LlamaCloud。关于以往版本的信息,请参考发布说明。
开始之前
欢迎使用 LlamaCloud!开始之前,请确认你已具备下列前提:
LlamaCloud 许可证 key。要取得它,请通过 support@llamaindex.ai 联系我们。
Kubernetes 集群
>=1.28.0,以及可用的kubectl安装。Helm
v3.7.0+- 安装 Helm 请参考官方 Helm 文档。
OpenAI API Key 或 Azure OpenAI 凭据。配置 OpenAI 凭据是把部署跑起来最省事的方式。
- LlamaCloud 会贴合你组织的实际需要,支持配置 OpenAI 之外的 LLM,包括 Anthropic、Bedrock、Vertex AI 等。
- 要配置其他 LLM,请参阅侧栏 Configuration 一节下的文档。
文件存储:LlamaCloud 把文件存在对象存储里(S3、Azure Blob、GCS,或任何 S3 兼容存储,例如 MinIO)。
认证设置:
- OIDC。OIDC 是我们在生产部署里推荐的认证模式。
- Basic Auth(邮箱/密码):自 2025 年 7 月 24 日(
v0.5.0)起,我们同时支持oidc与basic两种认证方式。它更简单,更适合预发(staging)部署。 - 更多信息请参考认证模式文档。
外部服务的凭据(见下文)。
提示
只想在一台机器上评估? 同一个 chart 就能跑在本地集群里,不需要云账号。上面清单里那些假定由云托管的东西,两处替换就能覆盖:
- 对象存储:在集群里跑 MinIO,并让 S3Proxy 指向它。见文件存储里的 MinIO / S3 兼容 标签页。
- 认证:直接用 Basic Auth,不必为 OIDC 单独搭一个提供方。见认证模式。
后端存储可以完全按数据库与队列里写的方式用 Bitnami chart 装上,Temporal 则作为子 chart 起来。机器规格请对照下文的硬件要求来定。默认安装需要约 ~14 个可分配 vCPU,这通常是笔记本最先撞上的限制。
外部服务
LLamaCloud 需要下列外部服务可用:Postgres、MongoDB、Temporal 与 Redis。
提示
Temporal 可以通过设 temporal.deploy: true 作为子 chart 部署在 LlamaCloud 内部,这是快速起步的推荐做法。生产部署则可能更希望单独管理 Temporal。
请按数据库与队列文档为你的部署配置这些服务。
注意
请在安装 LlamaCloud chart 之前就部署好这些外部服务。下面这份最简 values.yaml 指向的是集群内主机名(postgresql、mongodb、redis-master),它们必须已经在 release 命名空间里能解析。
如果用 Bitnami chart 在集群内跑它们,你的集群还需要一个默认 StorageClass —— 或者给每个存储设 global.storageClass —— 否则它们的 PersistentVolumeClaim 会一直停在 Pending,pod 永远起不来。Amazon EKS 开箱不带默认 StorageClass。
硬件要求
- 跑 x86 CPU 的 Linux 实例
- 我们目前只提供 linux/amd64 镜像,暂不支持 arm64。
- worker 节点上的 Ubuntu >=22.04
- 可分配 vCPU >=14
- 可分配内存 >=80 GiB
这些是用默认值安装时整个集群范围的可分配下限。chart 默认的各类源请求加总就有 12.5 vCPU / 47.5 GiB,所以 12 vCPU 的集群根本排不下一次默认安装。上面的数字额外预留了系统 pod 与调度余量。有两件事会把要求进一步抬高:
- S3Proxy(
config.storageBuckets.s3proxy.enabled: true)会给每个使用 S3 的 pod 加一个 500m / 512Mi 的边车,一次默认安装大约多出 3 vCPU。 - 容器化的依赖。 把 PostgreSQL、MongoDB、Redis 或 Temporal 跑在同一个集群上,它们的 requests 要另外累加(见下一节)。
警告:LlamaParse 是 LlamaIndex 的专有文档解析器,跑起来可能非常消耗资源,尤其当你想压榨性能时。
注意
OCR 需要 GPU。 设 config.parseOcr.gpu: true 并提供 GPU 节点。此后每个 OCR pod 会请求 nvidia.com/gpu: 1,并且只会被调度到这些节点上。
在 CPU 上跑 OCR(config.parseOcr.gpu: false)已弃用,并会在未来的版本移除。它比 GPU 后端慢得多,也不支持用于生产负载。任何要解析扫描件或图像类文档的部署,都请按 GPU 容量来规划。
配置并安装你的部署
本节带你走一遍搭建最简 LlamaCloud 部署的步骤。
最简 values.yaml 配置
要把一个最简的 LlamaCloud 部署跑起来,可以新建一个 values.yaml,内容如下:
- OpenAI + OIDC 认证
- Azure OpenAI + OIDC 认证
- OpenAI + Basic 认证
- Azure OpenAI + Basic 认证
license:
key: <LLAMACLOUD-LICENSE-KEY>
postgresql:
host: "postgresql"
port: "5432"
database: "llamacloud"
username: <POSTGRES-USERNAME>
password: <POSTGRES-PASSWORD>
mongodb:
host: "mongodb"
port: "27017"
username: <MONGODB-USERNAME>
password: <MONGODB-PASSWORD>
redis:
scheme: "redis"
host: "redis-master"
port: "6379"
db: 0
# Deploy Temporal as a subchart (host/port auto-configured)
temporal:
deploy: true
# Temporal subchart configuration (uses same PostgreSQL instance).
# The Temporal store password is taken from your postgresql.password above —
# the chart generates the temporal-postgresql-secret automatically.
temporal-subchart:
server:
config:
persistence:
defaultStore: default
visibilityStore: visibility
datastores:
default:
sql:
connectAddr: "postgresql:5432"
databaseName: temporal
user: <POSTGRES-USERNAME>
visibility:
sql:
connectAddr: "postgresql:5432"
databaseName: temporal_visibility
user: <POSTGRES-USERNAME>
config:
llms:
openAi:
apiKey: <OPENAI-APIKEY>
frontend:
enabled: true
parseOcr:
# Each OCR pod requests `nvidia.com/gpu: 1` and schedules only on GPU
# nodes. Running OCR on CPU (gpu: false) is deprecated and will be
# removed in a future release.
gpu: true
# Required. Without this the chart falls back to provider "aws" and the
# literal default bucket names, which are almost certainly not yours.
# See the File Storage guide for S3-compatible and non-AWS backends.
storageBuckets:
provider: "aws"
parsedDocuments: <YOUR-BUCKET>
parsedEtl: <YOUR-BUCKET>
parsedExternalComponents: <YOUR-BUCKET>
parsedFileParsing: <YOUR-BUCKET>
parsedRawFile: <YOUR-BUCKET>
parseOutput: <YOUR-BUCKET>
parsedFileScreenshot: <YOUR-BUCKET>
extractOutput: <YOUR-BUCKET>
parseFileUpload: <YOUR-BUCKET>
parseFileOutput: <YOUR-BUCKET>
authentication:
oidc:
enabled: true
discoveryUrl: "https://login.microsoftonline.com/<TENANT-ID>/v2.0/.well-known/openid-configuration"
clientId: <CLIENT-ID>
clientSecret: <CLIENT-SECRET> license:
key: <LLAMACLOUD-LICENSE-KEY>
postgresql:
host: "postgresql"
port: "5432"
database: "llamacloud"
username: <POSTGRES-USERNAME>
password: <POSTGRES-PASSWORD>
mongodb:
host: "mongodb"
port: "27017"
username: <MONGODB-USERNAME>
password: <MONGODB-PASSWORD>
redis:
scheme: "redis"
host: "redis-master"
port: "6379"
db: 0
# Deploy Temporal as a subchart (host/port auto-configured)
temporal:
deploy: true
# Temporal subchart configuration (uses same PostgreSQL instance).
# The Temporal store password is taken from your postgresql.password above —
# the chart generates the temporal-postgresql-secret automatically.
temporal-subchart:
server:
config:
persistence:
defaultStore: default
visibilityStore: visibility
datastores:
default:
sql:
connectAddr: "postgresql:5432"
databaseName: temporal
user: <POSTGRES-USERNAME>
visibility:
sql:
connectAddr: "postgresql:5432"
databaseName: temporal_visibility
user: <POSTGRES-USERNAME>
config:
llms:
azureOpenAi:
# One entry per Azure deployment you want LlamaCloud to use.
# baseUrl is your Azure resource endpoint, NOT the OpenAI API.
deployments: []
# - model: "gpt-5.4"
# deploymentName: "gpt-5.4"
# apiKey: <AZURE-OPENAI-KEY>
# baseUrl: "https://<your-resource>.openai.azure.com"
# apiVersion: "2025-04-01-preview"
# - model: "gpt-5.4-mini"
# deploymentName: "gpt-5.4-mini"
# apiKey: <AZURE-OPENAI-KEY>
# baseUrl: "https://<your-resource>.openai.azure.com"
# apiVersion: "2025-04-01-preview"
frontend:
enabled: true
parseOcr:
# Each OCR pod requests `nvidia.com/gpu: 1` and schedules only on GPU
# nodes. Running OCR on CPU (gpu: false) is deprecated and will be
# removed in a future release.
gpu: true
# Required. Without this the chart falls back to provider "aws" and the
# literal default bucket names, which are almost certainly not yours.
# See the File Storage guide for S3-compatible and non-AWS backends.
storageBuckets:
provider: "aws"
parsedDocuments: <YOUR-BUCKET>
parsedEtl: <YOUR-BUCKET>
parsedExternalComponents: <YOUR-BUCKET>
parsedFileParsing: <YOUR-BUCKET>
parsedRawFile: <YOUR-BUCKET>
parseOutput: <YOUR-BUCKET>
parsedFileScreenshot: <YOUR-BUCKET>
extractOutput: <YOUR-BUCKET>
parseFileUpload: <YOUR-BUCKET>
parseFileOutput: <YOUR-BUCKET>
authentication:
oidc:
enabled: true
discoveryUrl: "https://login.microsoftonline.com/<TENANT-ID>/v2.0/.well-known/openid-configuration"
clientId: <CLIENT-ID>
clientSecret: <CLIENT-SECRET> license:
key: <LLAMACLOUD-LICENSE-KEY>
postgresql:
host: "postgresql"
port: "5432"
database: "llamacloud"
username: <POSTGRES-USERNAME>
password: <POSTGRES-PASSWORD>
mongodb:
host: "mongodb"
port: "27017"
username: <MONGODB-USERNAME>
password: <MONGODB-PASSWORD>
redis:
scheme: "redis"
host: "redis-master"
port: "6379"
db: 0
# Deploy Temporal as a subchart (host/port auto-configured)
temporal:
deploy: true
# Temporal subchart configuration (uses same PostgreSQL instance).
# The Temporal store password is taken from your postgresql.password above —
# the chart generates the temporal-postgresql-secret automatically.
temporal-subchart:
server:
config:
persistence:
defaultStore: default
visibilityStore: visibility
datastores:
default:
sql:
connectAddr: "postgresql:5432"
databaseName: temporal
user: <POSTGRES-USERNAME>
visibility:
sql:
connectAddr: "postgresql:5432"
databaseName: temporal_visibility
user: <POSTGRES-USERNAME>
config:
llms:
openAi:
apiKey: <OPENAI-APIKEY>
frontend:
enabled: true
parseOcr:
# Each OCR pod requests `nvidia.com/gpu: 1` and schedules only on GPU
# nodes. Running OCR on CPU (gpu: false) is deprecated and will be
# removed in a future release.
gpu: true
# Required. Without this the chart falls back to provider "aws" and the
# literal default bucket names, which are almost certainly not yours.
# See the File Storage guide for S3-compatible and non-AWS backends.
storageBuckets:
provider: "aws"
parsedDocuments: <YOUR-BUCKET>
parsedEtl: <YOUR-BUCKET>
parsedExternalComponents: <YOUR-BUCKET>
parsedFileParsing: <YOUR-BUCKET>
parsedRawFile: <YOUR-BUCKET>
parseOutput: <YOUR-BUCKET>
parsedFileScreenshot: <YOUR-BUCKET>
extractOutput: <YOUR-BUCKET>
parseFileUpload: <YOUR-BUCKET>
parseFileOutput: <YOUR-BUCKET>
authentication:
basicAuth:
enabled: true
validEmailDomain: "llamaindex.ai" # required: only addresses at this domain may register
# jwtSecret is optional. The chart generates one on first install
# and preserves it across upgrades. Set it only to control the value. license:
key: <LLAMACLOUD-LICENSE-KEY>
postgresql:
host: "postgresql"
port: "5432"
database: "llamacloud"
username: <POSTGRES-USERNAME>
password: <POSTGRES-PASSWORD>
mongodb:
host: "mongodb"
port: "27017"
username: <MONGODB-USERNAME>
password: <MONGODB-PASSWORD>
redis:
scheme: "redis"
host: "redis-master"
port: "6379"
db: 0
# Deploy Temporal as a subchart (host/port auto-configured)
temporal:
deploy: true
# Temporal subchart configuration (uses same PostgreSQL instance).
# The Temporal store password is taken from your postgresql.password above —
# the chart generates the temporal-postgresql-secret automatically.
temporal-subchart:
server:
config:
persistence:
defaultStore: default
visibilityStore: visibility
datastores:
default:
sql:
connectAddr: "postgresql:5432"
databaseName: temporal
user: <POSTGRES-USERNAME>
visibility:
sql:
connectAddr: "postgresql:5432"
databaseName: temporal_visibility
user: <POSTGRES-USERNAME>
config:
llms:
azureOpenAi:
# One entry per Azure deployment you want LlamaCloud to use.
# baseUrl is your Azure resource endpoint, NOT the OpenAI API.
deployments: []
# - model: "gpt-5.4"
# deploymentName: "gpt-5.4"
# apiKey: <AZURE-OPENAI-KEY>
# baseUrl: "https://<your-resource>.openai.azure.com"
# apiVersion: "2025-04-01-preview"
# - model: "gpt-5.4-mini"
# deploymentName: "gpt-5.4-mini"
# apiKey: <AZURE-OPENAI-KEY>
# baseUrl: "https://<your-resource>.openai.azure.com"
# apiVersion: "2025-04-01-preview"
frontend:
enabled: true
parseOcr:
# Each OCR pod requests `nvidia.com/gpu: 1` and schedules only on GPU
# nodes. Running OCR on CPU (gpu: false) is deprecated and will be
# removed in a future release.
gpu: true
# Required. Without this the chart falls back to provider "aws" and the
# literal default bucket names, which are almost certainly not yours.
# See the File Storage guide for S3-compatible and non-AWS backends.
storageBuckets:
provider: "aws"
parsedDocuments: <YOUR-BUCKET>
parsedEtl: <YOUR-BUCKET>
parsedExternalComponents: <YOUR-BUCKET>
parsedFileParsing: <YOUR-BUCKET>
parsedRawFile: <YOUR-BUCKET>
parseOutput: <YOUR-BUCKET>
parsedFileScreenshot: <YOUR-BUCKET>
extractOutput: <YOUR-BUCKET>
parseFileUpload: <YOUR-BUCKET>
parseFileOutput: <YOUR-BUCKET>
authentication:
basicAuth:
enabled: true
validEmailDomain: "llamaindex.ai" # required: only addresses at this domain may register
# jwtSecret is optional. The chart generates one on first install
# and preserves it across upgrades. Set it only to control the value.安装 Helm chart
终端窗口
# Add the Helm repository
helm repo add llamaindex https://run-llama.github.io/helm-charts
# Update your local Helm chart cache
helm repo update
# Create the llamacloud namespace
kubectl create ns llamacloud
# Install the Helm chart
helm install llamacloud llamaindex/llamacloud -f values.yaml --namespace llamacloud若要安装特定版本的 Helm chart,可以指定版本号:
终端窗口
helm install llamacloud llamaindex/llamacloud --version x.y.z -f values.yaml --namespace llamacloud验证安装结果
安装完成后,你会看到如下输出:
NAME: llamacloud
LAST DEPLOYED: Tue Nov 18 10:12:03 2025
NAMESPACE: llamacloud
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
Welcome to LlamaCloud!
View your deployment with the following:
kubectl get pods -n llamacloud
To view LlamaCloud UI in your browser:
Run the following command:
kubectl --namespace llamacloud port-forward svc/llamacloud-web 3000:80用 kubectl get pods -n llamacloud 列出 pod,应当能看到下面这些。这是一次 temporal.deploy: true 的安装,所以 Temporal 子 chart 的 pod 会与 LlamaCloud 的服务并列出现;后端存储若共用同一命名空间,也会出现在这里。
NAME READY STATUS RESTARTS AGE
llamacloud-76f6dd67b6-vqbzf 1/1 Running 0 10m
llamacloud-layout-b4887c5d9-tj9xw 1/1 Running 0 10m
llamacloud-ocr-8ffc8bf9b-prvth 1/1 Running 0 10m
llamacloud-operator-7b67757d88-nxlkj 1/1 Running 0 10m
llamacloud-telemetry-9d66956fd-5d95d 1/1 Running 0 10m
llamacloud-web-6b98cd88b-6887v 1/1 Running 0 10m
llamacloud-temporal-parse-c89c8d9c9-zvjvv 1/1 Running 0 10m
temporal-jobs-worker-76d6d58c77-2wlg2 1/1 Running 0 10m
llamacloud-temporal-subchart-admintools-67cf5d57b-9cn5x 1/1 Running 0 10m
llamacloud-temporal-subchart-frontend-78cbdc8ff7-pkxgl 1/1 Running 0 10m
llamacloud-temporal-subchart-history-54cb58579f-ph42c 1/1 Running 0 10m
llamacloud-temporal-subchart-matching-858d4dcd5b-brlp2 1/1 Running 0 10m
llamacloud-temporal-subchart-web-7f6b8c9d84-5nv4k 1/1 Running 0 10m
llamacloud-temporal-subchart-worker-59b794d59-54kvd 1/1 Running 0 10m
llamacloud-temporal-subchart-schema-1-2-0-1-vrzp4 0/1 Completed 0 10m
llamacloud-temporal-search-attributes-k2czv 0/1 Completed 0 10m其中两个 Completed 的 pod 是一次性任务。Temporal 的 schema job 负责开出 temporal 与 temporal_visibility 两个库,search-attributes job 负责注册自定义搜索属性。它们保持 Completed 是预期状态。
注意
已退役的 llamacloud-parse 部署不再生成。Parse 任务跑在 llamacloud-temporal-parse 上。
设了 config.storageBuckets.s3proxy.enabled: true 后,使用 S3 的那些 pod(llamacloud、llamacloud-operator、llamacloud-temporal-parse、temporal-jobs-worker)会多带一个 S3Proxy 边车,因而报告 2/2 而不是 1/1。
把 frontend 服务做端口转发,以访问 LlamaCloud 界面:
终端窗口
kubectl --namespace llamacloud port-forward svc/llamacloud-web 3000:80在浏览器打开 http://localhost:3000,就能看到 LlamaCloud 界面。
注意
端口转发只用于第一次冒烟测试。 在让别人使用这套部署之前,请先设好 ingress.host。chart 会由它推导部署自身的公网 URL;不设时后端会退回到托管产品的 URL,于是登录与注册后的跳转会把用户送到 cloud.llamaindex.ai 而不是你的部署。见 Ingress 配置。
下一步
按你的需要选择部署路径:
🌩️ 各云厂商的部署指南
多数用户的推荐 —— 面向主流云厂商的、观点明确的完整指南:
- Azure:AKS + Azure 原生服务,配 Microsoft Entra ID
- AWS:EKS + AWS 原生服务(即将推出)
- GCP:GKE + GCP 原生服务(即将推出)
这些指南用云原生服务与企业级认证,给出端到端的步骤。
⚙️ 自定义配置指南
面向高级用户 —— 有特定需求或非标准环境时:
- 认证模式 —— 配置 OIDC、basic 认证或自定义认证
- 文件存储 —— 部署 S3、Azure Blob、GCS 或其他存储
- 数据库与队列 —— 配置外部数据库与消息队列
- LLM 集成 —— 接通 OpenAI、Azure OpenAI、Bedrock 或其他 LLM
- Ingress 配置 —— 负载均衡、SSL 与网络
- 弹性伸缩配置 —— 各服务的 HPA 与 KEDA 扩缩
- 服务调优 —— 性能与扩容配置
若你需要自定义集成、有特定的合规要求,或想混搭不同服务,就用这些指南。
🚰 索引存储配置
在这里配置 LlamaCloud 的 Index 把文档的向量嵌入写到何处。目的地是部署级设置的,键为 config.defaultIndex.destination。支持的目标(MongoDB、Turbopuffer、PostgreSQL/pgvector、Azure AI Search)及其要求见 Index 配置。
更多示例与指南
- 每个组件还有大量可配置项。要看完整的 values.yaml 规格,请参考 Helm chart 仓库里的 values.yaml 文件。
- 想知道常见场景怎么配,请参考 Helm chart 仓库里的
values.yaml示例目录。 - 同样地,那里还有更多面向进阶配置的文档。