Chroma made a bet that most people reaching for a vector database do not want a distributed system, they want a thing that stores embeddings and gives them back, ideally in under five minutes and without a cluster. That bet has largely paid off, and the documentation reflects the same philosophy. It is short, direct and unembarrassed about its scope. The getting started material is the best I have used in this category.
Install with pip, create a client, create a collection, add documents, query them. It works locally with no account, no cloud, no credit card and no signup wall, and you have a functioning vector store before you have finished your coffee. For anyone learning what RAG actually is, that speed matters more than any feature list, because the concepts land much faster when you can poke at them. The embedding function abstraction is explained well.
Chroma will embed your documents for you with a default model, or you can plug in OpenAI, Cohere, a sentence transformer, or your own function. The documentation makes it clear that this is a choice with consequences and shows you how to make it, which is more than a lot of tools bother with. Since embedding model choice is one of the two or three decisions that most determine retrieval quality, giving it prominence is correct. Collections, metadata filtering and the query interface are covered clearly.
The recent additions around full text search, regex search and hybrid retrieval are documented adequately, though at less depth than the core operations. Multi-modal retrieval for images and audio gets a mention and not much more. Writing style is a genuine strength. There is no marketing language, no invented terminology, no diagrams explaining a simple thing with arrows.
It reads as though an engineer wrote it for another engineer and then cut a third of it. I wish more documentation was written this way. The problem is what happens on day eight. Chroma's documentation is superb at getting you to a working prototype and almost silent on everything that follows.
How does the local persistent client behave when your collection is a few million documents rather than a few thousand. What are the memory characteristics. When should you move to the server mode or to Chroma Cloud, and what breaks in the transition. How do you back up a collection, migrate it, version it, or rebuild it when you change embedding model, which you will.
These are the questions every project hits, and the documentation largely leaves you to find out by hitting them. Changing embedding model is worth singling out because it catches everyone. Your embeddings are tied to the model that produced them. Swap the model and every vector in your collection is now meaningless relative to your new queries, and you have to re-embed everything.
The documentation does not warn you about this with anything like the emphasis it deserves, and I have watched more than one person discover it the expensive way. Chroma Cloud is the commercial side and its documentation is noticeably lighter than the open source side. Pricing is usage based, which is fine, and working out what your actual bill would look like requires more digging than it should. Anyone evaluating it against a self hosted setup will want firmer numbers than the docs provide.
Evaluation is missing here as it is missing nearly everywhere. There is nothing telling you how to know whether your retrieval is returning the right documents, how to build a test set, or what to do when the answer quality is bad and you cannot tell whether the fault is retrieval or generation. Chroma is not uniquely guilty of this, and it remains the largest gap in the practical education of everyone building these systems. One thing I will praise without qualification is the honesty of positioning.
Chroma does not pretend to be the highest performance option or the most feature complete. It presents itself as the one that gets out of your way, and the documentation matches that claim rather than overselling. That is rarer than it should be. My three point seven is for documentation that does one job extremely well.
If your goal this afternoon is to understand vector search by building something, start here and you will be glad you did. If your goal is a system that serves real users next quarter, treat this as chapter one and find the rest of the book elsewhere.