前面介绍的 PersistentClient(持久化客户端)、EphemeralClient(临时客户端),二者在实例化的时候,都可以传入同一个 Settings 配置对象,用来统一控制 Chroma 的底层行为(存储路径、遥测、是否允许重置、CORS、迁移策略等)。它们的区别只是:
PersistentClient:数据落地存磁盘
EphemeralClient:内存运行,程序关闭数据就丢但它们接收配置的方式是一致的。
示例:
import chromadb
import os
import tempfile
from chromadb.config import Settings
# 持久化示例写到临时目录,工作目录保持干净
os.chdir(tempfile.mkdtemp(prefix="chroma_demo_"))
# 设置对象
settings = Settings(
is_persistent=True,
persist_directory="./chroma_data",
allow_reset=True,
anonymized_telemetry=False, # 关掉匿名遥测
)
client = chromadb.PersistentClient(settings=settings)
print(client)
# 或者
client = chromadb.PersistentClient(path="./chroma_data", settings=settings)
print(client)注意到没有,可以在 PersistentClient 通过参数 path 指定存放数据目录,Settings 对象的 persist_directory 参数也能指定存放目录。 但是优先级是“path 参数 > settings.persist_directory”, 上面代码里这种写法,settings 里面写的 persist_directory 会被忽略,实际生效的是 path="./chroma_data"。
常用字段:
| 字段 | 说明 | 默认 |
| is_persistent | 是否把向量库数据落盘持久化,默认不持久(内存模式)。 | False |
| persist_directory | 持久化时存放数据的文件夹,默认 ./chroma。 | ./chroma |
| allow_reset | 是否开放 client.reset() 清空全部数据接口,默认关闭,防止误删。 | False |
| anonymized_telemetry | 是否上报匿名统计遥测,默认开启;生产一般关。 | True |
| migrations | 数据库迁移策略,apply 自动执行迁移,validate 只校验不执行,默认自动迁移。 | apply |
| migrations_hash_algorithm | 迁移文件校验哈希算法,可选 md5 /sha256,默认 md5。 | md5 |
| chroma_server_cors_allow_origins | 服务端 CORS 跨域白名单,默认空列表,不允许跨域。 | [] |
如果想看完整列表:
from chromadb.config import Settings
for k, v in sorted(Settings.model_fields.items()):
print(k, "=", v.default)运行输出如下:
# 是否允许调用 reset() 清空全部数据集合
allow_reset = False
# 是否开启匿名遥测上报(Posthog 统计)
anonymized_telemetry = True
# 底层API实现,Rust绑定版本(高性能默认实现)
chroma_api_impl = chromadb.api.rust.RustBindingsAPI
# 异步限流器实现类
chroma_async_rate_limit_enforcer_impl = chromadb.rate_limit.simple_rate_limit.SimpleAsyncRateLimitEnforcer
# 认证token传递的HTTP请求头,None代表默认
chroma_auth_token_transport_header = None
# 客户端认证凭据对象
chroma_client_auth_credentials = None
# 客户端认证提供者实现
chroma_client_auth_provider = None
# 集合分片分配策略实现
chroma_collection_assignment_policy_impl = chromadb.ingest.impl.simple_policy.SimpleAssignmentPolicy
# 消息消费端存储实现,sqlite本地库
chroma_consumer_impl = chromadb.db.impl.sqlite.SqliteDB
# 协调服务主机地址
chroma_coordinator_host = localhost
# 旧版数据库实现入口(新版废弃,置空)
chroma_db_impl = None
# 查询执行器实现,本地单进程执行器
chroma_executor_impl = chromadb.execution.executor.local.LocalExecutor
# HTTP长连接保活时长,单位秒
chroma_http_keepalive_secs = 40.0
# HTTP最大连接总数限制,None不限制
chroma_http_max_connections = None
# HTTP最大保活空闲连接数,None不限制
chroma_http_max_keepalive_connections = None
# 日志服务主机地址
chroma_logservice_host = localhost
# 日志服务端口号
chroma_logservice_port = 50052
# 日志服务请求超时时间(秒)
chroma_logservice_request_timeout_seconds = 3
# 集群节点发现提供者实现
chroma_memberlist_provider_impl = chromadb.segment.impl.distributed.segment_directory.CustomResourceMemberlistProvider
# 内存上限字节数,0=不限制
chroma_memory_limit_bytes = 0
# OpenTelemetry链路追踪上报地址,空则不上报
chroma_otel_collection_endpoint =
# OTel上报请求附加头信息
chroma_otel_collection_headers = {}
# OTel采集粒度
chroma_otel_granularity = None
# OTel上报服务名
chroma_otel_service_name = chromadb
# 是否使用鉴权信息覆盖租户/数据库访问权限
chroma_overwrite_singleton_tenant_database_access_from_auth = False
# 生产者写入存储实现,sqlite本地库
chroma_producer_impl = chromadb.db.impl.sqlite.SqliteDB
# 产品遥测上报实现(Posthog)
chroma_product_telemetry_impl = chromadb.telemetry.product.posthog.Posthog
# 查询副本数(分片查询副本数量)
chroma_query_replication_factor = 2
# 查询接口请求超时时间(秒)
chroma_query_request_timeout_seconds = 60
# 配额校验器实现
chroma_quota_enforcer_impl = chromadb.quota.simple_quota_enforcer.SimpleQuotaEnforcer
# 配额提供者实现
chroma_quota_provider_impl = None
# 同步限流器实现类
chroma_rate_limit_enforcer_impl = chromadb.rate_limit.simple_rate_limit.SimpleRateLimitEnforcer
# 限流规则提供者实现
chroma_rate_limiting_provider_impl = None
# 分片缓存策略,None为默认策略
chroma_segment_cache_policy = None
# 分片目录路由管理实现(集群分片寻址)
chroma_segment_directory_impl = chromadb.segment.impl.distributed.segment_directory.RendezvousHashSegmentDirectory
# 分片目录路由模式:ID哈希路由
chroma_segment_directory_routing_mode = RoutingMode.ID
# 分片管理器实现,本地分片管理器
chroma_segment_manager_impl = chromadb.segment.impl.manager.local.LocalSegmentManager
# 默认服务API版本
chroma_server_api_default_path = APIVersion.V2
# 免身份校验的路由白名单
chroma_server_auth_ignore_paths = {'APIVersion.V2': ['GET'], 'APIVersion.V2/heartbeat': ['GET'], 'APIVersion.V2/version': ['GET'], 'APIVersion.V1': ['GET'], 'APIVersion.V1/heartbeat': ['GET'], 'APIVersion.V1/version': ['GET']}
# 服务端认证凭据
chroma_server_authn_credentials = None
# 服务端认证凭据文件路径
chroma_server_authn_credentials_file = None
# 服务端身份认证提供者
chroma_server_authn_provider = None
# 服务端鉴权配置对象
chroma_server_authz_config = None
# 服务端鉴权配置文件路径
chroma_server_authz_config_file = None
# 服务端权限鉴权提供者
chroma_server_authz_provider = None
# CORS跨域允许域名列表
chroma_server_cors_allow_origins = []
# GRPC服务端口,None不启用grpc
chroma_server_grpc_port = None
# 全局自定义响应头
chroma_server_headers = None
# HTTP服务监听主机
chroma_server_host = None
# HTTP服务监听端口
chroma_server_http_port = None
# 进程最大文件句柄数限制
chroma_server_nofile = None
# 是否开启服务端SSL加密
chroma_server_ssl_enabled = False
# SSL证书校验开关
chroma_server_ssl_verify = None
# 服务线程池大小
chroma_server_thread_pool_size = 40
# 元数据系统数据库实现,sqlite本地库
chroma_sysdb_impl = chromadb.db.impl.sqlite.SqliteDB
# 系统库请求超时时间(秒)
chroma_sysdb_request_timeout_seconds = 3
# 遥测底层实现,Posthog
chroma_telemetry_impl = chromadb.telemetry.product.posthog.Posthog
# 环境标识
environment =
# 是否持久化(遗留兼容字段,PersistentClient会覆盖该逻辑)
is_persistent = False
# 数据库迁移策略:apply=自动执行迁移
migrations = apply
# 迁移文件哈希算法
migrations_hash_algorithm = md5
# 持久化数据存储目录
persist_directory = ./chroma
# 默认租户ID
tenant_id = default
# 消息topic命名空间,集群消息队列隔离
topic_namespace = default
# 查询服务集群成员列表名称
worker_memberlist_name = query-service-memberlist注意,在生产环境建议关掉遥测 anonymized_telemetry=False。Settings 也支持环境变量覆盖(pydantic-settings),前缀是 CHROMA_,嵌套用双下划线。