chromadb 0.2.0+2 chromadb: ^0.2.0+2 copied to clipboard
Dart Client for the Chroma open-source embedding database API.
Chroma Dart Client #
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 #
Methods related to Collections
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.