# Pinecone vs Chroma: options after Chroma Cloud shuts down

> Pinecone fits teams that want ranked keyword search and vector search without running servers or sizing memory. Self-hosted Chroma is the better choice when the database has to run embedded in your app, on a laptop, or offline, or when running open-source code yourself is a requirement.

Source: https://www.pinecone.io/compare/chroma/
Claims about Chroma last checked against its documentation on 2026-10-26.

## Summary

For most teams leaving Chroma Cloud, the decision is who runs the database. Open-source Chroma is free to use. You operate it: you pick the machines, size memory ahead of growth, and handle upgrades, backups, and on-call. Pinecone is a managed service for keyword and vector search. You create an index and write to it. Pinecone runs the servers.

Memory is where self-hosting gets hard. A single Chroma node keeps its whole index in RAM. Chroma's docs say the system becomes unusable once a collection outgrows that memory. Past one node, Chroma documents a distributed design, the one Chroma Cloud runs on, built from separate services that take requests, log writes, build indexes, and answer queries.

The two also differ on search. Chroma's full-text search is a filter: it keeps or drops records by exact, case-sensitive text match and gives them no score. Pinecone ranks keyword matches by BM25, a standard relevance score, with phrase matching and optional stemming. Chroma Cloud's Search API can merge a meaning-based ranking with a keyword ranking in one request, but Chroma's docs say that API is available on Chroma Cloud only. A single Pinecone request cannot merge a BM25 score with a vector score.

## Choose Pinecone when

- You picked Chroma Cloud so you would not have to run a database.
- Your corpus will outgrow the memory of one machine, or you cannot predict its size.
- Users search for exact terms such as product names, error codes, or titles and expect the best match first.
- Your app uses Chroma Cloud's Search API, which self-hosted Chroma doesn't have.
- Data has to stay in a specific region on AWS, Google Cloud, or Azure (Builder plan and above), or inside your own cloud account with bring your own cloud.
- Your security review asks for ISO 27001 or a HIPAA business associate agreement.

## Choose Chroma when

- The database has to run embedded in a Python app, on a laptop, on a device, or offline. Pinecone has no embedded or local mode.
- Running open-source code on your own infrastructure is a requirement in itself.
- You already run servers and expect the corpus to fit in one node's memory.
- Your app reads each write back on the next query, as agent memory often does.

## Feature by feature

