Chroma 教程

Settings 对象

🎉摘要:深入解析 Chroma 的 Settings 配置对象,涵盖 PersistentClient 与 EphemeralClient 的实例化方式、persist_directory 与 path 参数优先级、常用字段默认值及完整配置列表输出方法。

前面介绍的 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_,嵌套用双下划线。

  

说说我的看法
全部评论()
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
其他应用
公众号