mirror of
https://github.com/qdrant/landing_page.git
synced 2026-09-26 14:38:30 +02:00
0fccb0cac156a1334e76c405cfb61095ff3b8553
15
Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
0fccb0cac1 |
Publish each page's markdown at /path.md as well as /path/index.md (#2743)
* feat(build): publish each page's markdown at /path.md as well as /path/index.md Hugo writes the Markdown output format beside the HTML it belongs to, so a page at /articles/foo/ is published at /articles/foo/index.md. That is correct and it stays: it is what the llms.txt convention prescribes for directory-style URLs, it is the form /llms.txt already advertises for 670 pages, and it is the target of the <link rel="alternate" type="text/markdown"> we emit in every page head. What it is not is guessable. Every other documentation site I compared exposes a page's markdown by swapping the extension, so a client holding only a URL can construct /articles/foo.md directly instead of first fetching the HTML to read the alternate link: /articles/immutable-data-structures.md 404 -> 200 text/markdown /articles/immutable-data-structures/index.md 200 200 (unchanged) So publish both. A post-build step copies every public/**/index.md to public/**.md; the originals are untouched, so no published URL changes. Netlify already serves .md as text/markdown, and the files are small: 7.6 MB against a 1.4 GB build, 0.5%. Deliberately a build step rather than a Netlify redirect. A splat has to be terminal, so /articles/*.md is not a pattern Netlify accepts, and a rule that cannot be verified locally is worse than a copy that can. Adds npm run md:test, which builds the site, runs the script over the output and checks all 789 aliases exist and match their source byte for byte, that the canonical index.md and index.html are untouched, that nothing is written outside the publish directory, and that a second run overwrites nothing. Verified the tests fail when the script is stubbed out. The test deletes its build directory on exit. A build is ~1.4 GB, and a suite that leaves temp directories behind fills a disk faster than anyone notices. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * test(md): cut the alias tests down, and keep master's npm scripts Review: the tests were redundant. Two of the four asserted what cp does, and all four needed a full ~1.4 GB Hugo build to say it. Replaced with two tests over a synthetic directory, covering the only two things the script decides: skip the site root, never overwrite an existing file. 87 lines to 39, and the run drops from a full site build to 0.26s. package.json: this branch predates the charts work, so its scripts block replaced master's. Merging as-is would have silently deleted viz:test and viz:charts. Now keeps both and adds md:test. Also trims the script's comment header from 19 lines to 8. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> * test(md): drop the npm script, run the test file directly package.json is the site's manifest; a runner alias for one shell script does not belong in it. The test runs as: node --test test/markdown/aliases.test.mjs package.json is now untouched by this branch, which also removes the risk of the merge dropping master's viz scripts. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com> |
||
|
|
6e4e414af5 |
Introduce interactive SVG charts (#2672)
7 charts across 5 posts, in 3 kinds: two-panel columns, grouped columns and faceted lines. Replaces 1,024 KB of raster screenshots with 71 KB of inline SVG, hover and keyboard focus included. Charts are generated from CSVs and committed, so a changed number shows up as a diff in review. Pages also build as Markdown, where the shortcode emits the source data as a table instead of the raw SVG. |
||
|
|
eaf34e82f4 |
Link the two Dust case studies to each other (#2681)
* Link the two Dust case studies to each other There are two Dust stories 15 months apart, and neither mentioned the other. They are also reached from different places: the customers catalog points at the 2025 one, while a Read Story card on the customers page and the RAG use-cases page point at the 2024 one. A reader arriving at either had no way to know the other existed. The 2024 article now points forward from its Outlook section, which already looks ahead to what Dust would build next. The 2025 article points back before its first section, for anyone who wants the origin story. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * Move the forward link to the top of the 2024 Dust story At the end, in the Outlook section, it only reached readers who had already finished the older story. Anyone who wanted the current numbers needed it before they started reading, not after. It now sits above the opening paragraph and is reframed to say which story this is, rather than reading as a continuation of the outlook. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * Update case study introduction for clarity --------- Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com> |
||
|
|
b2fb2ce337 |
Fix a broken paragraph in the Dust case study, and the card's screen reader output (#2680)
Three defects found auditing the merged quote work. The Dust card at "solution of choice" had no blank line before or after it, so it rendered inside the paragraph. A <figure> implicitly closes a <p>, which left the following 60 words as a bare text node outside any paragraph: 16px instead of 18px, tighter leading, and no bottom margin. This is live on qdrant.tech today. Adding the blank lines restores it; the file's words are unchanged, only whitespace. The card also hid the company from screen readers. The logo carried alt="", and the company name is display:none whenever a logo is present, so on desktop a screen reader got the name and role and no company at all. The logo now uses the company as its alt text, which is what it conveys. The avatar becomes alt="" for the opposite reason - the name sits right beside it, so repeating it just made the name announce twice. Also restores the trailing newline on case-study-bayer.md. Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com> |
||
|
|
222226ba42 |
Apply the quote component to more case studies, and add a script to find the rest (#2648)
* Apply the quote component to OpenTable, &AI and Dust Seven quotes, all verbatim. Only quotes that say something about Qdrant were lifted; setup and problem-statement quotes stay in the prose they were written for. OpenTable has three different speakers, so each card names its own. Two &AI quotes were split across "said Turner" in the original. Each card carries only the contiguous half about Qdrant, and the setup fragment stays in the prose - joining the halves would have meant editing his words, even though every word was his. Dust carried the same quote twice: once inside the alt text of Dust-Quote.jpg and again as prose below it. The image is gone and the words are a card, so the quote is now text rather than pixels and is no longer duplicated. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * Add a quote-finding script, and promote two lead quotes Earlier passes over these files missed quotes because the search required an attribution verb near the quotation. Anything attributed on its own line with a dash, standing alone as an italic pull quote, sitting in a blockquote, or buried in an image's alt text was never surfaced. automation/find-customer-quotes.py reports all of those forms, and deliberately over-captures: it flags any quoted run of 25 characters or more outside front matter, code fences and existing shortcodes. A false positive costs a moment's reading; a missed quote ships. Across the 52 case studies it finds 201 quotes still in prose. Also promotes the strongest quote in two files to a lead card, taking the logo with it so it stays on the first card on the page: - opentable: "Creating a Qdrant Cloud cluster was one of the easiest parts of the project. It just worked." - and-ai: "With Qdrant, we scaled to a billion vectors and still respond in sub-second latency." Dust is left alone. Its one card follows a sentence written to introduce it, so moving it would orphan that sentence. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * Move the OpenTable lead quote to one that carries its own context "Creating a Qdrant Cloud cluster was one of the easiest parts of the project" was sitting above every line of prose in the article. It only lands once you know there was a project and that it had hard parts, so as an opener it read as a punchline with no setup. It goes back after "Third, Qdrant Cloud provided a deployment path that was simpler than self-hosting", which is the context it was written against. The article already had a Lombardo quote near the top explaining why OpenTable built Concierge at all. That one needs nothing before it, and it already sat after the opening paragraph, so it becomes the lead card without being moved anywhere. A lead quote has to make sense to someone who has read only the title, and it belongs after the opening paragraph rather than above it. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * Show the customer logo on every quote card The logo used to sit only on the first card in each article, so later quotes carried no visual marker of who was speaking beyond the name and role. Adds it to the remaining 18 cards: 10 in Bayer, 3 each in OpenTable and Sprinklr, 2 in &AI. Note this hides the company name on those cards, since the component drops it when a logo is present. The name still appears on narrow screens, where the logo is hidden. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * Convert the quotes still left in prose in &AI and Dust Working through what find-customer-quotes.py reported rather than stopping at the first few. &AI goes from 3 cards to 8, Dust from 1 to 4. Where the original splits a quotation across "said Turner", the card takes only the contiguous half that says something about Qdrant and the setup half stays in the prose, so nothing is joined and no words change. What is left in those two files is deliberate: the setup halves, and Polu's remarks about LLMs and fine-tuning in general, which are context rather than anything about Qdrant. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * Drop the quote-finding script from the branch Keeping it out of the repo. It was only ever scaffolding for this conversion work, not something the site needs to build. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * Spend the avatar and logo only on the quotes worth marking out Putting them on every card spent them on none - the face and the logo are what make a card read as a headline, so they only work if most cards go without. Bayer goes back to how it was on master: two marked out of twelve. Each of the others keeps them on the one or two quotes making the strongest claim: - opentable: the lead, and "Creating a Qdrant Cloud cluster was one of the easiest parts of the project. It just worked." - and-ai: the lead, and "Qdrant was the only one that handled that load out of the box." - dust: "we were able to reduce our cost by 2x", the one with a number. - sprinklr: "Retrieval is the foundation of all our AI tasks." Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * Dust and Sprinklr fixes from review Two quotes go back into the prose they came from. "The early setup worked out of the box nicely" sits inside a numbered list item, which is the in-bullet case that should have been left alone. "Qdrant is a very fast and high quality retrieval system" does not say much the surrounding benchmark numbers have not already said. Both restored exactly. Deletes Dust-Quote.jpg, now that nothing references it, and bolds "reduce our cost by 2x" in the quote that reports it. Embeds the Vector Space Talk with Stanislas Polu after the paragraph linking to it. Adds Raghav Sonavane's photo, supplied by the team, cropped to head and shoulders like the other avatars. It goes on the one Sprinklr quote that carries the logo. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * Rejoin the &AI quotes that were split across an attribution tag Each of these is one statement in the original, interrupted only by "said Turner". I had put the second half in the card and left the first stranded in the prose, so the card carried half a thought and the setup sat above it going nowhere. The tag goes, the comma that introduced it becomes a period, and the two halves join. No words change - checked that both halves still appear verbatim in the original either side of the join. Affects five quotes: retrieval over generation, the scale benchmark, the opinionated docs, multi-tenancy, and the billion-dollar case. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com> |
||
|
|
eff51a142b |
Add a customer quote component with customer avatar and logo (#2644)
* Add a customer quote component and apply it to three case studies
Customer quotes in case studies are written four different ways -
`> "quote" - Name, Title`, italic text with an italic attribution line,
quoted sentences buried mid-paragraph, or nothing at all. None of them
produce a visually distinct, attributed quote.
The root cause is that the six existing testimonial partials all read
`.Page.Params`, so they only work on landing pages driven by data files.
A case study written in markdown has no way to reach any of them, and
there was no quote shortcode, so authors fell back to raw markdown.
Add a `quote` shortcode with a matching stylesheet. Only `text` and
`name` carry the quote; `role`, `company`, `avatar`, `logo` and
`featured` are all optional and degrade gracefully.
Apply it to one case study per broken convention:
- bayer: attribution glued onto the end of the quoted sentence,
where the hyphen before the name collides with the one
inside the job title. Converts 3 of 12; the rest are a
mechanical repeat.
- tripadvisor: quote sat at line 57 of 64. Promoted to the lead quote
and trimmed to a contiguous excerpt, with an ellipsis
marking the omitted middle. Moved, not duplicated.
- sprinklr: quote buried mid-paragraph. No avatar exists for this
speaker, which exercises the graceful degradation.
The stylesheet nests its descendants so every rule carries two classes
of specificity. The article stylesheet targets bare `blockquote`, `p`
and `figcaption` under `.qdrant-post__content`, which otherwise wins
over a single-class selector and re-applies its own card and margins.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
* Convert Bayer's remaining nine quotes to the quote component
Finishes the conversion started in the previous commit: all twelve quotes
in the article now use the shortcode, and no bare blockquotes remain.
All twelve come from the same speaker with an identical attribution
suffix, so this was a mechanical pass. The repeated attribution is worth
a look in review - twelve cards each carrying the same face, name, role
and Bayer logo may be heavier than it needs to be when the speaker never
changes.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
* Slim the repeated attributions in the Bayer case study
Every quote in the article is from the same speaker, so twelve cards each
carrying the same face and Bayer logo was heavier than it needed to be.
The lead quote keeps the full treatment. The other eleven keep name and
role, which still identifies the speaker for a reader who lands partway
down the page, but drops the repeated avatar and logo.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
* Add the Sprinklr logo to the Sprinklr quote
Fills the empty right-hand side of the card. No headshot exists for this
speaker yet, so the avatar slot stays empty until one is supplied.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
* Restore both customer quotes to their published wording
The Tripadvisor quote had a sentence cut out of it and replaced with an
ellipsis, and the Sprinklr quote had its trailing comma changed to a
period once it stood on its own. Neither was ours to decide. Both now
match the published text exactly.
Audited all 14 quotes on this branch against master, comparing words and
punctuation. The twelve Bayer quotes were already verbatim.
Two changes to attribution remain, since they are formatting rather than
the speaker's words, but are worth a look in review:
- Bayer's title renders as "Senior Director AI/ML, Precision Medicine &
Insights" instead of the original hyphen, which was what collided with
the dash before his name.
- Tripadvisor's attribution used to link to Rahul Todkar's LinkedIn. The
component has no link support, so that link is now only in the body.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
* Drop the trailing comma from the Sprinklr quote
The comma joined the quotation to "explains Sonavane" in the original
sentence. Standing on its own in a block, it reads as an unfinished
sentence, so the quote ends in a period.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
* Restore the two attribution details lost in the conversion
Add a `name_url` param so a speaker's name can link to their profile, and
use it to restore the link to Rahul Todkar's LinkedIn that the original
Tripadvisor attribution carried.
Put back the hyphen inside Hooman Sedghamiz's job title. It was changed
to a comma because the original line ran two hyphens together - one
separating the quote from the speaker, one inside the title itself - and
they were indistinguishable. The component gives the speaker its own row,
so the first hyphen is gone and the one in the title reads clearly again.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
* Lift the remaining standalone Sprinklr quotes into the component
Four more were buried in prose: one closing a paragraph, one opening
another, one mid-paragraph, and one sitting as its own line. All are now
quote cards, and the logo moved to whichever card comes first on the page.
Words are verbatim. The only change is the trailing comma that joined each
quote to "says Sonavane", which belongs to our sentence rather than to the
speaker and goes with it.
Three quotes inside the "Why Qdrant?" bullet list are deliberately left
alone - lifting those would restructure the list, which is a layout call.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
* Put the "key challenge" quote back into the prose
It states the problem Sprinklr had, not anything about Qdrant, so on its
own in a card it reads as context-free. It did its job as the setup
sentence it was written to be. Restored exactly as published, original
comma included.
Sprinklr keeps the four quotes that stand on their own.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
* Reformat the benchmark code block in the Sprinklr case study
Every record was split across two lines with a blank line between them and
nothing was indented, so the block rendered as a wall of fragments. Each
record is now one indented line.
The fence was tagged json while the contents are Python - a `data = [...]`
assignment with single-quoted keys - so nothing was highlighted. Corrected
to python.
The records were parsed and re-emitted rather than retyped, and the values
were compared before and after, so the data is unchanged.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
* Stop repeating the company name next to its logo
A card showing the Bayer logo read "Senior Director AI/ML - Precision
Medicine & Insights, Bayer" right beside it. The logo already says which
company it is.
The name is hidden with CSS rather than dropped from the template, because
the logo is hidden below the md breakpoint and the company name has to
carry that job again on narrow screens.
Cards with no logo are unchanged and still name the company.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
* Give the two strongest Bayer quotes the visual weight
All twelve quotes stay as cards. The article was written with twelve pull
quotes and that structure is the author's, not ours to rewrite. What
changes is which ones carry the face and logo, and where two of them sit.
The omnimodal quote becomes the lead. It is the strongest thing in the
piece - a senior director at a 116,000 person company saying vector
databases outgrew RAG, and that "no one had" an omnimodal search engine
until this one. We could not make that claim ourselves.
The 20% efficiency quote gains the face and logo where it already sits. It
is the only quantified outcome spoken rather than reported, and a number
is worth more in the customer's voice than in ours.
The grounding quote that used to lead moves into the agents section, after
the paragraph introducing deep agents - "if you remove the search from the
agent" is what that section is about. It becomes a light card.
Also restores the blank line after seven cards that were glued to the
paragraph following them.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
* Highlight the grounding quote instead of the 20% one
"20% efficiency" has no denominator - efficiency of what, measured how -
and it ends on "it wouldn't be possible without the components", which
does not say which components. It stays as a card, just not a highlighted
one.
The grounding quote takes the second face and logo. "If you remove the
search from the agent, the results go back to two years ago" is the most
concrete line in the piece, and it complements the lead rather than
repeating it: one says what Qdrant became, the other what breaks without
it.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
* Set the lead quote at the same size as the others
The lead quote was 24px against 20px elsewhere, which made Tripadvisor's
long quote a wall of text. Position, the face and the logo already mark it
out. Drops the mobile override that only existed to scale the 24px back
down.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
* Apply the designer's type settings to the quote text
font-size 1.125rem, line-height 1.65rem, margin-bottom 1.5rem.
The margin needed the rule nested a level deeper to take effect. The
article stylesheet sets `blockquote p:last-child { margin-bottom: 0 }`,
which outranked the flat selector, so the spacing was being dropped.
Removes the narrow-screen override, which set the same 18px the designer
asked for and differed only in line-height.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
||
|
|
0218211790 |
Clarify shard_number semantics in multitenancy article (#2638)
Under custom sharding, shard_number is the number of physical shards per shard key, not the number of shard keys. The example used shard_number=2 alongside two create_shard_key calls, which reads as if the value had to match the number of keys. Set it to 1, matching the canonical create-collection/with-custom-sharding snippet, and note what the parameter actually controls. Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com> |
||
|
|
020024aea2 |
Merge pull request #1865 from qdrant/disable-quantization-guide
Add snippets to disable quantization in guide |
||
|
|
f7368f0df8 | Add more snippets | ||
|
|
3b60554c4f | Add snippets to disable quantization in guide | ||
|
|
18b8be4ed2 |
Merge pull request #1851 from qdrant/distributed-deploy-custom-shards
Add dedicated section for creating custom shards in distributed deployment guide |
||
|
|
f94c78b93a | fix API ref link | ||
|
|
95a331e803 | Apply suggestions | ||
|
|
0e9f951738 | Add dedicated section for creating custom shards in distributed deployment guide | ||
|
|
80f2b6f978 |
feat: Update benchmarks (#386)
* feat: Update benchmarks * fix: Improve blog * feat: Add result files with 1 and 100 parallel clients * fix: Add elasticsearch benchmark numbers from dbpedia 1M openai embeddings * feat: Make mean time (latency) the default metric for the 2nd plot * feat: Improve conclusions based on es results * fix: Make charts work on changing dataset * fix: Typo in table * feat: Update results with quantization * fix: Show a single graph to keep things simple * fix: Improve words * review fixes * add link to open-source * feat: Improve units to make results more readable * fix: Small grammatical mistake * fix: Make search threads value constant based on plot metric * feat: Make dataset num vectors more readable * fix: Spacing in table * feat: Add results from the latest Redis benchmarks * feat: Update benchmarks page * feat: Update date and some of the points * feat: Update benchmarks and content * chores: Improve observations * feat: Improve observations and put it after the graph --------- Co-authored-by: generall <andrey@vasnetsov.com> |