chroma-core/chroma · error · NotImplementedError
Indexing status is not implemented for SegmentAPI
Error message
Indexing status is not implemented for SegmentAPI
What it means
Chroma's embedded, in-process backend (SegmentAPI — used by chromadb.Client, EphemeralClient and PersistentClient) does not implement the indexing-status operation declared on the shared API base: _get_indexing_status unconditionally raises NotImplementedError. Indexing progress (indexed vs pending ops) only exists where a server-side indexer can lag behind writes; embedded mode writes records into local segments synchronously, so there is no status to report.
Source
Thrown at chromadb/api/segment.py:473
)
@override
def _fork_count(
self,
collection_id: UUID,
tenant: str = DEFAULT_TENANT,
database: str = DEFAULT_DATABASE,
) -> int:
raise NotImplementedError("Fork count is not implemented for SegmentAPI")
@override
def _get_indexing_status(
self,
collection_id: UUID,
tenant: str = DEFAULT_TENANT,
database: str = DEFAULT_DATABASE,
) -> "IndexingStatus":
raise NotImplementedError("Indexing status is not implemented for SegmentAPI")
@override
def _search(
self,
collection_id: UUID,
searches: List[Search],
tenant: str = DEFAULT_TENANT,
database: str = DEFAULT_DATABASE,
read_level: ReadLevel = ReadLevel.INDEX_AND_WAL,
) -> SearchResult:
raise NotImplementedError("Search is not implemented for SegmentAPI")
@trace_method("SegmentAPI.delete_collection", OpenTelemetryGranularity.OPERATION)
@override
@rate_limit
def delete_collection(
self,
name: str,View on GitHub (pinned to aecdd12c8a)
Solutions
- Connect with chromadb.HttpClient to a running Chroma server, which implements get_indexing_status
- Feature-detect and degrade gracefully: wrap the call in try/except NotImplementedError and treat embedded mode as fully indexed
- Check client.get_settings().chroma_api_impl equals 'chromadb.api.segment.SegmentAPI' and skip the call in that case
Example fix
// before
coll = chromadb.PersistentClient(path='./chroma').get_collection('docs')
status = coll.get_indexing_status() # NotImplementedError
// after
try:
status = coll.get_indexing_status()
except NotImplementedError:
status = None # embedded mode: writes are synchronous, no indexing lag Defensive patterns
Strategy: try-catch
Validate before calling
import chromadb
def supports_indexing_status(client: chromadb.ClientAPI) -> bool:
impl = client.get_settings().chroma_api_impl
return impl not in ('chromadb.api.segment.SegmentAPI', 'chromadb.api.rust.RustBindingsAPI') Try / catch
try:
status = coll.get_indexing_status()
except NotImplementedError:
status = None # embedded backend: treat as fully indexed Prevention
- Centralize client creation so tests and production differ only by the client factory
- Feature-detect newer APIs with try/except NotImplementedError the first time they run
- Check the embedded-vs-server feature matrix before adopting a new API
When it happens
Trigger: Calling collection.get_indexing_status() (which delegates to client._get_indexing_status(collection_id, ...)) on any embedded client: chromadb.Client(), chromadb.EphemeralClient(), or chromadb.PersistentClient(path=...).
Common situations: Code written against a Chroma server (Docker) is reused in unit tests that swap in an embedded PersistentClient; CI replaces HttpClient with an in-process client for speed; progress reporting polls indexing status after bulk ingestion while running embedded.
Related errors
- Search is not implemented for SegmentAPI
- Conditional transactions are not supported by SegmentAPI
- Indexing status is not implemented for Local Chroma
- Collection forking is not implemented for SegmentAPI
- Fork count is not implemented for SegmentAPI
AI-assisted analysis of chroma-core/chroma@aecdd12c8a (2026-08-16).
Data as JSON: /api/errors/d63ad68b3c932dd5.
Report an issue: GitHub.