From d89c58103d62f75db344a552053ced878f2946b4 Mon Sep 17 00:00:00 2001 From: Ed_ Date: Tue, 16 Jun 2026 00:28:53 -0400 Subject: [PATCH] docs(rag): add troubleshooting section for NoneType.get error Documents the two bugs fixed in the rag_test_failures_20260615 track: 1. get_all_indexed_paths: m.get('path') failing on None metadata 2. _validate_collection_dim_result: 'if not embeddings' raising ValueError on non-empty numpy arrays Also documents the 'no such table: tenants' chromadb corruption symptom (wipe .slop_cache/chroma_* to recover). Plus: 'rag_status' shows 'error: ' prefix is the failure indicator; the actual error message is the part after the prefix. --- docs/guide_rag.md | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/docs/guide_rag.md b/docs/guide_rag.md index 600a0381..b07329b7 100644 --- a/docs/guide_rag.md +++ b/docs/guide_rag.md @@ -524,6 +524,29 @@ caller (`_init_vector_store_result()`) sees the error in the `.errors` list and can recreate the collection. This is the canonical "SDK boundary catches, convert to ErrorInfo" pattern in action. +### Troubleshooting: `'NoneType' object has no attribute 'get'` in `rag_status` + +If `rag_status` shows `error: 'NoneType' object has no attribute 'get'`, +the cause is `RAGEngine.get_all_indexed_paths()` (line ~331) iterating +over `res["metadatas"]` and calling `m.get("path")` where `m` is `None` +(documents stored without metadata in chromadb). + +**Fix:** the `m is not None and m.get("path")` guard is in place as of +the `rag_test_failures_20260615` track. If you see this error after +that track, it's a regression — check `src/rag_engine.py:331`. + +A secondary related bug was the dim check (`if not embeddings`) +raising `ValueError: The truth value of an array with more than one +element is ambiguous. Use a.any() or a.all()` on non-empty numpy +arrays, which then surfaced as a downstream `NoneType.get` when +`__init__` set `self.collection = None`. That fix is the +`embeddings is None` check at `src/rag_engine.py:150`. + +If the error is `error: Database error: error returned from database: +(code: 1) no such table: tenants`, the chromadb SQLite database is +in a corrupted state. Wipe the project's `.slop_cache/chroma_*` +directories and restart. + ### See Also (in-doc) - [`conductor/code_styleguides/error_handling.md`](../conductor/code_styleguides/error_handling.md) — canonical styleguide (5 patterns, data model, decision tree, anti-patterns)