| Capability | Pinecone | Chroma |
| --- | --- | --- |
| What it was built for | Keyword and vector search in one managed index, with BM25 ranking for keywords. | A vector database for developers that runs embedded in a Python app or as a server, with the same API in both. |
| Deployment model | You create an index and write to it. Data sits in object storage, Pinecone runs the servers that answer queries, and you never choose an instance size, a node count, or a cluster layout. | Embedded in a Python process, or a server you run. Chroma publishes Docker, AWS, Google Cloud, and Azure guides. JavaScript and TypeScript apps connect to a Chroma server. |
| Hosted option | Managed in eight regions across AWS, Google Cloud, and Azure. | Chroma Cloud stops accepting writes on November 22, 2026 and stops serving reads on December 22, 2026. |
| Scaling model | Automatic on the on-demand tier, where you never pick a shard or replica count. On Dedicated Read Nodes, which are capacity you provision, shards and replicas are set by hand today. | A single node keeps its index in RAM and scales with the machine's memory. Past memory, Chroma's docs say latency spikes. Beyond one node, Chroma documents a distributed architecture of separate services. |
| Multi-tenancy | One index holds a namespace per tenant, with nothing to provision for each new tenant. The documented limit is 100,000 namespaces per index on Standard and 1,000,000 on Enterprise. Dedicated Read Nodes support one namespace per index today. For now you cannot combine them with a design that keeps many tenants in one index. | Chroma's docs recommend a collection per user or organization. They describe a single node as suited to a handful of collections sharing its memory. Millions of collections is a figure for distributed Chroma. |
| Keyword search | Full-text search ranks by BM25 keyword relevance, with phrase matching, stemming (switched on per field when you create the index), and typo tolerance in Lucene-syntax queries. | Case-sensitive substring and regex filters with no relevance score. Ranking by BM25 keyword weights needs Chroma's Search API, which its docs say is available on Chroma Cloud only. |
| Hybrid and sparse retrieval | Dense vectors, sparse vectors, and full-text search with BM25 keyword ranking. Dense and sparse vectors combine in one query. Full-text and dense combine as a text-match filter on a dense search, or as two searches merged in your application. A single search request still cannot merge a full-text score with a vector score into one ranking. | On Chroma Cloud, the Search API fuses a meaning-based (dense) ranking and a keyword-weight (sparse) ranking in one request, by rank position or by a weighted sum of scores. Chroma's docs say the Search API is available on Chroma Cloud only, with single-node support planned. |
| Write visibility | Eventually consistent: a new write can take a moment to appear in search. Each write returns a sequence number. Each query returns the highest sequence number it reflects. | Chroma's docs say queries check the write log to serve consistent results. A new write shows up in the next query. |
| Embeddings and reranking | Pinecone Inference hosts embedding and reranking models alongside the index. | Many client-side embedding integrations. Chroma Cloud's hosted embedding models shut down with the service. No hosted reranker in Chroma's docs. |
| Pricing model | Usage based. You pay for storage and the reads and writes you run. | Self-hosted, the license is free and you pay for the machines you provision, whether or not they are busy. Chroma Cloud's usage pricing ends with the service in December 2026. |
| Running it in your own cloud | Bring your own cloud on AWS, Azure, and GCP. | Anywhere you can run a Python process or a container, on infrastructure you operate. |
| Compliance | SOC 2 on every plan, ISO 27001 on Builder and above, and a HIPAA business associate agreement as an add-on on Standard. | Self-hosted, compliance rests on your own audits and controls. Chroma Cloud's SOC 2 Type II certification ends with the service. |
| Licensing and source | Commercial managed service. | Apache 2.0. Replit says it will keep contributing to the open-source project. |
| Local or offline use | Not available. Pinecone runs only as a managed service. | Runs on a laptop or offline. |

## Chroma by the numbers

The dates come from Chroma's shutdown notice and the sizing from its guide to running Chroma on a single server.

- **Nov 22, 2026** Chroma Cloud becomes read-only
- **Dec 22, 2026** Chroma Cloud stops serving reads
- **~245,000** embeddings per GB of RAM on a single Chroma node, at 1,024 dimensions with three metadata fields
- **~15 million** embeddings at most on a 64 GB instance, about $387 a month, a ceiling Chroma extrapolated past the 7 million it tested

## What the Chroma Cloud shutdown means for your app

On November 22, 2026, Chroma Cloud becomes read-only. Applications can no longer create, update, or delete data, though existing data stays readable. On December 22, 2026, Chroma Cloud stops serving reads. Chroma's notice asks customers to finish exports and migration before that date and to rotate any Chroma Cloud credentials stored in their applications.

Move writes before November 22. If you reach that date first, Chroma Cloud keeps serving reads until December 22, which leaves time to export and validate. Your app's writes fail until you switch. When you do, switch reads and writes at the same moment, which keeps every new write visible to your reads.

## What running Chroma yourself involves

Open-source Chroma costs nothing to license. You pay for the servers and for whoever keeps them running. Chroma's single-node guide sizes memory at about 245,000 embeddings per GB of RAM for 1,024-dimension vectors with three metadata fields, plus at least 1 GB for the system. Its table puts the ceiling for a 64 GB instance, about $387 a month, at roughly 15 million embeddings. Chroma tested the ratio up to about 7 million.

Chroma's vector index has to sit in RAM. Its docs say that once a collection outgrows memory, the operating system starts swapping to disk and the system soon becomes unusable. Size the machine for the corpus you expect to have.

Beyond one node, Chroma documents a distributed architecture, the design Chroma Cloud runs on: a gateway, a write-ahead log that records each write before it is acknowledged, a compactor that builds indexes in the background, query executors that read from object storage through local SSD caches, and a SQL-backed system database. Chroma said on October 23 that it moved more code from its private repositories into the Apache 2.0 project. The repository includes a Helm chart for distributed Chroma, but the docs publish no guide to running it. Running it yourself means operating each of those services.

## Keyword relevance and hybrid search

