Repository navigation
Conversation
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds experimental local EmbeddingGemma 2 Q8 text profiles at 512 and 256 dimensions. They share one pinned download and a dedicated CPU worker; existing defaults and historical embedding behavior are preserved. Selecting a different profile requires explicit preparation of compatible vectors.
The integration provides query/document roles and titles, full immutable embedding contracts, an 8192-token limit including prompts/special tokens, bounded batches/threads, query priority, cancellation and recovery, and compatible documentary retrieval and server exports. It also fixes extraction startup/context handling and concurrent collection updates found during real document import. XLSX becomes available to documentary preparation.
Settings clearly labels the family experimental and explains shared deletion. UI copy and specific runtime errors are localized in all eleven translated languages, including the worker's nested failure reason.
Related issue
Refs #1070. This remains open for the grounding, platform and performance gates listed below.
Type of change
Validation
npm run lint,npm run typecheck,npm run buildandnpm run build:server-web.npm run test:embeddinggemma:contracts: 35 passing tests.npm testinventory, vianpm run test:ci(same test files, concurrency limited to two): 4,634 passed, 2 skipped. It found one stale generated sitemap after the dependency commit;npm run site:sitemaprepaired it and all 3 sitemap tests pass on rerun. The original full-run log is retained with its failure and repair reference.npm run test:e2e: general Electron UI smoke passes.The archived campaign exercises five product configurations in real Playwright/Electron processes: 40 imported documents, 120 retrieval queries, 12 Research Chat scenarios with two repetitions per configuration, semantic-candidate traces, resolvable citation navigation, incremental additions/edits/replacements, deletion/restoration, notebook exclusions, conversation attachments, model/vault changes, native failure/cancellation, restart and offline retrieval. Eight controlled configurations compare semantic, hybrid and lexical retrieval. Only DeepSeek Flash generation reaches a remote provider; embeddings remain local.
The M2/16 GB 512-profile Desktop run recorded hot p95 414 ms with 10,000 real generated chunks and a conservative resident-memory growth upper bound of 1.23 GiB. 2K/8K inputs are measured separately. The 256-profile product Recall@10 is 0.993; the 512-profile value is 0.998. The partly parallel synthetic corpus does not establish general multilingual quality.
Release limitations: the source-reviewed factual-answer sample fails the 95% grounding gate, although all captured citations resolve and reviewed insufficient-evidence scenarios are recognized. Windows x64, Linux x64 and macOS Intel native/package validation and separate 256-profile capacity remain pending. Both profiles therefore remain experimental and
validatedProfilesis empty. The package is a local ad-hoc macOS ARM64 smoke build, not a Developer ID release signature.See implementation and commands, campaign report and verification evidence. The audit archive includes authored fixtures, hashes, gold annotations, rankings, answers, source-grounding reviews and QA screenshots. It contains no model weights or real profiles.
Screenshots
The final packaged application running against a temporary QA profile:
Privacy and data review
The isolated provider proxy enforces direct DeepSeek Flash, two concurrent paid calls and a campaign-wide $5 cap. Recorded committed/reserved spend is below $1.77. Content-bearing traces are restricted to marked QA profiles. Credentials are copied only as the expressly authorized encrypted file before QA launch and are absent from reports.
The resource registry records Apache-2.0 per asset and packages the attribution/dependency notices. The upstream model card's Prohibited Use Policy sentence remains documented as unresolved before any redistribution/mirroring; this PR does neither.
Contributor checklist
jorgepb96matches the current agreement digest. No new acceptance is submitted on anyone's behalf.