Running Chroma in Client-Server Mode
Chroma can also be configured to run in client/server mode. In this mode, the Chroma client connects to a Chroma server running in a separate process.
This means that you can deploy single-node Chroma to a Docker container, or a machine hosted by a cloud provider like AWS, GCP, Azure, and others. Then, you can access your Chroma server from your application using our HttpClient.
You can quickly experiment locally with Chroma in client/server mode by using our CLI:
chroma run --path /db_path
Then use the Chroma HttpClient to connect to the server:
import chromadb
chroma_client = chromadb.HttpClient(host='localhost', port=8000)
Chroma also provides an AsyncHttpClient. The behaviors and method signatures are identical to the synchronous client, but all methods that would block are now async:
import asyncio
import chromadb
async def main():
client = await chromadb.AsyncHttpClient()
collection = await client.create_collection(name="my_collection")
await collection.add(
documents=["hello world"],
ids=["id1"]
)
asyncio.run(main())
If you intend to deploy your Chroma server, you may want to consider our thin-client package for client-side interactions.