mirror of
https://github.com/qdrant/landing_page.git
synced 2026-10-02 17:38:31 +02:00
images
This commit is contained in:
@@ -18,8 +18,6 @@ category: qdrant-internals
|
||||
weight: -200
|
||||
---
|
||||
|
||||
# TurboQuant in Qdrant
|
||||
|
||||
If you run production vector workloads, you already know the compression ladder in Qdrant: float32 is the baseline, **Scalar Quantization (SQ)** compresses vectors by 4× with almost no recall hit, and **Binary Quantization (BQ)** packs vectors at 16× or 32×.
|
||||
|
||||
Qdrant 1.18 ships **TurboQuant** — a new rotation-based vector quantization method from [Google Research](https://research.google/blog/turboquant-redefining-ai-efficiency-with-extreme-compression/), with extensions that make it work on real production embeddings. Summarizing the results of benchmarks across public embedding datasets:
|
||||
@@ -66,23 +64,19 @@ The `bits` field controls encoding bit depth. It defaults to `bits4`. Available
|
||||
|
||||
## At a Glance
|
||||
|
||||
Recall, HNSW (`m=16`, `ef_construct=128`). Four datasets shown here for orientation; the full dataset table is [further down](#detailed-benchmarks).
|
||||
Recall, HNSW (`m=16`, `ef_construct=128`), on four representative datasets — [arxiv-instructorxl-768](https://huggingface.co/datasets/Qdrant/arxiv-titles-instructorxl-embeddings), dbpedia-gemini [TODO link], dbpedia-openai-ada [TODO link], and [wiki-cohere-v3-1024](https://huggingface.co/datasets/Cohere/wikipedia-2023-11-embed-multilingual-v3). The full ten-dataset table is [further down](#detailed-benchmarks).
|
||||
|
||||
| Dataset | f32 | SQ | **TQ 4-bit** | TQ 2-bit | BQ 2-bit | TQ 1-bit | BQ 1-bit |
|
||||
| ----------------------------------------------------------------------------------------------------- | ------ | ------ | ------------ | ---------- | -------- | ---------- | -------- |
|
||||
| [arxiv-instructorxl-768](https://huggingface.co/datasets/Qdrant/arxiv-titles-instructorxl-embeddings) | 0.9419 | 0.9285 | **0.9193** | **0.8227** | 0.6756 | **0.6763** | 0.4683 |
|
||||
| dbpedia-gemini [TODO link] | 0.9167 | 0.9134 | **0.9020** | **0.8170** | 0.6689 | **0.6990** | 0.4945 |
|
||||
| dbpedia-openai-ada [TODO link] | 0.9625 | 0.8839 | **0.9299** | **0.8480** | 0.7332 | **0.7356** | 0.6098 |
|
||||
| [wiki-cohere-v3-1024](https://huggingface.co/datasets/Cohere/wikipedia-2023-11-embed-multilingual-v3) | 0.9446 | 0.9014 | **0.9271** | **0.8303** | 0.6880 | **0.6300** | 0.5409 |
|
||||
| **Compression** | 1× | 4× | **8×** | 16× | 16× | 32× | 32× |
|
||||
**1. TQ 4-bit is competitive with SQ at half the storage.** On `arxiv-instructorxl` and `dbpedia-gemini` it is about 1 pp below SQ; on `dbpedia-openai-ada` and `wiki-cohere-v3` it actually *beats* SQ by up to 4.6 pp.
|
||||
|
||||
`BQ 1-bit` is the vanilla 1-bit configuration (1-bit storage, 1-bit query). The asymmetric variant (8-bit query) is included separately in the [detailed table](#detailed-benchmarks).
|
||||
{{< figure src="/articles_data/turboquant/at-a-glance-4bit.svg" alt="Recall comparison: float32 baseline vs SQ (4×) vs TurboQuant 4-bit (8×) across four datasets" caption="float32 baseline, SQ (4× compression), and TurboQuant 4-bit (8× compression)." width="100%" >}}
|
||||
|
||||
Three main observations:
|
||||
**2. TQ 2-bit beats BQ 2-bit by 11–15 pp** on these four datasets (and 9–24 pp across all ten datasets), at the same 16× storage.
|
||||
|
||||
1. **TQ 4-bit is competitive with SQ at half the storage.** On `arxiv-instructorxl` and `dbpedia-gemini` it is about 1 pp below SQ; on `dbpedia-openai-ada` and `wiki-cohere-v3` it actually *beats* SQ by up to 4.6 pp.
|
||||
2. **TQ 2-bit beats BQ 2-bit by 11–15 pp** on these four datasets (and 9–24 pp across all ten datasets), at the same 16× storage.
|
||||
3. **TQ 1-bit beats vanilla BQ 1-bit by 9–21 pp** on these four datasets (and 9–21 pp across all ten datasets), at the same 32× storage.
|
||||
{{< figure src="/articles_data/turboquant/at-a-glance-2bit.svg" alt="Recall comparison at 16× compression: TurboQuant 2-bit vs Binary Quantization 2-bit" caption="At 16× compression — TurboQuant 2-bit vs Binary Quantization 2-bit." width="100%" >}}
|
||||
|
||||
**3. TQ 1-bit beats vanilla BQ 1-bit by 9–21 pp** on these four datasets (and 9–21 pp across all ten datasets), at the same 32× storage. `BQ 1-bit` here is the vanilla 1-bit configuration (1-bit storage, 1-bit query); the asymmetric variant (8-bit query) is in the [detailed table](#detailed-benchmarks).
|
||||
|
||||
{{< figure src="/articles_data/turboquant/at-a-glance-1bit.svg" alt="Recall comparison at 32× compression: TurboQuant 1-bit vs vanilla Binary Quantization 1-bit" caption="At 32× compression — TurboQuant 1-bit vs vanilla Binary Quantization 1-bit." width="100%" >}}
|
||||
|
||||
## What Is TurboQuant?
|
||||
|
||||
@@ -116,8 +110,7 @@ Vanilla MSE has a persistent length bias: quantized vectors are systematically s
|
||||
|
||||
The fix we use here comes from **[RaBitQ](https://arxiv.org/abs/2405.12497)** rather than from the TurboQuant paper itself: store one extra per-vector scalar that records how much the quantization shrank the length, and multiply it back in at scoring time. We pay the same 4 bytes per vector that we already reserve for the L2 length and use them to store the **ratio of original length to centroid-reconstruction length**.
|
||||
|
||||
TODO: diagram
|
||||
|
||||
{{< figure src="/articles_data/turboquant/length-renormalization.svg" alt="2D illustration of length renormalization: the quantized vector is short and slightly rotated; multiplying by the stored ratio scales it back to the original length and lands it much closer to the original vector" caption="The quantized vector is shorter than the original and points in a slightly different direction. Multiplying by the stored ratio scales it back to the original length — the renormalized vector lands on the same circle as the original, much closer to it than the raw quantized one." width="100%" >}}
|
||||
|
||||
TurboQuant's PROD variant spends an entire QJL random projection plus extra bits in the codebook on the same problem; RaBitQ-style renormalization spends 4 bytes and one multiplication.
|
||||
|
||||
|
||||
@@ -0,0 +1,41 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 760 420" font-family="-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif" font-size="13" role="img" aria-label="Recall at 32× compression — TurboQuant 1-bit vs Binary Quantization 1-bit">
|
||||
<rect width="100%" height="100%" fill="#ffffff"/>
|
||||
<text x="380.0" y="30" text-anchor="middle" font-size="16" font-weight="600" fill="#0F172A">Recall at 32× compression — TurboQuant 1-bit vs Binary Quantization 1-bit</text>
|
||||
<line x1="56" y1="342.0" x2="736" y2="342.0" stroke="#E2E8F0" stroke-width="1"/>
|
||||
<text x="48" y="346.0" text-anchor="end" fill="#64748B">0.0</text>
|
||||
<line x1="56" y1="287.6" x2="736" y2="287.6" stroke="#E2E8F0" stroke-width="1"/>
|
||||
<text x="48" y="291.6" text-anchor="end" fill="#64748B">0.2</text>
|
||||
<line x1="56" y1="233.2" x2="736" y2="233.2" stroke="#E2E8F0" stroke-width="1"/>
|
||||
<text x="48" y="237.2" text-anchor="end" fill="#64748B">0.4</text>
|
||||
<line x1="56" y1="178.8" x2="736" y2="178.8" stroke="#E2E8F0" stroke-width="1"/>
|
||||
<text x="48" y="182.8" text-anchor="end" fill="#64748B">0.6</text>
|
||||
<line x1="56" y1="124.4" x2="736" y2="124.4" stroke="#E2E8F0" stroke-width="1"/>
|
||||
<text x="48" y="128.4" text-anchor="end" fill="#64748B">0.8</text>
|
||||
<line x1="56" y1="70.0" x2="736" y2="70.0" stroke="#E2E8F0" stroke-width="1"/>
|
||||
<text x="48" y="74.0" text-anchor="end" fill="#64748B">1.0</text>
|
||||
<line x1="56" y1="342" x2="736" y2="342" stroke="#0F172A" stroke-width="1.2"/>
|
||||
<rect x="74.0" y="158.0" width="64.0" height="184.0" fill="#DC244C" rx="2"/>
|
||||
<text x="106.0" y="154.0" text-anchor="middle" font-size="11" fill="#0F172A" font-weight="500">0.676</text>
|
||||
<rect x="144.0" y="214.6" width="64.0" height="127.4" fill="#94A3B8" rx="2"/>
|
||||
<text x="176.0" y="210.6" text-anchor="middle" font-size="11" fill="#0F172A" font-weight="500">0.468</text>
|
||||
<text x="141.0" y="360.0" text-anchor="middle" font-size="12" fill="#334155">arxiv-instructorxl-768</text>
|
||||
<rect x="244.0" y="151.9" width="64.0" height="190.1" fill="#DC244C" rx="2"/>
|
||||
<text x="276.0" y="147.9" text-anchor="middle" font-size="11" fill="#0F172A" font-weight="500">0.699</text>
|
||||
<rect x="314.0" y="207.5" width="64.0" height="134.5" fill="#94A3B8" rx="2"/>
|
||||
<text x="346.0" y="203.5" text-anchor="middle" font-size="11" fill="#0F172A" font-weight="500">0.494</text>
|
||||
<text x="311.0" y="360.0" text-anchor="middle" font-size="12" fill="#334155">dbpedia-gemini</text>
|
||||
<rect x="414.0" y="141.9" width="64.0" height="200.1" fill="#DC244C" rx="2"/>
|
||||
<text x="446.0" y="137.9" text-anchor="middle" font-size="11" fill="#0F172A" font-weight="500">0.736</text>
|
||||
<rect x="484.0" y="176.1" width="64.0" height="165.9" fill="#94A3B8" rx="2"/>
|
||||
<text x="516.0" y="172.1" text-anchor="middle" font-size="11" fill="#0F172A" font-weight="500">0.610</text>
|
||||
<text x="481.0" y="360.0" text-anchor="middle" font-size="12" fill="#334155">dbpedia-openai-ada</text>
|
||||
<rect x="584.0" y="170.6" width="64.0" height="171.4" fill="#DC244C" rx="2"/>
|
||||
<text x="616.0" y="166.6" text-anchor="middle" font-size="11" fill="#0F172A" font-weight="500">0.630</text>
|
||||
<rect x="654.0" y="194.9" width="64.0" height="147.1" fill="#94A3B8" rx="2"/>
|
||||
<text x="686.0" y="190.9" text-anchor="middle" font-size="11" fill="#0F172A" font-weight="500">0.541</text>
|
||||
<text x="651.0" y="360.0" text-anchor="middle" font-size="12" fill="#334155">wiki-cohere-v3-1024</text>
|
||||
<rect x="250.0" y="380.0" width="12" height="12" fill="#DC244C" rx="2"/>
|
||||
<text x="270.0" y="390.0" fill="#0F172A">TQ 1-bit — 32×</text>
|
||||
<rect x="392.0" y="380.0" width="12" height="12" fill="#94A3B8" rx="2"/>
|
||||
<text x="412.0" y="390.0" fill="#0F172A">BQ 1-bit — 32×</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 3.5 KiB |
@@ -0,0 +1,41 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 760 420" font-family="-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif" font-size="13" role="img" aria-label="Recall at 16× compression — TurboQuant 2-bit vs Binary Quantization 2-bit">
|
||||
<rect width="100%" height="100%" fill="#ffffff"/>
|
||||
<text x="380.0" y="30" text-anchor="middle" font-size="16" font-weight="600" fill="#0F172A">Recall at 16× compression — TurboQuant 2-bit vs Binary Quantization 2-bit</text>
|
||||
<line x1="56" y1="342.0" x2="736" y2="342.0" stroke="#E2E8F0" stroke-width="1"/>
|
||||
<text x="48" y="346.0" text-anchor="end" fill="#64748B">0.0</text>
|
||||
<line x1="56" y1="287.6" x2="736" y2="287.6" stroke="#E2E8F0" stroke-width="1"/>
|
||||
<text x="48" y="291.6" text-anchor="end" fill="#64748B">0.2</text>
|
||||
<line x1="56" y1="233.2" x2="736" y2="233.2" stroke="#E2E8F0" stroke-width="1"/>
|
||||
<text x="48" y="237.2" text-anchor="end" fill="#64748B">0.4</text>
|
||||
<line x1="56" y1="178.8" x2="736" y2="178.8" stroke="#E2E8F0" stroke-width="1"/>
|
||||
<text x="48" y="182.8" text-anchor="end" fill="#64748B">0.6</text>
|
||||
<line x1="56" y1="124.4" x2="736" y2="124.4" stroke="#E2E8F0" stroke-width="1"/>
|
||||
<text x="48" y="128.4" text-anchor="end" fill="#64748B">0.8</text>
|
||||
<line x1="56" y1="70.0" x2="736" y2="70.0" stroke="#E2E8F0" stroke-width="1"/>
|
||||
<text x="48" y="74.0" text-anchor="end" fill="#64748B">1.0</text>
|
||||
<line x1="56" y1="342" x2="736" y2="342" stroke="#0F172A" stroke-width="1.2"/>
|
||||
<rect x="74.0" y="118.2" width="64.0" height="223.8" fill="#DC244C" rx="2"/>
|
||||
<text x="106.0" y="114.2" text-anchor="middle" font-size="11" fill="#0F172A" font-weight="500">0.823</text>
|
||||
<rect x="144.0" y="158.2" width="64.0" height="183.8" fill="#94A3B8" rx="2"/>
|
||||
<text x="176.0" y="154.2" text-anchor="middle" font-size="11" fill="#0F172A" font-weight="500">0.676</text>
|
||||
<text x="141.0" y="360.0" text-anchor="middle" font-size="12" fill="#334155">arxiv-instructorxl-768</text>
|
||||
<rect x="244.0" y="119.8" width="64.0" height="222.2" fill="#DC244C" rx="2"/>
|
||||
<text x="276.0" y="115.8" text-anchor="middle" font-size="11" fill="#0F172A" font-weight="500">0.817</text>
|
||||
<rect x="314.0" y="160.1" width="64.0" height="181.9" fill="#94A3B8" rx="2"/>
|
||||
<text x="346.0" y="156.1" text-anchor="middle" font-size="11" fill="#0F172A" font-weight="500">0.669</text>
|
||||
<text x="311.0" y="360.0" text-anchor="middle" font-size="12" fill="#334155">dbpedia-gemini</text>
|
||||
<rect x="414.0" y="111.3" width="64.0" height="230.7" fill="#DC244C" rx="2"/>
|
||||
<text x="446.0" y="107.3" text-anchor="middle" font-size="11" fill="#0F172A" font-weight="500">0.848</text>
|
||||
<rect x="484.0" y="142.6" width="64.0" height="199.4" fill="#94A3B8" rx="2"/>
|
||||
<text x="516.0" y="138.6" text-anchor="middle" font-size="11" fill="#0F172A" font-weight="500">0.733</text>
|
||||
<text x="481.0" y="360.0" text-anchor="middle" font-size="12" fill="#334155">dbpedia-openai-ada</text>
|
||||
<rect x="584.0" y="116.2" width="64.0" height="225.8" fill="#DC244C" rx="2"/>
|
||||
<text x="616.0" y="112.2" text-anchor="middle" font-size="11" fill="#0F172A" font-weight="500">0.830</text>
|
||||
<rect x="654.0" y="154.9" width="64.0" height="187.1" fill="#94A3B8" rx="2"/>
|
||||
<text x="686.0" y="150.9" text-anchor="middle" font-size="11" fill="#0F172A" font-weight="500">0.688</text>
|
||||
<text x="651.0" y="360.0" text-anchor="middle" font-size="12" fill="#334155">wiki-cohere-v3-1024</text>
|
||||
<rect x="250.0" y="380.0" width="12" height="12" fill="#DC244C" rx="2"/>
|
||||
<text x="270.0" y="390.0" fill="#0F172A">TQ 2-bit — 16×</text>
|
||||
<rect x="392.0" y="380.0" width="12" height="12" fill="#94A3B8" rx="2"/>
|
||||
<text x="412.0" y="390.0" fill="#0F172A">BQ 2-bit — 16×</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 3.5 KiB |
@@ -0,0 +1,51 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 760 420" font-family="-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif" font-size="13" role="img" aria-label="Recall — float32 baseline vs SQ (4×) vs TurboQuant 4-bit (8×)">
|
||||
<rect width="100%" height="100%" fill="#ffffff"/>
|
||||
<text x="380.0" y="30" text-anchor="middle" font-size="16" font-weight="600" fill="#0F172A">Recall — float32 baseline vs SQ (4×) vs TurboQuant 4-bit (8×)</text>
|
||||
<line x1="56" y1="342.0" x2="736" y2="342.0" stroke="#E2E8F0" stroke-width="1"/>
|
||||
<text x="48" y="346.0" text-anchor="end" fill="#64748B">0.0</text>
|
||||
<line x1="56" y1="287.6" x2="736" y2="287.6" stroke="#E2E8F0" stroke-width="1"/>
|
||||
<text x="48" y="291.6" text-anchor="end" fill="#64748B">0.2</text>
|
||||
<line x1="56" y1="233.2" x2="736" y2="233.2" stroke="#E2E8F0" stroke-width="1"/>
|
||||
<text x="48" y="237.2" text-anchor="end" fill="#64748B">0.4</text>
|
||||
<line x1="56" y1="178.8" x2="736" y2="178.8" stroke="#E2E8F0" stroke-width="1"/>
|
||||
<text x="48" y="182.8" text-anchor="end" fill="#64748B">0.6</text>
|
||||
<line x1="56" y1="124.4" x2="736" y2="124.4" stroke="#E2E8F0" stroke-width="1"/>
|
||||
<text x="48" y="128.4" text-anchor="end" fill="#64748B">0.8</text>
|
||||
<line x1="56" y1="70.0" x2="736" y2="70.0" stroke="#E2E8F0" stroke-width="1"/>
|
||||
<text x="48" y="74.0" text-anchor="end" fill="#64748B">1.0</text>
|
||||
<line x1="56" y1="342" x2="736" y2="342" stroke="#0F172A" stroke-width="1.2"/>
|
||||
<rect x="74.0" y="85.8" width="40.7" height="256.2" fill="#1E293B" rx="2"/>
|
||||
<text x="94.3" y="81.8" text-anchor="middle" font-size="11" fill="#0F172A" font-weight="500">0.942</text>
|
||||
<rect x="120.7" y="89.4" width="40.7" height="252.6" fill="#4F46E5" rx="2"/>
|
||||
<text x="141.0" y="85.4" text-anchor="middle" font-size="11" fill="#0F172A" font-weight="500">0.928</text>
|
||||
<rect x="167.3" y="92.0" width="40.7" height="250.0" fill="#DC244C" rx="2"/>
|
||||
<text x="187.7" y="88.0" text-anchor="middle" font-size="11" fill="#0F172A" font-weight="500">0.919</text>
|
||||
<text x="141.0" y="360.0" text-anchor="middle" font-size="12" fill="#334155">arxiv-instructorxl-768</text>
|
||||
<rect x="244.0" y="92.7" width="40.7" height="249.3" fill="#1E293B" rx="2"/>
|
||||
<text x="264.3" y="88.7" text-anchor="middle" font-size="11" fill="#0F172A" font-weight="500">0.917</text>
|
||||
<rect x="290.7" y="93.6" width="40.7" height="248.4" fill="#4F46E5" rx="2"/>
|
||||
<text x="311.0" y="89.6" text-anchor="middle" font-size="11" fill="#0F172A" font-weight="500">0.913</text>
|
||||
<rect x="337.3" y="96.7" width="40.7" height="245.3" fill="#DC244C" rx="2"/>
|
||||
<text x="357.7" y="92.7" text-anchor="middle" font-size="11" fill="#0F172A" font-weight="500">0.902</text>
|
||||
<text x="311.0" y="360.0" text-anchor="middle" font-size="12" fill="#334155">dbpedia-gemini</text>
|
||||
<rect x="414.0" y="80.2" width="40.7" height="261.8" fill="#1E293B" rx="2"/>
|
||||
<text x="434.3" y="76.2" text-anchor="middle" font-size="11" fill="#0F172A" font-weight="500">0.963</text>
|
||||
<rect x="460.7" y="101.6" width="40.7" height="240.4" fill="#4F46E5" rx="2"/>
|
||||
<text x="481.0" y="97.6" text-anchor="middle" font-size="11" fill="#0F172A" font-weight="500">0.884</text>
|
||||
<rect x="507.3" y="89.1" width="40.7" height="252.9" fill="#DC244C" rx="2"/>
|
||||
<text x="527.7" y="85.1" text-anchor="middle" font-size="11" fill="#0F172A" font-weight="500">0.930</text>
|
||||
<text x="481.0" y="360.0" text-anchor="middle" font-size="12" fill="#334155">dbpedia-openai-ada</text>
|
||||
<rect x="584.0" y="85.1" width="40.7" height="256.9" fill="#1E293B" rx="2"/>
|
||||
<text x="604.3" y="81.1" text-anchor="middle" font-size="11" fill="#0F172A" font-weight="500">0.945</text>
|
||||
<rect x="630.7" y="96.8" width="40.7" height="245.2" fill="#4F46E5" rx="2"/>
|
||||
<text x="651.0" y="92.8" text-anchor="middle" font-size="11" fill="#0F172A" font-weight="500">0.901</text>
|
||||
<rect x="677.3" y="89.8" width="40.7" height="252.2" fill="#DC244C" rx="2"/>
|
||||
<text x="697.7" y="85.8" text-anchor="middle" font-size="11" fill="#0F172A" font-weight="500">0.927</text>
|
||||
<text x="651.0" y="360.0" text-anchor="middle" font-size="12" fill="#334155">wiki-cohere-v3-1024</text>
|
||||
<rect x="231.5" y="380.0" width="12" height="12" fill="#1E293B" rx="2"/>
|
||||
<text x="251.5" y="390.0" fill="#0F172A">float32</text>
|
||||
<rect x="324.5" y="380.0" width="12" height="12" fill="#4F46E5" rx="2"/>
|
||||
<text x="344.5" y="390.0" fill="#0F172A">SQ — 4×</text>
|
||||
<rect x="417.5" y="380.0" width="12" height="12" fill="#DC244C" rx="2"/>
|
||||
<text x="437.5" y="390.0" fill="#0F172A">TQ 4-bit — 8×</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 4.3 KiB |
@@ -0,0 +1,27 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 760 420" font-family="-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif" font-size="13" role="img" aria-label="2D illustration of length renormalization">
|
||||
<defs>
|
||||
<marker id="arrow" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse">
|
||||
<path d="M 0 0 L 10 5 L 0 10 z" fill="context-stroke"/>
|
||||
</marker>
|
||||
<marker id="arrow-axis" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="6" markerHeight="6" orient="auto-start-reverse">
|
||||
<path d="M 0 0 L 10 5 L 0 10 z" fill="#0F172A"/>
|
||||
</marker>
|
||||
</defs>
|
||||
<rect width="100%" height="100%" fill="#ffffff"/>
|
||||
<text x="380.0" y="30" text-anchor="middle" font-size="16" font-weight="600" fill="#0F172A">Length renormalization in 2D</text>
|
||||
<line x1="110" y1="380" x2="500.0" y2="380.0" stroke="#0F172A" stroke-width="1.2" marker-end="url(#arrow-axis)"/>
|
||||
<line x1="110" y1="380" x2="110.0" y2="20.0" stroke="#0F172A" stroke-width="1.2" marker-end="url(#arrow-axis)"/>
|
||||
<path d="M 425.0 380.0 A 315.0 315.0 0 0 0 110.0 65.0" fill="none" stroke="#0F172A" stroke-width="1.4" stroke-dasharray="4 4"/>
|
||||
<line x1="303.9" y1="131.8" x2="215.7" y2="311.4" stroke="#94A3B8" stroke-width="1.2" stroke-dasharray="3 3"/>
|
||||
<line x1="303.9" y1="131.8" x2="374.2" y2="208.4" stroke="#94A3B8" stroke-width="1.2" stroke-dasharray="3 3"/>
|
||||
<line x1="110" y1="380" x2="374.2" y2="208.4" stroke="#DC244C" stroke-width="3" marker-end="url(#arrow)"/>
|
||||
<line x1="110" y1="380" x2="215.7" y2="311.4" stroke="#64748B" stroke-width="2.6" stroke-dasharray="5 4" marker-end="url(#arrow)"/>
|
||||
<line x1="110" y1="380" x2="303.9" y2="131.8" stroke="#1E293B" stroke-width="3" marker-end="url(#arrow)"/>
|
||||
<circle cx="110" cy="380" r="3" fill="#0F172A"/>
|
||||
<circle cx="303.9" cy="131.8" r="4" fill="#1E293B"/>
|
||||
<circle cx="374.2" cy="208.4" r="4" fill="#DC244C"/>
|
||||
<circle cx="215.7" cy="311.4" r="4" fill="#64748B"/>
|
||||
<text x="315.9" y="123.8" text-anchor="start" font-size="16" font-weight="600" fill="#1E293B">x</text>
|
||||
<text x="388.2" y="212.4" text-anchor="start" font-size="16" font-weight="600" fill="#DC244C">ratio · x quantized</text>
|
||||
<text x="229.7" y="329.4" text-anchor="start" font-size="16" font-weight="600" fill="#64748B">x quantized</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.2 KiB |
Reference in New Issue
Block a user