diff --git a/rag/utils/table_es_metadata.py b/rag/utils/table_es_metadata.py index 82baddf5be..7f24e7775c 100644 --- a/rag/utils/table_es_metadata.py +++ b/rag/utils/table_es_metadata.py @@ -244,9 +244,14 @@ def aggregate_table_doc_metadata(chunks: list, task: dict) -> dict: for col in meta_cols: tk, _src = es_col_keys.get(col, (None, "none")) if not tk: - if i == 0: - logging.debug(f"[TABLE_META_DEBUG] no resolved ES key for column '{col}'") - continue + tk, src = _resolve_es_chunk_field_key(col, fm, ck) + if tk: + es_col_keys[col] = (tk, src) + logging.debug(f"[TABLE_META_DEBUG] column '{col}' -> ES key {tk!r} (source={src}, chunk={i})") + else: + if i == 0: + logging.debug(f"[TABLE_META_DEBUG] no resolved ES key for column '{col}'") + continue raw_k = _es_raw_field_key_from_typed(tk) val = None from_tks = False diff --git a/test/unit_test/rag/svr/test_table_metadata_aggregation.py b/test/unit_test/rag/svr/test_table_metadata_aggregation.py index 9406d1fe40..1924688d5a 100644 --- a/test/unit_test/rag/svr/test_table_metadata_aggregation.py +++ b/test/unit_test/rag/svr/test_table_metadata_aggregation.py @@ -91,6 +91,20 @@ class TestAggregateTableManualDocMetadata: out = aggregate_table_doc_metadata(chunks, task) assert out == {"country": ["Brazil"]} + def test_aggregate_auto_mode_probes_later_sparse_chunks(self, es_engine): + task = { + "parser_id": "table", + "parser_config": {}, + "kb_parser_config": { + "table_column_mode": "auto", + "table_column_names": ["notes"], + "table_column_roles": {"notes": "both"}, + }, + } + chunks = [{}, {"notes_raw": "Handle with care"}] + + assert aggregate_table_doc_metadata(chunks, task) == {"notes": ["Handle with care"]} + def test_aggregate_auto_mode_all_columns_both(self, es_engine): task = { "parser_id": "table",