7288 Commits
Author SHA1 Message Date
cfd76b8f23 Island shortcode (#2739)
* add an island shortcode

* improving island shortcode, add two new island visualisations for the multitenancy doc

* moved islands dir

* fix

* loader fix

* add interactive islands to the quantization docs

Replace the two static figures in manage-data/quantization with islands,
built the same way as the multitenancy ones:

- bit-depth: a float vector encoded at 1 / 1.5 / 2 bits per dimension next
  to the distribution of its components, with the thresholds, buckets and
  bit codes, storage bars, and hover/pin tracing from either side.
- asymmetric: binary stored vector x binary or 8-bit scalar query, with a
  scatter of estimated vs exact per-dimension contribution per panel.

The island shortcode now includes a content hash in the resource name, so
Hugo's dev server serves an edited island instead of the cached first build.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

* Islands: shared design system and brand palette (#2742)

* islands: shared design system, brand palette, shorter captions

Address the design review on #2739:

- Tenants use the brand secondaries (blue, violet, teal, Qdrant red) instead
  of success/warning/error, which read as status.
- One shared design system in islands.scss: `--qi-*` tokens (colors, border,
  radius, mono font) and `.qi-*` classes for the controls row, chip/toggle,
  status line, SVG frame and labels. Per-island CSS only styles what is
  specific to that diagram, on top of the tokens.
- Geist Mono across controls and all diagram labels.
- Cards: 1px neutral border, 6px radius, no shadows. The bit-depth segmented
  control and the promotion buttons become the same chip as the tenant chips.
- Asymmetric: negative sign is Qdrant red; bit-depth: bits are teal.
- Captions trimmed to one sentence; detail moved into the article text.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

* islands: keep the original tenant colors

Tenants go back to their previous hues in both multitenancy islands. The
shared categorical palette stays available in islands.scss for islands
that want it, but nothing forces it.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

---------

Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>

* Islands: adopt the design-system palette, tighten multitenancy reservations

Swap every island color to the Qdrant design-system palette (Color.pdf):

- Tokens: neutrals from the Neutral ramp (800/600/50/200/400, dark
  100/500/900/800/700); accent stays Amaranth 500.
- Categoricals: Neon Blue 500, Purple 500, Cyan 800 (+ Cyan 100 tint),
  Amaranth 500 — replacing the old secondary blue/violet/teal.
- Tenant hues in both multitenancy islands: Neon Blue 500, Green 700,
  Warning 800, Amaranth 500.
- bit-depth bucket ramp and its shade() endpoints follow the Neon Blue
  ramp (200 -> 400 -> 800, C_HIGH 900).

Dark mode kept --bd-pos at the light-theme step, leaving it at 1.79:1
against the dark surface; it now lightens to Neon Blue 600 (2.82:1), the
mirror of the existing light-theme override.

Both multitenancy islands also relied on the default ratio="16 / 9",
which is the fallback PNG's aspect, not the island's — reserving 70-134px
of dead height between the diagram and its caption. Set the ratios to the
islands' measured aspects (12/5 and 15/7), as the quantization islands
already do.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

* Islands: make every quantization fill a real palette colour

Both quantization diagrams encoded magnitude continuously, which put most
cells on colours that are not in the design system:

- bit-depth's shade() lerped between two palette endpoints, so a float
  cell landed on e.g. rgb(145,141,213) — a point 35% along Neon Blue
  200 -> 900, and not a palette entry.
- asymmetric's cells carried a fractional fill-opacity, which composites
  against the page background and lands off-palette the same way.

Both now step through discrete palette entries instead. bit-depth gets a
five-step Neon Blue value ramp (--bd-shade-1..5, 200/300/500/700/900,
preserving the old endpoints); asymmetric gets four-step per-sign ramps
(--aq-pos-1..4 Neon Blue, --aq-neg-1..4 Amaranth) that top out at the
brand 500 a fully saturated cell already used. Dark theme runs both the
other way so a near-zero cell stays quiet against the dark surface.

var() is not valid in an SVG presentation attribute, so the fills move to
inline style. The histogram bands lose their 0.9 opacity for the same
reason.

Verified by walking every rendered SVG node's computed fill and stroke in
both themes: no opaque paint outside the palette remains. Alpha-based
effects that are not colour choices stay: the cell hairline
(--qi-cell-stroke, neutral at 30%/18%), the scatter error whiskers (0.5)
and the promotion placeholder label (0.7).

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

* Islands: add annotated palette preview screenshots

Light and dark renders of all four islands at 1200px, each diagram
followed by a strip naming every colour it paints — role, design-system
ramp and step, and hex.

The labels are generated, not written by hand: the preview page paints
each CSS custom property onto a probe element, reads the computed colour
back, and looks the hex up in a map parsed from the design system's
own colour sheet. A chip only renders a name if the pixel matches a real
palette entry, so these double as a record that nothing off-palette
survives in either theme.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

* Remove accidental island palette preview PNGs from repo root.

---------

Co-authored-by: generall <andrey@vasnetsov.com>
Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
Co-authored-by: qdrant-cloud-bot <111755117+qdrant-cloud-bot@users.noreply.github.com>
2026-09-13 22:42:38 +02:00
Andrey VasnetsovandClaude Opus 5 f04ccf787e Fail PRs that add images over 1MB (#2748)
qdrant-landing/static/ is copied verbatim by Hugo, so a full-resolution
camera JPEG is downloaded by every reader of the post. 178MB of such files
were added in the last 12 months and are still shipping; .git is now 2.4GB.

Checks only the files the PR touches, so it costs nothing on other PRs.
Escape hatch: the 'allow-large-images' label skips the job.

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-12 20:42:26 +02:00
Andrey VasnetsovandClaude Opus 5 df9a780cae Resize vsd25-post-event photos to 2000px (#2749)
Five of these were 7008x4672 straight off the camera, 20-25MB each. They are
embedded inline in the blog post and qdrant-landing/static/ is served verbatim,
so every reader of that post downloaded 110MB of photos.

Capped at 2000px / q82, which is well above any display size on the site:
121MB -> 11MB for the directory, no visible difference.

  mogrify -auto-orient -resize '2000x2000>' -quality 82 -strip *.jpg

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-12 20:40:15 +02:00
Meinaandmeinsta 3bb7c7bcd6 Revert "Merge pull request #2643 from qdrant/otel-tutorial" (#2747)
This reverts commit c341e98086, reversing
changes made to ad2283027.

Co-authored-by: meinsta <9779373+meinsta@users.noreply.github.com>
2026-09-12 09:48:05 +05:30
Meina c341e98086 Merge pull request #2643 from qdrant/otel-tutorial 2026-09-11 16:25:02 -07:00
clelia 89fe668bef fix: review 2026-09-11 19:55:28 +02:00
Meina ad2283027a Merge pull request #2710 from qdrant/feat/gpu-indexing-page
Add GPU Indexing landing page
2026-09-11 10:48:27 -07:00
Meina 482e19db55 Merge pull request #2711 from qdrant/feat/cloud-inference-page
Rebuild Cloud Inference landing page
2026-09-11 10:37:48 -07:00
meinstaandClaude Opus 5 809d3b12d9 Set the What's Included section to the 120px vertical padding in the frame
trean confirmed the number on #2710. Wider than the 64px the other sections
on the page use, so it stays as an explicit deviation rather than the shared
rhythm.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011sou7Nth6sUQ6CFbsxanQF
2026-09-11 10:37:21 -07:00
meinstaandClaude Opus 5 d51b6aa45e Address the review on the GPU Indexing page
- The hero's outlined button keeps a transparent fill instead of a solid
  off-white one, so only its text and border colours flip for the light hero.
- "Flip One Switch. Index Faster as You Write." gets a 64px bottom padding at
  lg. It was the only section on the page at 40px, which is what made the space
  around the migration banner read as tight.
- Every target="_blank" in the hero and the CTA banner now carries
  rel="noopener noreferrer", the convention used elsewhere in the theme.
  Copilot flagged the two new links; the two pre-existing CTA banner links had
  the same gap, so all five are fixed together.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011sou7Nth6sUQ6CFbsxanQF
2026-09-11 10:36:29 -07:00
meinsta 80d6ecf691 Fix icon mismatches and mobile gutter overflow on the GPU page
The Pricing and Multivector cross-link cards had each other's icon: the
two exported SVGs were saved under swapped filenames. The AWS mark sat in
a 32x30 box with artwork spanning only y 4..24, so it rendered small and
low beside the square line icons; the viewBox now tracks the content.

What You Get used gx-5, whose -24px row margin is wider than the
container's 12px padding, giving the page 8px of horizontal scroll at
375px. Scoped the gutter to lg and up, where the columns actually sit
side by side.

MKT-364
2026-09-11 10:36:29 -07:00
meinsta 9e26bc2b98 Match the mobile frame in the GPU hero
Below md the frame puts the availability checks above the buttons, left
aligns them, and runs both buttons full width. Desktop is unchanged.

MKT-364
2026-09-11 10:36:29 -07:00
meinsta 9d23ba8863 Use AWS brand orange for the AWS mark
The frame recolours the AWS logo to the grid's blue, which AWS's brand
guidelines do not allow. The compliant orange variant is already in the
frame as an unused layer.

MKT-364
2026-09-11 10:36:29 -07:00
meinsta d4219d3f1f Drop the write-path diagram, fix the GPU docs alias
The Diagram layer is switched off in the frame, so How It Works ships as
the header, two step cards and the callout, matching what the frame
renders.

running-with-GPU.md listed only the capital-GPU form of the
/documentation/guides/ alias, so the lowercase path the copy file links
404'd. Added it, matching the case pair the file already has for
/documentation/operations/.

MKT-364
2026-09-11 10:36:29 -07:00
meinsta 25f8e2b10c Apply copy review to GPU Indexing page
Hero eyebrow reverts to the copy file's "GPU Indexing", and the hero's
second CTA becomes View the Docs. The Quantization cross-link card gets
its own description back; the frame had carried over the GPU docs wording
from an earlier mock. Talk to Engineering moves to the footer CTA as a
third button, which cta-banner now supports via an optional textButton.

MKT-364
2026-09-11 10:36:29 -07:00
meinsta cf572f3e6c Add GPU Indexing landing page
New /gpu-indexing/ feature subpage built to the signed-off Figma frame
(GPU-Indexing-v2), following the Security page structure: hero, What You
Get, How It Works with the write-path diagram, What's Included, Resources,
FAQs, and the shared CTA banner.

Copy comes from the approved copy file attached to MKT-364. The migration
callout and the footer CTA reuse the existing pricing-banner and cta-banner
partials rather than adding new ones.

MKT-364
2026-09-11 10:36:29 -07:00
meinstaandClaude Opus 5 550b73b262 Add rel="noopener noreferrer" to the hero's external links
Same gap Copilot flagged on the GPU Indexing hero, which this page's hero
was copied from.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011sou7Nth6sUQ6CFbsxanQF
2026-09-11 10:35:44 -07:00
meinstaandClaude Opus 5 94bce2f8dc Address the Figma review on the Cloud Inference page
- Hero screenshot no longer bleeds below lg, so the whole console is visible
  on mobile instead of being cropped mid-panel (matches the qdrant-for-startups
  hero, where the bleed is a desktop-only treatment).
- "Follow the embedding model migration guide" drops link_dark, so it renders in
  the red accent rather than near-black.
- Managed Cloud column header gets a violet icon, matching the blue and teal
  variants used by the other two columns.
- FAQ background moves to $neutral-94, the same as the Approaches section above it.
- Approaches table drops the mobile-arrows modifier and falls back to the default
  tabs presentation on mobile.
- "Pick the Right Embedding Model, Or Bring Your Own" wraps to three lines and
  "From Raw Content to Search Results in Three Steps" to two.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011sou7Nth6sUQ6CFbsxanQF
2026-09-11 10:35:44 -07:00
meinstaandClaude Opus 5 8080089dd1 Emit the section-header mixins at root so per-section overrides win
Both mixins are included from inside `.cloud-inference-*`, so every selector
they generated compiled to `.block .block__x` and outranked the overrides
written below the include. The hero description's 24px bottom margin and the
h2 title size were both being silently dropped, which is why the hero buttons
sat flush against the description.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011sou7Nth6sUQ6CFbsxanQF
2026-09-11 10:35:44 -07:00
meinsta 2d45b20de0 Scope the wide row gutter to lg and up
gx-5 puts a -24px horizontal margin on the row, wider than the
container's 12px padding, so Why It Matters and What You Get pushed the
page sideways at 375px. The gutter only matters where the columns sit
side by side.

MKT-425
2026-09-11 10:35:44 -07:00
meinsta 3ffbf5f52e Load features-table.js on cloud-inference, bleed the hero image
The comparison table renders every value cell hidden until
features-table.js adds the mobile-active class, and that script was
loaded only on the security section. On mobile the table showed its
column tabs with three empty rows. Added cloud-inference to the include.

The hero screenshot now bleeds off the right edge at all widths, per the
frame, instead of only above lg.

MKT-425
2026-09-11 10:35:44 -07:00
meinsta 56e2431968 Shorten Cloud Inference footer CTA button label
Matches the frame and every other Start Free button on the site.

MKT-425
2026-09-11 10:35:20 -07:00
meinsta 0b2252b8c6 Rebuild Cloud Inference landing page
Rebuilds the existing /cloud-inference/ page against the signed-off Figma
frame (Inference LP): hero, Why It Matters, What You Get, How It Works,
Cloud Inference Approaches with the comparison table, FAQs, and the shared
CTA banner.

The slug and its nav entry are unchanged, so nothing is orphaned. The
previous hero, features, cluster, read-doc, get-started and FAQ sections
are replaced. Copy comes from the doc linked on MKT-425; the model-request
callout reuses the existing pricing-banner partial.

MKT-425
2026-09-11 10:35:17 -07:00
Tim Visée 0b76e21a26 Merge pull request #2740 from abdonpijpelink/vector-limit
docs: clarify multivector sub-vector size limit
2026-09-11 17:04:20 +02:00
Mohamed Arbi ea6b9b7bc8 Fix documentation wording (#2721)
* Fix documentation wording

* Apply maintainer wording for TurboQuant comparison
2026-09-11 16:27:34 +02:00
Abdon PijpelinkandClaude Sonnet 4.6 e01dfc2cc2 docs: clarify multivector sub-vector size limit
Each multivector field has a hard limit of rows * vector_size < 1,048,576
flattened float elements. This is not the same as the named-vector count,
which has no hard limit. The FAQ wording conflated the two, misleading
users of late-interaction models like ColBERT or ColPali variants.

Adds the size constraint and workarounds (pooling, chunking) in both the
FAQ and the Multivectors reference section.

Closes qdrant/qdrant#9408

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-09-11 13:47:55 +02:00
clelia 38732732b5 chore: direct annotations to the cloud UI 2026-09-11 11:47:22 +02:00
clelia 7977fb1e3c Merge branch 'clelia/slicing-filter-tutorial' of https://github.com/qdrant/landing_page into clelia/slicing-filter-tutorial 2026-09-11 11:05:59 +02:00
clelia 9529d7b866 chore: review feedback 2026-09-11 11:05:35 +02:00
Meina a33e49eb67 Merge pull request #2738 from qdrant/feat/nav-security-developers 2026-09-10 14:01:18 -07:00
meinsta 953cce2cc7 Give the Security page its own title, description, and keywords 2026-09-10 11:00:55 -07:00
meinsta 8d2fb613c3 Move the Security link from Products to Developers 2026-09-10 11:00:14 -07:00
Clelia (Astra) BertelliandDylan Couzon 5bdb3a3355 Update qdrant-landing/content/documentation/tutorials-search-engineering/slicing-filter.md
Co-authored-by: Dylan Couzon <dylan.couzon@qdrant.com>
2026-09-10 18:12:27 +02:00
Clelia (Astra) BertelliandDylan Couzon 26089c172a Update qdrant-landing/content/documentation/tutorials-search-engineering/slicing-filter.md
Co-authored-by: Dylan Couzon <dylan.couzon@qdrant.com>
2026-09-10 18:12:03 +02:00
István Zoltán Szabó 0d14144f68 Rephrase intro sentence. 2026-09-10 15:39:12 +02:00
István Zoltán Szabó 4031c520ac GitHub workflow. 2026-09-10 15:17:35 +02:00
István Zoltán Szabó f46e0d4770 Add first prompt, new CI check, and CSS. 2026-09-10 15:16:24 +02:00
István Zoltán Szabó 537d26ef70 Refactoring. 2026-09-10 13:06:00 +02:00
clelia 1965fdd0a9 chore: apply review comments 2026-09-10 12:48:24 +02:00
Abdon PijpelinkandKumar Shivendu e192aec0b0 Warn against using inline storage in the pinned/cached tiers (#2675)
* Warn against using inline storage in the pinned/cached tiers

* Update qdrant-landing/content/documentation/ops-optimization/optimize.md

Co-authored-by: Kumar Shivendu <kshivendu1@gmail.com>

* Update qdrant-landing/content/documentation/ops-configuration/memory-tiers.md

Co-authored-by: Kumar Shivendu <kshivendu1@gmail.com>

* Review feedback

---------

Co-authored-by: Kumar Shivendu <kshivendu1@gmail.com>
2026-09-10 12:40:41 +02:00
István Zoltán Szabó a537f52a44 Address feedback. 2026-09-10 10:56:16 +02:00
Lakhan Samani e4aab00a19 Merge pull request #2733 from qdrant/docs/private-cloud-audit-logging
Document Private Cloud audit logging in the main guides
2026-09-10 11:43:34 +05:30
clelia 3a7bcc0da7 feat: securing and exposing a hybrid cloud qdrant instance (auth, tls and ingress guide) 2026-09-09 16:48:33 +02:00
Tarun Jain 6ec807a54e docs: Add migrate from Azure AI Search reference (#2732)
* migrate from azure docs

* remove Gotchas sections
2026-09-09 18:06:25 +05:30
Lakhan Samani 8fb10402a9 Correct Helm scope claim and audit logging caveats
- Helm values do set fleet-wide database defaults (image, logLevel,
  storage performance); only per-cluster settings live on QdrantCluster
- trust_forwarded_headers lets clients spoof audit log IPs on a
  publicly reachable instance
- Operator drops the audit block silently below Qdrant v1.17.0
- Managing a Cluster is the single home for the config; Logging &
  Monitoring covers collection only
2026-09-09 17:57:12 +05:30
qdrant-cloud-bot 8564b7749b Document Private Cloud audit logging in the main guides
AuditConfig was only visible in the generated API reference. Call it out
in setup, Helm configuration, cluster management, logging, and the changelog
so operators can find and enable spec.config.audit.
2026-09-09 11:33:48 +00:00
kanungle 4107e36450 Merge pull request #2729 from qdrant/drop-module-5-dup-image
Beginner Course navigation and content polish
2026-09-08 20:07:41 -07:00
kanungleandClaude Opus 5 e982788a3d Link Managed Cloud to the Cloud docs in module 4
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-08 19:58:51 -07:00
kanungleandClaude Opus 5 a2059798d3 Order Qdrant Beginner Course first in the /course/ nav
The course had no weight, so Hugo sorted it after Essentials (10) and
Multi-Vector Search (20). Weight 5 puts it first without touching the
other two.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-08 19:51:46 -07:00
kanungleandClaude Opus 5 c940d632ab Give each module a Module Overview page and route the flow through it
Each module's drafted _index.md content, video included, moves whole onto a
Module Overview subpage at weight 1. That page is a plain link in the nav
submenu, so it opens on the first click with no JS involved.

_index.md becomes a signpost carrying the module title and the linked path,
and is marked hasOverviewPage so the lesson flow skips it: Complete Module N
now lands on the next module's Module Overview rather than its section page.
Signpost pages render no advance button, since they are not steps.

The flow change is gated on hasOverviewPage, which only the Beginner Course
sets, so Essentials and Multi-Vector Search are unchanged. No JS and no
sidebar template changes.

Also normalizes module 4's iframe from a youtu.be share URL to an embed URL;
YouTube refuses to frame the share form.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-08 19:38:16 -07:00