Enhance Vectorize All process with error handling, retries and minor improvements (#5479)

* fix (vectors): Fixed Vectorize All progress report and ETA issues

* fix (vectors): Added strip reasoning block function for extras/WebLLM summaries

* feat(vectors): Retry failed summaries with configurable attempts

* feat(vectors): Skip summarization for short messages

* feat(vectors): Skip failed messages during Vectorize All instead of aborting all

Prevents the "Vectorize All" process from stopping on single-message
errors. Failed items are now skipped and reported at the end of the
session rather than aborting the entire sync.

Summarization: Implements per-message retries; failures use the original
text as a fallback or mark for skipping.

Vector Insertion: Differentiates fatal configuration errors (abort) from
transient batch failures (skip and notify).

* Resolved: 'account_id_missing' is missing

* Resolved: Refactored out summarizeSkipOnFailure() functionality into summarize() via options parameter

* Fix eslint and type checks

* feat(vectors): add types to maps and sets, improve summarize function options

---------

Co-authored-by: Cohee <18619528+Cohee1207@users.noreply.github.com>
This commit is contained in:
TanJeeSchuan
2026-04-20 07:33:12 +08:00
committed by GitHub
parent 8aeda4a101
commit e5d4ff5fae
2 changed files with 152 additions and 40 deletions
@@ -493,6 +493,16 @@
<label for="vectors_summary_prompt" title="Summary Prompt:">Summary Prompt:</label>
<small data-i18n="Only used when Main API or WebLLM Extension is selected.">Only used when Main API or WebLLM Extension is selected.</small>
<textarea id="vectors_summary_prompt" class="text_pole textarea_compact" rows="6" placeholder="This prompt will be sent to AI to request the summary generation."></textarea>
<label for="vectors_summary_retries" title="Number of attempts per message before aborting vectorization.">
<span data-i18n="Summarization retries per message">Summarization retries per message</span>
</label>
<input id="vectors_summary_retries" type="number" class="text_pole widthUnset" min="1" max="10" step="1" />
<label for="vectors_summary_threshold" title="Messages shorter than this (in characters) are embedded as-is without summarization. Set to 0 to always summarize.">
<span data-i18n="Summarization min length (chars)">Summarization min length (chars)</span>
</label>
<input id="vectors_summary_threshold" type="number" class="text_pole widthUnset" min="0" step="1" />
</div>
</div>
<small data-i18n="Old messages are vectorized gradually as you chat. To process all previous messages, click the button below.">