Chroma is an open-source embedding database designed for LLM applications. Gateco connects to Chroma as a Tier 2 connector, adding identity-aware retrieval and RAG access control to your Chroma collections. Chroma's strength is in prototype and development workflows; Gateco's policy layer can be added without changing your existing collection schema.
Chroma supports grep search (substring and regex via where_document) but not ranked keyword or hybrid search. For BM25 keyword or hybrid vector+text search, use a Postgres-based connector (Neon, Supabase, pgvector).
Step 1 — Run Chroma in HTTP server mode
Gateco connects to Chroma over HTTP. Start ChromaDB as a standalone server:
pip install chromadb
# Start the Chroma HTTP server
chroma run --host 0.0.0.0 --port 8000 --path ./chroma-data
# For Docker:
docker run -p 8000:8000 chromadb/chromaUse --host 0.0.0.0 to bind to all interfaces so Gateco can reach the server. For production, place Chroma behind a reverse proxy with TLS.
Step 2 — Create a collection
import chromadb
client = chromadb.HttpClient(host="localhost", port=8000)
collection = client.get_or_create_collection(
name="my_docs",
metadata={"hnsw:space": "cosine"},
)
# Add documents
collection.add(
ids=["doc-001", "doc-002"],
documents=["Quarterly report", "Engineering specs"],
embeddings=[[0.1, 0.2, ...], [0.3, 0.4, ...]],
metadatas=[{"classification": "confidential"}, {"classification": "internal"}],
)Step 3 — Add the connector in Gateco
- Navigate to Connectors → Add connector → Chroma.
- Enter your Chroma server URL (e.g. http://your-host:8000).
- Enter an API token if your server has authentication enabled.
- Click Test connection.
- Click Save.
| Field | Example | Description |
|---|---|---|
url | http://chroma.internal:8000 | Chroma HTTP server URL |
collection_name | my_docs | Chroma collection name |
api_key | your-chroma-token | Authentication token (leave blank if auth disabled) |
Step 4 — Configure search settings
- In Connectors, click your Chroma connector → Search config.
- Verify the collection name.
- Set the Content field name if your documents use a non-default metadata key for text content.
- Save.
Troubleshooting
| Error | Cause | Fix |
|---|---|---|
connection refused | Chroma not running or wrong port | Verify chroma run is started and the port matches |
collection not found | Wrong collection name | Collection names are case-sensitive — check exact name |
ValueError: could not connect to tenant default_tenant | Chroma version mismatch | Upgrade chromadb to >= 0.4.0 and restart the server |