Chroma's full-text search works as a filter. Its $contains and $regex operators keep or drop records by case-sensitive text match. They don't score results. Chroma ships a BM25 function that turns text into sparse vectors (weights on individual keywords) on your own machine. Ranking by those vectors, alone or merged with a dense (meaning-based) ranking, needs the Search API. Chroma's docs say that API is available on Chroma Cloud only, with single-node support planned.

Pinecone ranks full-text search by BM25 inside the database. On a vector index, dense and sparse vectors combine in one query. On a document index, which holds BM25 fields, each search ranks by one signal. To use a BM25 score and a vector score together, run two searches and merge them in your application, or narrow a dense search with a text-match filter.

If your users type exact terms and expect the best match first, test Pinecone's BM25 ranking against your own queries.

## When a new write shows up in search

Chroma's docs say queries check the write log to serve consistent results. Pinecone is eventually consistent, which means a new write can take a moment to appear in search. Each write returns a sequence number in a response header. Each query returns the highest sequence number it reflects. When the query's number is at least the write's, that write is searchable.

This matters most for agent memory, where an agent saves something and needs it on the next turn. Measure Pinecone's delay with your own write pattern before deciding.

## When self-hosted Chroma is the better choice

Self-hosted Chroma fits teams that require open-source code on their own infrastructure, already run servers, and have a corpus that will stay inside one machine's memory. It is also the only one of the two that runs embedded in an app or offline. For teams that already run their own servers, the shutdown mostly means taking over operations from Chroma's team.

## Migrate from Chroma Cloud to Pinecone

Pause writes, export each collection from Chroma Cloud while it still serves reads, then load it into a Pinecone index. Your vectors, documents, and metadata carry over without re-embedding, as long as your app embeds with its own model. If it uses a model hosted by Chroma Cloud, that model shuts down with the service. The corpus then needs re-embedding. The guide's default index keeps your document text without BM25 ranking. To rank keywords with BM25 after the move, use the guide's full-text-search option when you create the index.

