Chroma Dart Client

tests chromadb MIT

Unofficial Dart client for Chroma embedding database.

Features

  • Create, list, get, modify and delete collections.
  • Add, upsert, get, update, query, count, peek and delete items.
  • Get version and heartbeat.
  • Reset database.

Usage

Note: this is a quick overview of the client. For full API docs, see the official documentation.

Run the server

Run docker-compose up -d --build to run a backend in Docker on your local
computer.

Initialize client

final client = ChromaClient();

By default, the client expect the server to be running on http://localhost:8000. You can change this by passing the host parameter.

Methods on Client

Collections are similar to AWS s3 buckets in their naming requirements because they are used in URLs in the REST API. Here's the full list.

// list all collections
await client.listCollections();

// make a new collection
final collection = await client.createCollection(name: 'testname');

// get an existing collection
final collection = await client.getCollection(name: 'testname');

// delete a collection
await client.deleteCollection(name: 'testname');

Utilities methods

// get Chroma version
final version = await client.version();

// get Chroma heartbeat
final heartbeat = await client.heartbeat();

// resets entire database - this *cant* be undone!
await client.reset();

Methods on Collection

// get the number of items in a collection
await collection.count();

// add new items to a collection
// either one at a time
await collection.add(
  ids: ['id1'],
  embeddings: [[1.5, 2.9, 3.4]],
  metadatas: [{'source': 'my_source'}],
);

// or many, up to 100k+!
await collection.add(
  ids: ['uri9', 'uri10'],
  embeddings: [[1.5, 2.9, 3.4], [9.8, 2.3, 2.9]],
  metadatas: [{'style': 'style1'}, {'style': 'style2'}],
);

// including just documents 
// (you need to provide an EmbeddingFunction to the collection to be able
// to embed documents) 
await collection.add(
  ids: ['uri9', 'uri10'],
  documents: ['doc1000101', 'doc288822'],
  metadatas: [{'style': 'style1'}, {'style': 'style2'}],
);

// or use upsert, so records will be updated if they already exist
// (instead of throwing an error)
await collection.upsert(
  ids: ['id1'],
  embeddings: [[1.5, 2.9, 3.4]],
  metadatas: [{'source': 'my_source'}],
  documents: ['This is a document'],
);

// get items from a collection
final res = await collection.get();

// convenience, get first 5 items from a collection
await collection.peek();

// do nearest neighbor search to find similar embeddings or documents, supports filtering
await collection.query(
  queryEmbeddings: [[1.1, 2.3, 3.2], [5.1, 4.3, 2.2]],
  nResults: 2,
  where: {'style': 'style2'},
);

// delete items
await collection.delete();

License

Chroma Dart Client is licensed under the MIT License.

Libraries

chromadb
Dart Client for the Chroma open-source embedding database API.