reindex_embeddings crashed with ModuleNotFoundError: No module named 'networkx' when Unstructured hit spreadsheet files via partition/xlsx.py. Reindex clears Chroma first, so a mid-run crash leaves an empty/partial vector store.
True fix
Depend on unstructured[xlsx]==0.18.21 (not bare unstructured). That extra pulls the required spreadsheet partition deps: networkx, msoffcrypto-tool, xlrd (plus openpyxl/pandas already present).
Resilience
Also catch per-document ingest failures so one corrupt/unsupported file cannot abort a full rebuild after Chroma was cleared. Successful files still ingest; failures are logged.
Test plan
CI / unit tests on this PR
Merge + redeploy image to all hosts
On each host: docker compose -p chat_backend_prod exec web bash -lc 'cd /app/llm_be && SKIP_RAG_INIT=1 uv run python manage.py reindex_embeddings'
Confirm non-zero chunk count and no networkx / msoffcrypto / xlrd import errors
Ops workaround (running containers only, until deploy)
## Summary
`reindex_embeddings` crashed with `ModuleNotFoundError: No module named 'networkx'` when Unstructured hit spreadsheet files via `partition/xlsx.py`. Reindex clears Chroma first, so a mid-run crash leaves an empty/partial vector store.
### True fix
Depend on **`unstructured[xlsx]==0.18.21`** (not bare `unstructured`). That extra pulls the required spreadsheet partition deps: `networkx`, `msoffcrypto-tool`, `xlrd` (plus openpyxl/pandas already present).
### Resilience
Also catch per-document ingest failures so one corrupt/unsupported file cannot abort a full rebuild after Chroma was cleared. Successful files still ingest; failures are logged.
## Test plan
- [x] CI / unit tests on this PR
- [ ] Merge + redeploy image to all hosts
- [ ] On each host: `docker compose -p chat_backend_prod exec web bash -lc 'cd /app/llm_be && SKIP_RAG_INIT=1 uv run python manage.py reindex_embeddings'`
- [ ] Confirm non-zero chunk count and no `networkx` / `msoffcrypto` / `xlrd` import errors
## Ops workaround (running containers only, until deploy)
```bash
uv pip install 'unstructured[xlsx]==0.18.21'
cd /app/llm_be && SKIP_RAG_INIT=1 uv run python manage.py reindex_embeddings
```
unstructured.partition.xlsx imports networkx; without it reindex dies
mid-run after clearing Chroma. Also skip per-document ingest failures
so one bad file cannot abort the whole rebuild.
Bare unstructured omits networkx/msoffcrypto/xlrd; xlsx partition then
crashes reindex. The [xlsx] extra is the supported install path.
Co-authored-by: Cursor <cursoragent@cursor.com>
westfarn
changed title from Fix reindex_embeddings: add networkx for Unstructured xlsx to Fix reindex_embeddings: install unstructured[xlsx] extras2026-08-02 11:56:33 -07:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Summary
reindex_embeddingscrashed withModuleNotFoundError: No module named 'networkx'when Unstructured hit spreadsheet files viapartition/xlsx.py. Reindex clears Chroma first, so a mid-run crash leaves an empty/partial vector store.True fix
Depend on
unstructured[xlsx]==0.18.21(not bareunstructured). That extra pulls the required spreadsheet partition deps:networkx,msoffcrypto-tool,xlrd(plus openpyxl/pandas already present).Resilience
Also catch per-document ingest failures so one corrupt/unsupported file cannot abort a full rebuild after Chroma was cleared. Successful files still ingest; failures are logged.
Test plan
docker compose -p chat_backend_prod exec web bash -lc 'cd /app/llm_be && SKIP_RAG_INIT=1 uv run python manage.py reindex_embeddings'networkx/msoffcrypto/xlrdimport errorsOps workaround (running containers only, until deploy)
Fix reindex_embeddings: add networkx for Unstructured xlsxto Fix reindex_embeddings: install unstructured[xlsx] extras