From 43ac0fce5c87815a2a6c71e109ca12aa2d467710 Mon Sep 17 00:00:00 2001 From: CoralGarden52 <97677340+CoralGarden52@users.noreply.github.com> Date: Sun, 13 Sep 2026 13:25:14 +0000 Subject: [PATCH] fix(rag): cap QA indexing preview results (#42205) --- api/core/indexing_runner.py | 3 +- .../core/rag/indexing/test_indexing_runner.py | 30 +++++++++++++++++++ 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/api/core/indexing_runner.py b/api/core/indexing_runner.py index 02b9255cfc6..385c2fa81f1 100644 --- a/api/core/indexing_runner.py +++ b/api/core/indexing_runner.py @@ -400,7 +400,8 @@ class IndexingRunner: ) total_segments += len(documents) for document in documents: - if len(preview_texts) < 10: + preview_count = len(qa_preview_texts) if doc_form == "qa_model" else len(preview_texts) + if preview_count < 10: if doc_form and doc_form == "qa_model": qa_detail = QAPreviewDetail( question=document.page_content, answer=document.metadata.get("answer") or "" diff --git a/api/tests/unit_tests/core/rag/indexing/test_indexing_runner.py b/api/tests/unit_tests/core/rag/indexing/test_indexing_runner.py index a131e232369..7bea0a9fe34 100644 --- a/api/tests/unit_tests/core/rag/indexing/test_indexing_runner.py +++ b/api/tests/unit_tests/core/rag/indexing/test_indexing_runner.py @@ -1796,6 +1796,36 @@ class TestIndexingRunnerEstimate: session=mock_dependencies["session"], ) + def test_indexing_estimate_limits_qa_preview(self, mock_dependencies, config_overrides): + """Test indexing estimate returns no more than ten QA preview items.""" + config_overrides(DEPLOYMENT_EDITION=DeploymentEdition.COMMUNITY) + runner = IndexingRunner() + mock_processor = MagicMock() + mock_dependencies["factory"].return_value.init_index_processor.return_value = mock_processor + + qa_documents = [ + Document( + page_content=f"Question {index}", + metadata={"answer": f"Answer {index}"}, + ) + for index in range(11) + ] + mock_processor.extract.return_value = [Document(page_content="Source content")] + mock_processor.transform.return_value = qa_documents + + result = runner.indexing_estimate( + tenant_id=str(uuid.uuid4()), + extract_settings=[MagicMock()], + tmp_processing_rule=create_mock_process_rule(), + doc_form=IndexStructureType.QA_INDEX, + session=mock_dependencies["session"], + ) + + assert result.total_segments == 220 + assert result.qa_preview is not None + assert len(result.qa_preview) == 10 + assert result.qa_preview[-1].question == "Question 9" + def test_indexing_estimate_commits_preview_cleanup_before_summary_workers( self, mock_dependencies, config_overrides ):