diff --git a/docker/.env.example b/docker/.env.example index 48068cfdcbe..c9f608e9b59 100644 --- a/docker/.env.example +++ b/docker/.env.example @@ -211,6 +211,8 @@ GID='1000' # CHROMA_ENDPOINT='http://host.docker.internal:8000' # CHROMA_API_HEADER="X-Api-Key" # CHROMA_API_KEY="sk-123abc" +# CHROMA_TENANT="default_tenant" # Optional: for Chroma Cloud multi-tenancy +# CHROMA_DATABASE_NAME="default_database" # Optional: for Chroma Cloud database selection # Enable all below if you are using vector database: Pinecone. # VECTOR_DB="pinecone" diff --git a/frontend/src/components/VectorDBSelection/ChromaDBOptions/index.jsx b/frontend/src/components/VectorDBSelection/ChromaDBOptions/index.jsx index cdcda5cca72..98ecebe1531 100644 --- a/frontend/src/components/VectorDBSelection/ChromaDBOptions/index.jsx +++ b/frontend/src/components/VectorDBSelection/ChromaDBOptions/index.jsx @@ -46,6 +46,42 @@ export default function ChromaDBOptions({ settings }) { /> + +
+
+ + +
+ +
+ + +
+
); } diff --git a/server/.env.example b/server/.env.example index 03c5382fbd5..b97adbffcac 100644 --- a/server/.env.example +++ b/server/.env.example @@ -201,6 +201,8 @@ SIG_SALT='salt' # Please generate random string at least 32 chars long. # CHROMA_ENDPOINT='http://localhost:8000' # CHROMA_API_HEADER="X-Api-Key" # CHROMA_API_KEY="sk-123abc" +# CHROMA_TENANT="default_tenant" # Optional: for Chroma Cloud multi-tenancy +# CHROMA_DATABASE_NAME="default_database" # Optional: for Chroma Cloud database selection # Enable all below if you are using vector database: Pinecone. # VECTOR_DB="pinecone" diff --git a/server/models/systemSettings.js b/server/models/systemSettings.js index 961ccc5678c..040bb10f3bc 100644 --- a/server/models/systemSettings.js +++ b/server/models/systemSettings.js @@ -427,6 +427,8 @@ const SystemSettings = { ChromaEndpoint: process.env.CHROMA_ENDPOINT, ChromaApiHeader: process.env.CHROMA_API_HEADER, ChromaApiKey: !!process.env.CHROMA_API_KEY, + ChromaTenant: process.env.CHROMA_TENANT, + ChromaDatabaseName: process.env.CHROMA_DATABASE_NAME, // Weaviate DB Keys WeaviateEndpoint: process.env.WEAVIATE_ENDPOINT, diff --git a/server/utils/helpers/updateENV.js b/server/utils/helpers/updateENV.js index 6bb397c3022..124a06d9d20 100644 --- a/server/utils/helpers/updateENV.js +++ b/server/utils/helpers/updateENV.js @@ -331,6 +331,14 @@ const KEY_MAPPING = { envKey: "CHROMA_API_KEY", checks: [], }, + ChromaTenant: { + envKey: "CHROMA_TENANT", + checks: [], + }, + ChromaDatabaseName: { + envKey: "CHROMA_DATABASE_NAME", + checks: [], + }, // Weaviate Options WeaviateEndpoint: { diff --git a/server/utils/vectorDbProviders/chroma/CHROMA_SETUP.md b/server/utils/vectorDbProviders/chroma/CHROMA_SETUP.md index e6d6fee9e10..293b8b953c2 100644 --- a/server/utils/vectorDbProviders/chroma/CHROMA_SETUP.md +++ b/server/utils/vectorDbProviders/chroma/CHROMA_SETUP.md @@ -25,4 +25,15 @@ VECTOR_DB="chroma" CHROMA_ENDPOINT='http://localhost:8000' # CHROMA_API_HEADER="X-Api-Key" // If you have an Auth middleware on your instance. # CHROMA_API_KEY="sk-123abc" // If you have an Auth middleware on your instance. +# CHROMA_TENANT="default_tenant" // Optional: for Chroma Cloud multi-tenancy +# CHROMA_DATABASE_NAME="default_database" // Optional: for Chroma Cloud database selection ``` + +### Chroma Cloud Configuration + +When using Chroma Cloud, you can configure additional parameters for multi-tenancy: + +- **CHROMA_TENANT**: Specify the tenant to use (defaults to "default_tenant" if not set) +- **CHROMA_DATABASE_NAME**: Specify the database within the tenant (defaults to "default_database" if not set) + +These parameters are useful for organizing data in multi-tenant Chroma Cloud deployments where you need to isolate data by tenant and database. diff --git a/server/utils/vectorDbProviders/chroma/index.js b/server/utils/vectorDbProviders/chroma/index.js index bc12818fd18..c6112d02607 100644 --- a/server/utils/vectorDbProviders/chroma/index.js +++ b/server/utils/vectorDbProviders/chroma/index.js @@ -71,6 +71,12 @@ const Chroma = { }, } : {}), + ...(process.env.CHROMA_TENANT + ? { tenant: process.env.CHROMA_TENANT } + : {}), + ...(process.env.CHROMA_DATABASE_NAME + ? { database: process.env.CHROMA_DATABASE_NAME } + : {}), }); const isAlive = await client.heartbeat();