diff --git a/docker/.env.example b/docker/.env.example
index e6b4e624e..508b20f40 100644
--- a/docker/.env.example
+++ b/docker/.env.example
@@ -22,6 +22,8 @@ OPEN_MODEL_PREF='gpt-3.5-turbo'
# Enable all below if you are using vector database: Chroma.
# VECTOR_DB="chroma"
# CHROMA_ENDPOINT='http://host.docker.internal:8000'
+# CHROMA_API_HEADER="X-Api-Key"
+# CHROMA_API_KEY="sk-123abc"
# Enable all below if you are using vector database: Pinecone.
VECTOR_DB="pinecone"
diff --git a/docker/HOW_TO_USE_DOCKER.md b/docker/HOW_TO_USE_DOCKER.md
index 0f146776d..7a47811f0 100644
--- a/docker/HOW_TO_USE_DOCKER.md
+++ b/docker/HOW_TO_USE_DOCKER.md
@@ -44,6 +44,8 @@ Out of the box, all vector databases are supported. Any vector databases requiri
VECTOR_DB="chroma"
CHROMA_ENDPOINT='http://host.docker.internal:8000' # Allow docker to look on host port, not container.
+# CHROMA_API_HEADER="X-Api-Key" // If you have an Auth middleware on your instance.
+# CHROMA_API_KEY="sk-123abc"
...other configs
diff --git a/frontend/src/components/Modals/Settings/VectorDbs/index.jsx b/frontend/src/components/Modals/Settings/VectorDbs/index.jsx
index 9bf86af73..09c60b3a8 100644
--- a/frontend/src/components/Modals/Settings/VectorDbs/index.jsx
+++ b/frontend/src/components/Modals/Settings/VectorDbs/index.jsx
@@ -182,6 +182,41 @@ export default function VectorDBSelection({
spellCheck={false}
/>
+
+
+
+
+
+ If your hosted Chroma instance is protected by an API
+ key - enter the header and api key here.
+
+
+
+
+
+
+
>
)}
{vectorDB === "lancedb" && (
diff --git a/server/.env.example b/server/.env.example
index 489dc2c3a..2f6ef0414 100644
--- a/server/.env.example
+++ b/server/.env.example
@@ -21,6 +21,8 @@ OPEN_MODEL_PREF='gpt-3.5-turbo'
# Enable all below if you are using vector database: Chroma.
# VECTOR_DB="chroma"
# CHROMA_ENDPOINT='http://localhost:8000'
+# CHROMA_API_HEADER="X-Api-Key"
+# CHROMA_API_KEY="sk-123abc"
# 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 f552bd45c..836d5907e 100644
--- a/server/models/systemSettings.js
+++ b/server/models/systemSettings.js
@@ -34,6 +34,8 @@ const SystemSettings = {
...(vectorDB === "chroma"
? {
ChromaEndpoint: process.env.CHROMA_ENDPOINT,
+ ChromaApiHeader: process.env.CHROMA_API_HEADER,
+ ChromaApiKey: !!process.env.CHROMA_API_KEY,
}
: {}),
...(vectorDB === "weaviate"
diff --git a/server/utils/helpers/updateENV.js b/server/utils/helpers/updateENV.js
index 78561cba9..a7fb92107 100644
--- a/server/utils/helpers/updateENV.js
+++ b/server/utils/helpers/updateENV.js
@@ -35,10 +35,22 @@ const KEY_MAPPING = {
envKey: "VECTOR_DB",
checks: [isNotEmpty, supportedVectorDB],
},
+
+ // Chroma Options
ChromaEndpoint: {
envKey: "CHROMA_ENDPOINT",
checks: [isValidURL, validChromaURL],
},
+ ChromaApiHeader: {
+ envKey: "CHROMA_API_HEADER",
+ checks: [],
+ },
+ ChromaApiKey: {
+ envKey: "CHROMA_API_KEY",
+ checks: [],
+ },
+
+ // Weaviate Options
WeaviateEndpoint: {
envKey: "WEAVIATE_ENDPOINT",
checks: [isValidURL],
@@ -47,6 +59,8 @@ const KEY_MAPPING = {
envKey: "WEAVIATE_API_KEY",
checks: [],
},
+
+ // QDrant Options
QdrantEndpoint: {
envKey: "QDRANT_ENDPOINT",
checks: [isValidURL],
diff --git a/server/utils/vectorDbProviders/chroma/CHROMA_SETUP.md b/server/utils/vectorDbProviders/chroma/CHROMA_SETUP.md
index 396ee348e..46dac0db0 100644
--- a/server/utils/vectorDbProviders/chroma/CHROMA_SETUP.md
+++ b/server/utils/vectorDbProviders/chroma/CHROMA_SETUP.md
@@ -16,9 +16,13 @@
- `docker-compose up -d --build`
- set the `CHROMA_ENDPOINT=` .env variable in `server` and also set `VECTOR_DB=` to `chroma`.
+* If you have an API Gateway or auth middleway be sure to set the `CHROMA_API_HEADER` and `CHROMA_API_KEY` keys.
+
eg: `server/.env.development`
```
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.
```
diff --git a/server/utils/vectorDbProviders/chroma/index.js b/server/utils/vectorDbProviders/chroma/index.js
index fd184976b..e0f36f380 100644
--- a/server/utils/vectorDbProviders/chroma/index.js
+++ b/server/utils/vectorDbProviders/chroma/index.js
@@ -13,6 +13,16 @@ const Chroma = {
const client = new ChromaClient({
path: process.env.CHROMA_ENDPOINT, // if not set will fallback to localhost:8000
+ ...(!!process.env.CHROMA_API_HEADER && !!process.env.CHROMA_API_KEY
+ ? {
+ fetchOptions: {
+ headers: {
+ [process.env.CHROMA_API_HEADER || "X-Api-Key"]:
+ process.env.CHROMA_API_KEY,
+ },
+ },
+ }
+ : {}),
});
const isAlive = await client.heartbeat();