The image is referenced as /courses/beginners/module-5/four-stage.png,
which resolves to the static/ copy. The content-bundle copy was an
unreferenced 247KB duplicate.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Path moved to /documentation/tutorials-basics/ and the page is the
Cohere Embed 4.0 tutorial, not LlamaIndex.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
* otel tutorial: fix the restore timeout, source the latency claim, close the coverage gaps
Review fixes for #2643, measured against a 1.17.1 Cloud cluster.
restore.py failed as written. recover_snapshot blocks until the restore
completes, which outlives the client's default timeout, so the reader got
a stack trace while the restore kept running server-side. Because the
collection_exists guard then no-ops on a re-run, it looked like the script
had never worked. timeout=600 on the client.
Step 7 asked the reader to correlate the slowest span with a cluster
signal, but ranked spans by client wall clock. On this collection the two
query shapes sit 1% apart at the client while the database does 26% more
work, so the slowest span is usually a network outlier on the cheaper
query and the correlation exercise had nothing to find. Added the measured
split (2.71 ms inside Qdrant against a 312.6 ms client median, read from
rest_responses_duration_seconds over 20 requests per shape) and pointed
readers at the histogram for ranking.
Also closes four gaps against the observability docs audit: the layer
boundary between database metrics and application tracing, the self-hosted
scrape path, the Grafana dashboard import with its envoy_* panel trap, and
the separation of scrape targets from alerting. Marked the vendor endpoint
table unverified, noted that per_collection=true works before its
documented 1.18, and added what the page was tested against.
* verified-against: drop the claim about a Kubernetes path, the page has none
* otel tutorial: run the collector in Kubernetes
Compose on a laptop is the only deployment path the page had, but the
accounts asking for this run their monitoring inside Kubernetes, and that
is where the setup stalls. Three sections, ordered by what they assume.
Plain manifests build the config map from the otelcol-config.yaml written
in Step 2 rather than restating the scrape jobs, so there is one copy of
the configuration on the page. Namespace, secret, deployment, service,
then the log check and the two-scrape output that says both endpoints are
working. Verified from a pod in kind v1.35.0 against a live 1.17.1 Cloud
cluster, bearer auth from the mounted secret, no scrape errors.
The operator section carries the OpenTelemetryCollector skeleton with the
config block pointing back at Step 2 instead of repeating it, plus the
apiVersion trap: v1beta1 takes config as a structured field and v1alpha1
takes it as a string. The CR wrapper itself is untested here and the
verified-against block says so.
The Prometheus section sends anyone running kube-prometheus-stack to the
existing managed-cloud-prometheus page, since that path needs no collector
at all. It also records the trap that a single ScrapeConfig against
/sys_metrics drops collection_running_optimizations, which is the first
signal to check when queries slow down.
Verified-against now names what is tested and what is not: the kind run is
tested, the self-hosted scrape, the operator resource and the vendor
endpoint rows are not.
* next: drop the external repo link, the other tutorials link only qdrant repos
---------
Co-authored-by: meinsta <9779373+meinsta@users.noreply.github.com>
* Modernize Day 4 Large-Scale Data Ingestion lesson
The upload example on the published page cannot run: upload_collection has
no `points` parameter, so it raises TypeError before sending anything. Its
`show_progress` argument is also swallowed by **kwargs and does nothing.
The example numbered point IDs from zero for every chunk. Because writes are
idempotent, each chunk overwrote the one before it. Verified against Qdrant
Cloud 1.19.0: three chunks of 100 points left 100 points in the collection,
with no error raised.
Other corrections:
- recreate_collection is deprecated and destroys the collection on re-run.
Replaced with collection_exists + create_collection.
- on_disk, on_disk_payload and always_ram were replaced by the per-structure
`memory` parameter in v1.19. The docs list the old flags under Legacy
Settings, and `pinned` has no equivalent among them.
- Batch-size guidance recommended up to 10,000 points per request. Measured
on real data, requests of 4,000 and above fail outright with a connection
reset rather than degrading.
- Two anchors did not resolve: #hnsw-config appears nowhere else in this
repo, and #on-disk-storage does not exist on the storage page.
- #batch-update pointed at batching mixed operation types, not batched
uploads. Changed to #upload-points.
- max_segment_size and indexing_threshold are measured in kilobytes, which
the lesson did not say.
Adds a diagram covering the choice between upsert, upload_points and
upload_collection, and links idempotence and inference, which the lesson did
not previously reference.
Structure, headings and section order follow the published page. Both code
blocks were executed against Qdrant Cloud 1.19.0 with qdrant-client 1.19.0
and the stored collection config was read back and checked against the prose.
* Address review: restore client setup, rework diagram
Restore the imports and QdrantClient construction ahead of the
create_collection call, matching the opening of the code blocks in
what-is-quantization.md, rescoring-oversampling-indexing.md and
pitstop-project.md.
Diagram: drop the in-image title, raise type from 11-13px to 15-17px,
and move the description out of the SVG into body text below the image.
The explanation that previously sat above the image now sits below it,
so it is not duplicated.
* Address review: drop prefer_grpc, match callout format
Remove prefer_grpc from the client constructor so it matches the other
course modules. It stays in the parameter list as a suggestion.
Collapse the two closing callouts to the single-line link format used
across Days 3, 4 and 5, rather than multi-line boxes with their own
headings.
* Remove callout containers and red Note labels
Convert the six blockquote callouts to plain body text and drop the
red "Note" and "Best Practice" labels. Wording and links are unchanged.
* Restore Note callouts, drop the LAION link
Put back the three Note callouts higher up the page, which match the
style used in the other course modules. The three containers flagged in
review stay as plain text, and the LAION benchmark link is removed.
* Restore the LAION link as plain text
The review asked for the containers to be removed, not the content, so
put the link back without its box.
* Remove all callout boxes and red labels
Review asked for these throughout the page, not only the three flagged
in the screenshot. Wording and links are unchanged.
* Point the lesson at the re-recorded video
* add quantization page
* link fix
* small content fixes
* Restore used texture.png; remove unused chart-background-texture.png
texture.png is referenced by _configuration.scss (desktop banner overlay3)
and was deleted by mistake. chart-background-texture.png is unreferenced
anywhere in the source, so remove that one instead.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
---------
Co-authored-by: trean <trean.mi@gmail.com>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Both labels were the last places calling the product a vector database.
The page they point at is already titled Qdrant High-Performance Vector
Search Engine.
Label text only. The URL stays /qdrant-vector-database/ so nothing
redirects and no inbound link breaks.
The page has been live at /security/ but was not reachable from the nav.
Sits after Qdrant Cloud Inference so the Beta and Coming soon items stay
last. menu.md drives both the desktop dropdown and the mobile drawer.
img/menu/security.svg is derived from the theme's existing
icons/outline/shield-check.svg, already 16x16 in the menu's stroke
colour, with the weight nudged to 1.5 to match serverless.svg.