- [Read the migration guide](https://www.pinecone.io/blog/migrate-chroma-cloud-to-pinecone/)
- [Migration scripts on GitHub](https://github.com/pinecone-field/chromacloud-migration)
- [Data modeling: IDs, fields, and metadata](https://docs.pinecone.io/guides/index-data/data-modeling)
- [Full-text search](https://docs.pinecone.io/guides/search/full-text-search)

## Frequently asked questions

### Is Chroma Cloud shutting down?

Yes. Chroma announced on October 23, 2026 that it is joining Replit and winding down Chroma Cloud. Chroma Cloud becomes read-only on November 22, 2026 and stops serving reads on December 22, 2026. Open-source Chroma continues under the Apache 2.0 license.

### What are the alternatives to Chroma Cloud?

Either run open-source Chroma yourself or move to a managed vector database such as Pinecone. Self-hosting keeps the query() and get() calls you use today. Code that uses Chroma Cloud's Search API, collection forking, or hosted embedding models needs rewriting on either path, because Chroma documents those for Chroma Cloud. Servers, memory sizing, backups, and upgrades also become your job. Whichever you pick, move anything that writes first, since writes stop on November 22.

### Is Pinecone a good Chroma Cloud alternative?

Yes, for teams that chose Chroma Cloud so they would not run a database. Pinecone is a managed service with ranked BM25 keyword search, hosted reranking, and no memory sizing. Chroma remains the better choice when the database must run embedded in your app, on a laptop, or offline.

### How do I migrate from Chroma Cloud to Pinecone?

Pause writes, export each collection while Chroma Cloud still serves reads, convert it, load it into a Pinecone index, and validate the result against your own queries. Pinecone's guide, How to Migrate from Chroma Cloud to Pinecone, walks through it with six open-source scripts. Finish moving writes before November 22.

### Can I still export from Chroma Cloud after November 22?

Yes. Chroma Cloud stays readable until December 22, 2026. Exports work during that month, but writes fail.

### What is the main difference between Pinecone and Chroma?

The main difference is who runs the database. With Chroma Cloud shutting down, Chroma is open-source software you embed in an app or run on your own servers. Pinecone is a managed service. You create an index and write to it. Pinecone runs and scales the servers.

### Will my Chroma Cloud Search API code work on self-hosted Chroma?

Not today. Chroma's docs say the Search API, including hybrid search with reciprocal rank fusion, is available on Chroma Cloud only, with single-node support planned. Self-hosted Chroma supports query() and get() with metadata and text filters.

### What happens to Chroma Cloud's hosted embedding models?

Chroma documents its Qwen and Splade embedding functions as running on Chroma Cloud's servers with a Chroma API key. They go away with the service. If your collection was embedded with one, plan to re-embed with a model you control or a hosted model such as those in Pinecone Inference.

### Is Chroma open source?

Yes. Chroma is licensed under Apache 2.0. Chroma Cloud, the hosted service, is shutting down. The open-source project continues, with Replit saying it will keep contributing.

### Is Pinecone cheaper than running Chroma yourself?

It depends on corpus size and query volume. Self-hosted Chroma costs the machines you run, sized to memory and billed whether or not they are busy. Chroma's own guide lists about $387 a month for a 64 GB instance that tops out around 15 million embeddings, before replicas, backups, and the people who operate it. Pinecone bills storage and the reads and writes you run, with a $50 monthly minimum on Standard. Price your own corpus and query rate on both.

### Can Pinecone run locally or embedded like Chroma?

No. Pinecone runs only as a managed service, with no embedded or local mode. For an app that has to work offline or inside a single process, open-source Chroma is the right tool.

### How much RAM does self-hosted Chroma need?

Chroma's single-node guide estimates about 245,000 embeddings per GB of RAM for 1,024-dimension vectors with three metadata fields, plus at least 1 GB for the system. Chroma tested that ratio up to about 7 million embeddings. Its docs warn that performance drops sharply once a collection outgrows memory, which makes it worth sizing for the corpus you expect to have.

### Does Chroma support hybrid search?

On Chroma Cloud, yes. Its Search API fuses a dense ranking (vectors that capture meaning) and a sparse ranking (weights on individual keywords) in one request, by rank position or by a weighted sum of scores. Chroma's docs say the Search API is available on Chroma Cloud only. On self-hosted Chroma, full-text search is an unscored substring or regex filter. Pinecone ranks full-text search by BM25 inside the database. A Pinecone vector index combines dense and sparse vectors in one query.

### Will my Chroma collections map to Pinecone?

Each collection becomes a Pinecone index, or a namespace (a separate partition) in a shared index when collections share a dimension and distance metric. Chroma's default distance, l2, is what Pinecone calls euclidean, and the guide's scripts set it for you. A few things change. IDs longer than 512 characters or with non-ASCII characters get new IDs, with the original kept in a chroma_id field. Numeric or boolean arrays in metadata need converting, since Pinecone metadata arrays hold strings only. Filters on document text (where_document) have no direct equivalent and need rewriting.

## Sources

- [Chroma is joining Replit](https://www.trychroma.com/blog/chroma-joins-replit)
- [Chroma Cloud wind-down timeline](https://www.trychroma.com/cloud-wind-down)
- [Chroma architecture overview](https://docs.trychroma.com/reference/architecture/overview)
- [Chroma distributed architecture](https://docs.trychroma.com/reference/architecture/distributed)
- [Chroma clients: embedded and server modes](https://docs.trychroma.com/docs/run-chroma/clients)
- [Chroma single-node performance guide](https://docs.trychroma.com/guides/performance/single-node)
- [Chroma full-text search](https://docs.trychroma.com/docs/querying-collections/full-text-search)
- [Chroma Search API overview](https://docs.trychroma.com/cloud/search-api/overview)
- [Chroma hybrid search with RRF](https://docs.trychroma.com/cloud/search-api/hybrid-search)
- [Pinecone full-text search](https://docs.pinecone.io/guides/search/full-text-search)
- [Pinecone hybrid search](https://docs.pinecone.io/guides/search/hybrid-search)
- [Check data freshness](https://docs.pinecone.io/guides/index-data/check-data-freshness)
- [Pinecone cloud regions](https://docs.pinecone.io/guides/index-data/index-configuration)
- [Pinecone pricing](https://www.pinecone.io/pricing/)
