File size: 2,438 Bytes
683fd03 f9306c2 683fd03 f9306c2 3e67073 f9306c2 3e67073 f9306c2 3e67073 f9306c2 3e67073 f9306c2 3e67073 f9306c2 3e67073 f9306c2 3e67073 f9306c2 3e67073 f9306c2 3e67073 f9306c2 3e67073 f9306c2 3e67073 f9306c2 65a8fdb 3e67073 f9306c2 3e67073 f9306c2 3e67073 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 | ---
title: MathVision JEPA Explorer
emoji: 🔎
colorFrom: blue
colorTo: green
sdk: docker
pinned: false
---
# MathVision Explorer
Typed Python-startpunt voor een **MathVision + JEPA** explorer. De eerste versie werkt
lokaal met MathVision-achtige JSONL-bestanden en een eenvoudige, testbare image embedder.
Daarna kun je de embedder vervangen door I-JEPA-features.
## Installatie
```powershell
uv sync --dev
```
Of via Make:
```bash
make sync
```
Met I-JEPA ondersteuning:
```powershell
make sync-ijepa
```
Alles klaarzetten, inclusief Streamlit, I-JEPA, demo-data, gallery en checks:
```bash
make ready
```
Met Streamlit UI:
```bash
make sync-app
```
## Verwacht JSONL-formaat
Elke regel is een probleem:
```json
{"id":"mv-001","question":"How many cubes are visible?","answer":"7","image":"images/mv-001.png","subject":"geometry","level":2}
```
Ondersteunde velden:
- `id` of `problem_id`
- `question`
- `answer`
- `image`
- `options`
- `subject`
- `level`
- `problem_type` (optioneel)
- `solution`
## Gebruik
Maak eerst een zichtbare mini-demo:
```bash
make demo
make gallery
make app
```
## I-JEPA integratie
De module `mathvision_explorer.embeddings` definieert een `ImageEmbedder` protocol. De
meegeleverde `ColorStatsEmbedder` is bewust simpel, zodat tests snel en offline draaien.
`IJepaImageEmbedder` gebruikt standaard `facebook/ijepa_vith14_1k` via Hugging Face
Transformers en poolt `last_hidden_state` naar een 1D embedding.
Voorbeeld (2 images -> cosine similarity):
```python
from pathlib import Path
from mathvision_explorer.embeddings import IJepaImageEmbedder
from mathvision_explorer.index import cosine_similarity
embedder = IJepaImageEmbedder()
v1 = embedder.embed_image(Path("data/demo/images/mv-001.png"))
v2 = embedder.embed_image(Path("data/demo/images/mv-002.png"))
print(cosine_similarity(v1, v2))
```
## Kwaliteit
```powershell
uv run pytest
uv run mypy
uv run ruff check .
```
Of:
```bash
make check
```
## Hugging Face Spaces
Deze repo is voorbereid als Docker Space. De hosted entrypoint is `app.py`; die maakt
demo-data aan en start daarna de Streamlit explorer. Dependencies staan in
`pyproject.toml`; Docker installeert met `pip install -e ".[app,ijepa]"`.
Belangrijk voor I-JEPA:
- Docker gebruikt CPU-only PyTorch wheels.
- Transformers is gepind op een stabiele 5.x release met I-JEPA support.
- De eerste keer dat `ijepa` gekozen wordt, downloadt de app het model.
|