Beginners course module 4#2497
Conversation
Module 1-3 pages don't exist yet, so the syllabus links to them were 404ing the lychee internal link checker.
✅ Deploy Preview for condescending-goldwasser-91acf0 ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
kanungle
left a comment
There was a problem hiding this comment.
Looks pretty good. I left a few comments, some of which may take effort to address via other modules
| ## 1. The Layers of the Stack | ||
|
|
||
| Every vector search system, from a notebook prototype to a deployment serving millions of queries, is built from the same five layers. When something is slow, wrong, or expensive, the first diagnostic question is always the same: which layer is the problem in? | ||
|
|
|
|
||
| ### Key insight | ||
|
|
||
| Every design decision belongs to a layer. "Add a payload index" is an indexing decision. "Switch to a multilingual embedding model" is a knowledge decision. "Move to three nodes" is a distribution decision. Once you sort decisions into layers, intimidating architecture diagrams become checklists. |
|
|
||
| ### Question 4: What does the retrieval pipeline look like? | ||
|
|
||
| *Dense-only? Hybrid? Reranking?* |
There was a problem hiding this comment.
Reranking is never explained in this course. It should be in Module 2 or 3.
|
|
||
| ### A Special Case Worth Knowing: Scoping by User or Tenant | ||
|
|
||
| One filtering pattern deserves a call-out because you'll meet it in almost any multi-user product: **scoping every query to one user's (or one customer's) data.** The instinct is to create a collection per user. With many users, that becomes thousands or millions of collections, which is operationally unmanageable. The standard pattern instead: |
There was a problem hiding this comment.
point to further reading on multitenancy in docs
|
|
||
| Design the payload schema before you ingest, driven by one question: what will I need to filter on? Time, geography, identity, permissions, and status flags are the usual suspects. Adding a payload field later is easy. Discovering at query time that you never stored `language` is not. | ||
|
|
||
| ## 4. The Production RAG Pipeline |
There was a problem hiding this comment.
The concept of RAG is never overviewed in this course
kanungle
left a comment
There was a problem hiding this comment.
Content here is strong: the five-questions worked example is exactly the judgment-teaching we want, and the filtering section is the best treatment of filtered traversal we have in any course. Fixes before it ships:
- The Question 4 code sample crashes.
models.Range(gte="2026-07-01T00:00:00Z")throwsValidationError;Rangeonly takes floats. For datetime fields it'smodels.DatetimeRange(gte="2026-07-01T00:00:00Z"). Please run every snippet in the module before we ship, this is the flagship example. - "retrieving relevant passages from a vector database" (Section 4) → "vector search engine". Hard rule. Same fix in the course
_index.md("No prior experience with Qdrant or vector databases required"). - Diagrams are off-palette. layers.png and deployment.png use colors from outside the Qdrant color palette, and the type doesn't match our diagram system. Rebuild both from the Docs/Diagrams Figma component library using the Qdrant palette.
- This PR carries
_index.mdand module-0 files owned by #2492. Please remove them so this PR only addsmodule-4/plus its two images; same request going out on every module PR. The syllabus also needs Module 4 and 5 entries in #2492. - Multitenancy is linked to two different URLs (Section 3 vs References). Pick one canonical page, and make all internal links relative paths rather than absolute
https://qdrant.tech/.... - Ending: if the theme's next-module button renders on the preview, drop the "End of Module 4. Continue to Module 5" sentence; if it doesn't render, that's the bug to fix.
- Title Case: "Key Insight" (three occurrences), "Rule of Thumb".
Noting for launch, not blocking: the module video placeholder at the top will need the real video before the course goes live.
One structure question: Essentials splits each day into per-lesson pages with a short _index.md overview; this module is one 296-line page. Was single-page intentional? If not, splitting sections 1–5 into lesson files like essentials/day-4/ gets us per-lesson videos and cleaner sidebar nav.
PREVIEW
This PR is still work in progress. Formatting and images will be added soon