Upload folder using huggingface_hub
Browse files- README.md +62 -0
- models.json +49 -0
- qwen3-vl-2b/frame_adapter.safetensors +3 -0
- qwen3-vl-2b/query_lora.safetensors +3 -0
- qwen3-vl-8b/frame_adapter.safetensors +3 -0
- qwen3-vl-8b/query_lora.safetensors +3 -0
- siglip2-base/frame_adapter.safetensors +3 -0
- siglip2-base/query_lora.safetensors +3 -0
- siglip2-so400m/frame_adapter.safetensors +3 -0
- siglip2-so400m/query_lora.safetensors +3 -0
- vultron-0.8b/frame_adapter.safetensors +3 -0
- vultron-0.8b/query_lora.safetensors +3 -0
README.md
ADDED
|
@@ -0,0 +1,62 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
license: apache-2.0
|
| 3 |
+
library_name: streamembed
|
| 4 |
+
base_model:
|
| 5 |
+
- Qwen/Qwen3-VL-Embedding-2B
|
| 6 |
+
- Qwen/Qwen3-VL-Embedding-8B
|
| 7 |
+
- google/siglip2-so400m-patch16-naflex
|
| 8 |
+
- google/siglip2-base-patch16-naflex
|
| 9 |
+
- vultr/VultronRetrieverFlash-Qwen3.5-0.8B
|
| 10 |
+
tags:
|
| 11 |
+
- screenshots
|
| 12 |
+
- retrieval
|
| 13 |
+
- lora
|
| 14 |
+
- qwen3-vl
|
| 15 |
+
- siglip2
|
| 16 |
+
---
|
| 17 |
+
|
| 18 |
+
# StreamEmbed models
|
| 19 |
+
|
| 20 |
+
LoRA adapters for [StreamEmbed](https://pypi.org/project/streamembed/), which searches your own screen history by describing what you saw. Only the adapters are stored here; each base model comes from its own repository, pinned to the commit the adapters were trained against.
|
| 21 |
+
|
| 22 |
+
| Model | Base model (commit) | Size | StreamEmbed support |
|
| 23 |
+
|---|---|---|---|
|
| 24 |
+
| `qwen3-vl-2b` (default) | [Qwen/Qwen3-VL-Embedding-2B](https://huggingface.co/Qwen/Qwen3-VL-Embedding-2B) (`9f2f7e7`) | 2B | yes |
|
| 25 |
+
| `qwen3-vl-8b` | [Qwen/Qwen3-VL-Embedding-8B](https://huggingface.co/Qwen/Qwen3-VL-Embedding-8B) (`2c45655`) | 8B | yes |
|
| 26 |
+
| `siglip2-so400m` | [google/siglip2-so400m-patch16-naflex](https://huggingface.co/google/siglip2-so400m-patch16-naflex) (`cc24074`) | 1.1B | weights only |
|
| 27 |
+
| `vultron-0.8b` | [vultr/VultronRetrieverFlash-Qwen3.5-0.8B](https://huggingface.co/vultr/VultronRetrieverFlash-Qwen3.5-0.8B) (`6f6b675`) | 0.8B | weights only |
|
| 28 |
+
| `siglip2-base` | [google/siglip2-base-patch16-naflex](https://huggingface.co/google/siglip2-base-patch16-naflex) (`b53b807`) | 0.4B | weights only |
|
| 29 |
+
|
| 30 |
+
StreamEmbed's stream encoder runs Qwen3-VL models. The SigLIP2 and Vultron adapters are published for use with your own code; StreamEmbed lists them but does not run them yet. The SigLIP2 adapters were trained with NaFlex inputs of at most 1024 patches (`max_num_patches` in `models.json`).
|
| 31 |
+
|
| 32 |
+
Each model folder has two LoRAs (rank 32, alpha 32) on the attention layers of the image and text (or language model) encoders:
|
| 33 |
+
|
| 34 |
+
- `query_lora.safetensors`: the retrieval LoRA, trained to find screenshots from a description. It encodes questions, and full screenshots when nothing is skipped.
|
| 35 |
+
- `frame_adapter.safetensors`: encodes screenshots when repeated blocks are skipped and unchanged ones are reused across frames, so that these vectors stay close to full-screenshot vectors.
|
| 36 |
+
|
| 37 |
+
`models.json` lists every model with its base repository, commit and files.
|
| 38 |
+
|
| 39 |
+
## Use
|
| 40 |
+
|
| 41 |
+
```python
|
| 42 |
+
import streamembed as se
|
| 43 |
+
|
| 44 |
+
se.configure(model="qwen3-vl-2b")
|
| 45 |
+
se.build_index_from_directory("screenshots")
|
| 46 |
+
results = se.query_index("the flight search page with fares to Denver")
|
| 47 |
+
se.visualize_results(results)
|
| 48 |
+
```
|
| 49 |
+
|
| 50 |
+
To apply an adapter yourself, load it into a PEFT model of its base:
|
| 51 |
+
|
| 52 |
+
```python
|
| 53 |
+
from peft import LoraConfig, get_peft_model, set_peft_model_state_dict
|
| 54 |
+
from safetensors.torch import load_file
|
| 55 |
+
|
| 56 |
+
state = load_file("qwen3-vl-8b/query_lora.safetensors")
|
| 57 |
+
targets = sorted({k.split("base_model.model.")[1].rsplit(".lora_", 1)[0] for k in state})
|
| 58 |
+
model = get_peft_model(base_model, LoraConfig(r=32, lora_alpha=32, target_modules=targets))
|
| 59 |
+
set_peft_model_state_dict(model, state)
|
| 60 |
+
```
|
| 61 |
+
|
| 62 |
+
The files are PEFT LoRA state dicts (keys `base_model.model.<module>.lora_A.weight` and `lora_B.weight`) in float32.
|
models.json
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"qwen3-vl-2b": {
|
| 3 |
+
"base": "Qwen/Qwen3-VL-Embedding-2B",
|
| 4 |
+
"revision": "9f2f7e710d6d81056aa5c0a4f04764fec6bb7bda",
|
| 5 |
+
"frame_lora": "qwen3-vl-2b/frame_adapter.safetensors",
|
| 6 |
+
"query_lora": "qwen3-vl-2b/query_lora.safetensors",
|
| 7 |
+
"scale": 1.0,
|
| 8 |
+
"architecture": "qwen3-vl",
|
| 9 |
+
"description": "Qwen3-VL-Embedding-2B with a screenshot retrieval LoRA for questions and a consistency adapter for pruned, streamed frames"
|
| 10 |
+
},
|
| 11 |
+
"qwen3-vl-8b": {
|
| 12 |
+
"base": "Qwen/Qwen3-VL-Embedding-8B",
|
| 13 |
+
"revision": "2c4565515e0f265c6511776e7193b22c0968ddc7",
|
| 14 |
+
"frame_lora": "qwen3-vl-8b/frame_adapter.safetensors",
|
| 15 |
+
"query_lora": "qwen3-vl-8b/query_lora.safetensors",
|
| 16 |
+
"scale": 1.0,
|
| 17 |
+
"architecture": "qwen3-vl",
|
| 18 |
+
"description": "Qwen3-VL-Embedding-8B with a screenshot retrieval LoRA for questions and a consistency adapter for pruned, streamed frames"
|
| 19 |
+
},
|
| 20 |
+
"siglip2-so400m": {
|
| 21 |
+
"base": "google/siglip2-so400m-patch16-naflex",
|
| 22 |
+
"revision": "cc24074f717b612951c2dead130904ab9b65a81e",
|
| 23 |
+
"frame_lora": "siglip2-so400m/frame_adapter.safetensors",
|
| 24 |
+
"query_lora": "siglip2-so400m/query_lora.safetensors",
|
| 25 |
+
"scale": 1.0,
|
| 26 |
+
"architecture": "siglip2",
|
| 27 |
+
"max_num_patches": 1024,
|
| 28 |
+
"description": "SigLIP2 So400m NaFlex with a screenshot retrieval LoRA and a consistency adapter for pruned frames"
|
| 29 |
+
},
|
| 30 |
+
"siglip2-base": {
|
| 31 |
+
"base": "google/siglip2-base-patch16-naflex",
|
| 32 |
+
"revision": "b53b807d3a2d5e2b3911292f2d69e5341cdc064c",
|
| 33 |
+
"frame_lora": "siglip2-base/frame_adapter.safetensors",
|
| 34 |
+
"query_lora": "siglip2-base/query_lora.safetensors",
|
| 35 |
+
"scale": 1.0,
|
| 36 |
+
"architecture": "siglip2",
|
| 37 |
+
"max_num_patches": 1024,
|
| 38 |
+
"description": "SigLIP2 Base NaFlex with a screenshot retrieval LoRA and a consistency adapter for pruned frames"
|
| 39 |
+
},
|
| 40 |
+
"vultron-0.8b": {
|
| 41 |
+
"base": "vultr/VultronRetrieverFlash-Qwen3.5-0.8B",
|
| 42 |
+
"revision": "6f6b6757e9ea3ad93f4f2cbd839bc6f2f0b93739",
|
| 43 |
+
"frame_lora": "vultron-0.8b/frame_adapter.safetensors",
|
| 44 |
+
"query_lora": "vultron-0.8b/query_lora.safetensors",
|
| 45 |
+
"scale": 1.0,
|
| 46 |
+
"architecture": "qwen3.5",
|
| 47 |
+
"description": "VultronRetrieverFlash (Qwen3.5 0.8B) with a screenshot retrieval LoRA and a consistency adapter for pruned, streamed frames"
|
| 48 |
+
}
|
| 49 |
+
}
|
qwen3-vl-2b/frame_adapter.safetensors
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:6522b437ab5df47fe74bfe699f7fca3a5fad926f41afd98e46953a5d4e5f085a
|
| 3 |
+
size 70300960
|
qwen3-vl-2b/query_lora.safetensors
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:77c0b41a3128d0e1987e416896ff72840a1f4bd8667dbd368e8ffdf5fc2a5d2f
|
| 3 |
+
size 70300960
|
qwen3-vl-8b/frame_adapter.safetensors
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:1c3e098a57b91201227f9ba691123b0370b99c3449d721d5d67ccec0f6450e92
|
| 3 |
+
size 146629208
|
qwen3-vl-8b/query_lora.safetensors
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:ba3d148c52145c33a2e77ef1077eed4bf58d7a21dd0bcc26bf88a9ce62a74643
|
| 3 |
+
size 146629208
|
siglip2-base/frame_adapter.safetensors
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:2e5b67bf9c2048f05b5479d92928aeabea569d0a162baedd6f9864e97c8b2a24
|
| 3 |
+
size 18902560
|
siglip2-base/query_lora.safetensors
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:e7c2c0e9ae116b74ff8522cffbb68635bad795a181d414c9b321d557aaddd351
|
| 3 |
+
size 18902560
|
siglip2-so400m/frame_adapter.safetensors
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:128c21450c0c03e9fe8d5ac2512feeb8364fcd7e642e182de539591a73888ed1
|
| 3 |
+
size 63765336
|
siglip2-so400m/query_lora.safetensors
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:7c244e30a2d1eeb5a7f56ddb0f1ecebffdfd7345b713dc181bed46893b9d251b
|
| 3 |
+
size 63765336
|
vultron-0.8b/frame_adapter.safetensors
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:11933cf5a21e40776d6c3d060bd001d7b47a3131aba3270da077faaa8e2c1baf
|
| 3 |
+
size 46428528
|
vultron-0.8b/query_lora.safetensors
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:5f2b1780eae50a0ed05f55c4538147c22ea1eef71463c26b2098d1d9c209bae3
|
| 3 |
+
size 46428528
|