Mike0021's picture
Replace oversized hero with compact app header
8db9bbc verified
Raw
History Blame Contribute Delete
13.5 kB
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="theme-color" content="#080908" />
<meta
name="description"
content="Explore WeMM-Embedding-9B across text, images, video, figures, and visual documents."
/>
<title>WeMM — Semantic Universe</title>
<link rel="stylesheet" href="/ui/app.css?v=4" />
<script type="module" src="/ui/app.js?v=2"></script>
</head>
<body>
<div class="noise" aria-hidden="true"></div>
<div class="aurora aurora-a" aria-hidden="true"></div>
<div class="aurora aurora-b" aria-hidden="true"></div>
<header class="site-header">
<a class="brand" href="#top" aria-label="WeMM home">
<span class="brand-mark" aria-hidden="true"><i></i><i></i><i></i></span>
<span><b>WeMM</b><small>SEMANTIC UNIVERSE</small></span>
</a>
<nav class="mode-nav" aria-label="Studio mode">
<button class="nav-pill active" data-mode="search">Semantic search</button>
<button class="nav-pill" data-mode="compare">Vector microscope</button>
</nav>
<div class="header-actions">
<span class="model-status" id="model-status"><i></i><span>Connecting</span></span>
<a class="icon-link" href="/gradio_api/info" target="_blank" title="API schema" aria-label="Open API schema">API</a>
<a class="icon-link arrow-link" href="https://huggingface.co/tencent/WeMM-Embedding-9B" target="_blank" rel="noreferrer" aria-label="Open model card"></a>
</div>
</header>
<main id="top">
<section class="hero" aria-labelledby="hero-title">
<div class="hero-copy">
<div class="overline"><span>UNIVERSAL MULTIMODAL EMBEDDING</span><b>QWEN3.5 · 9B</b></div>
<h1 id="hero-title">Meaning has <em>no file type.</em></h1>
<p>
Project language, imagery, video, charts, and visual documents into one shared
geometry—then watch meaning arrange itself.
</p>
<div class="hero-meta">
<div><b>4,096</b><span>native dimensions</span></div>
<div><b>80.6</b><span>MMEB-v2 average</span></div>
<div><b>190</b><span>MMEB-v3 tasks</span></div>
</div>
</div>
</section>
<section class="studio" data-panel="search">
<div class="section-heading">
<div><span>01 / RETRIEVAL UNIVERSE</span><h2>Ask in one medium.<br />Discover in another.</h2></div>
<p>Search the curated field or add a small collection of your own. Every result is scored in the same normalized vector space.</p>
</div>
<div class="studio-grid">
<form class="control-deck" id="search-form">
<div class="deck-heading">
<span>QUERY COMPOSER</span>
<button class="text-button" type="reset">Clear all</button>
</div>
<div class="deck-examples" id="expeditions">
<div class="deck-examples-heading">
<span>CURATED EXPEDITIONS</span>
<small>ONE-CLICK EXAMPLES</small>
</div>
<div class="deck-example-list">
<button class="expedition" type="button" data-example="llama"><span>01</span><b>Find Llama 4</b><small>text → screenshot</small></button>
<button class="expedition" type="button" data-example="tofu"><span>02</span><b>Find mapo tofu</b><small>text → video</small></button>
<button class="expedition" type="button" data-example="safety"><span>03</span><b>Read road safety</b><small>text → document</small></button>
<button class="expedition" type="button" data-example="image"><span>04</span><b>Match a screenshot</b><small>image + text</small></button>
<button class="expedition" type="button" data-example="video"><span>05</span><b>Understand a clip</b><small>video → text</small></button>
</div>
</div>
<label class="field-label" for="query-text">Describe what you mean</label>
<div class="textarea-wrap">
<textarea id="query-text" rows="4" maxlength="1200" placeholder="Which document explains temporary road closures?"></textarea>
<span class="key-hint">⌘ ↵</span>
</div>
<div class="visual-query-grid">
<label class="drop-field" id="query-image-drop">
<input id="query-image" type="file" accept="image/*" />
<span class="drop-icon"></span><b>Add image</b><small>PNG, JPG, WEBP</small>
<div class="file-chip" hidden><span></span><button type="button" aria-label="Remove image">×</button></div>
</label>
<label class="drop-field" id="query-video-drop">
<input id="query-video" type="file" accept="video/*" />
<span class="drop-icon play"></span><b>Add video</b><small>MP4, WEBM, MOV</small>
<div class="file-chip" hidden><span></span><button type="button" aria-label="Remove video">×</button></div>
</label>
</div>
<p class="context-note"><span></span> Visual media and text become one interleaved query.</p>
<details class="collection-builder">
<summary><span><i></i> Build your candidate collection</span><small>optional</small></summary>
<div class="details-body">
<label class="field-label" for="custom-texts">Text candidates · one per line</label>
<textarea id="custom-texts" rows="5" placeholder="Title :: Candidate text&#10;Another title :: Another candidate"></textarea>
<label class="mini-upload">
<input id="candidate-media" type="file" accept="image/*,video/*" multiple />
<span></span><b>Add candidate media</b><small>up to 6 files</small>
</label>
<div class="candidate-chips" id="candidate-chips"></div>
</div>
</details>
<div class="switch-line">
<div><b>Curated universe</b><small>10 mixed-media candidates</small></div>
<label class="switch"><input id="include-showcase" type="checkbox" checked /><span></span></label>
</div>
<fieldset class="dimension-field">
<legend><span>EMBEDDING BUDGET</span><output id="search-dimension-output">1,024D</output></legend>
<div class="dimension-pills" data-dimension-group="search">
<button type="button" data-value="64">64</button><button type="button" data-value="128">128</button>
<button type="button" data-value="256">256</button><button type="button" data-value="512">512</button>
<button type="button" data-value="1024" class="active">1K</button><button type="button" data-value="2048">2K</button>
<button type="button" data-value="4096">4K</button>
</div>
<input id="search-dimension" type="hidden" value="1024" />
<p>Smaller vectors trade storage for retrieval fidelity.</p>
</fieldset>
<button class="primary-button" id="search-button" type="submit">
<span>Map the semantic field</span><i></i>
</button>
</form>
<div class="result-deck" id="search-results" aria-live="polite">
<div class="result-topbar">
<div><span class="signal"><i></i>MODEL READY</span><small>tencent / WeMM-Embedding-9B</small></div>
<span class="result-count">AWAITING QUERY</span>
</div>
<div class="empty-universe">
<div class="empty-field" aria-hidden="true">
<i></i><i></i><i></i><i></i><i></i><i></i><span>W</span>
</div>
<h3>Your semantic field is quiet.</h3>
<p>Compose a query or choose a curated expedition. The first run maps the multimodal corpus; later runs reuse its cached vectors.</p>
<div class="media-preview-rail">
<img src="/assets/llama4_hgf.png" alt="Llama 4 model card screenshot" />
<img src="/assets/doc2.jpg" alt="Historical budget infographic" />
<video src="/assets/mapo_tofu.mp4" muted playsinline aria-label="Mapo tofu cooking clip"></video>
<img src="/assets/doc4.jpg" alt="Road safety assessment page" />
</div>
</div>
</div>
</div>
</section>
<section class="studio compare-studio" data-panel="compare" hidden>
<div class="section-heading">
<div><span>02 / VECTOR MICROSCOPE</span><h2>Put any two ideas<br />under the lens.</h2></div>
<p>Compare any supported pair, then observe whether their relationship survives Matryoshka compression from 4,096 to 64 dimensions.</p>
</div>
<form id="compare-form">
<div class="compare-inputs">
<article class="compare-side" data-side="a">
<header><span>A</span><div><b>QUERY</b><small>What are you looking for?</small></div></header>
<textarea id="pair-query-text" rows="5" placeholder="A picture or description of an idea…"></textarea>
<div class="pair-uploads">
<label><input id="pair-query-image" type="file" accept="image/*" /><span></span>IMAGE</label>
<label><input id="pair-query-video" type="file" accept="video/*" /><span></span>VIDEO</label>
</div>
<div class="pair-file" id="pair-query-file" hidden></div>
</article>
<div class="versus" aria-hidden="true"><span></span><small>COSINE</small></div>
<article class="compare-side" data-side="b">
<header><span>B</span><div><b>CANDIDATE</b><small>What should it align with?</small></div></header>
<textarea id="pair-candidate-text" rows="5" placeholder="A candidate in text, image, or video…"></textarea>
<div class="pair-uploads">
<label><input id="pair-candidate-image" type="file" accept="image/*" /><span></span>IMAGE</label>
<label><input id="pair-candidate-video" type="file" accept="video/*" /><span></span>VIDEO</label>
</div>
<div class="pair-file" id="pair-candidate-file" hidden></div>
</article>
</div>
<div class="compare-controls">
<div class="dimension-pills" data-dimension-group="compare">
<button type="button" data-value="64">64</button><button type="button" data-value="128">128</button>
<button type="button" data-value="256">256</button><button type="button" data-value="512">512</button>
<button type="button" data-value="1024" class="active">1K</button><button type="button" data-value="2048">2K</button>
<button type="button" data-value="4096">4K</button>
</div>
<input id="compare-dimension" type="hidden" value="1024" />
<button class="primary-button" id="compare-button" type="submit"><span>Measure alignment</span><i></i></button>
</div>
</form>
<div class="compare-results" id="compare-results" aria-live="polite">
<div class="compare-empty"><span></span><p>Add one input on each side to activate the microscope.</p></div>
</div>
</section>
<section class="model-story">
<div class="story-number">4096</div>
<div class="story-copy">
<span>ONE MODEL · MANY RESOLUTIONS</span>
<h2>Fold the vector.<br /><em>Keep the meaning.</em></h2>
<p>WeMM emits a 4,096-dimensional embedding with Matryoshka structure. Store fewer leading dimensions when latency or memory matters, and inspect the tradeoff here before choosing.</p>
</div>
<div class="dimension-tower" aria-hidden="true">
<i style="--w:100%"><span>4096</span></i><i style="--w:72%"><span>2048</span></i>
<i style="--w:50%"><span>1024</span></i><i style="--w:36%"><span>512</span></i>
<i style="--w:24%"><span>256</span></i><i style="--w:16%"><span>128</span></i>
<i style="--w:10%"><span>64</span></i>
</div>
</section>
</main>
<footer>
<div class="footer-brand"><span class="brand-mark"><i></i><i></i><i></i></span><b>WeMM</b></div>
<p>Cosine similarity ranks candidates within a collection. It is not a calibrated probability. Audio is not supported.</p>
<div><a href="https://huggingface.co/tencent/WeMM-Embedding-9B" target="_blank" rel="noreferrer">MODEL CARD ↗</a><a href="https://arxiv.org/abs/2608.24053" target="_blank" rel="noreferrer">PAPER ↗</a></div>
</footer>
<div class="job-toast" id="job-toast" hidden>
<div class="job-orbit"><i></i><i></i><span>W</span></div>
<div><span id="job-label">ALLOCATING ZERO GPU</span><b id="job-phase">Entering the semantic field…</b><small id="job-elapsed">00:00 elapsed</small></div>
<button id="job-close" type="button" aria-label="Dismiss">×</button>
<div class="job-progress"><i id="job-progress-bar"></i></div>
</div>
<div class="error-toast" id="error-toast" hidden><b>Something interrupted the field.</b><span></span><button type="button">×</button></div>
</body>
</html>