Releases: mukoubuchi/vector-search-hands-on
Release list
v1.7.0
Note
Documentation-site release. The participant packages are identical to v1.6.0 — there is no need to redistribute the zips.
Highlights
Hovering any heading now gives one consistent cue: the title slides gently to the right. Step titles — which previously stayed put and popped up a floating shadow box instead — now join in, and the shadow box is gone everywhere.
Step titles slide like every other heading
- Hovering a step title now shifts it right, matching h1–h4 headings across the site.
- The numbered circle stays put on the rail while the title slides, so the timeline never wobbles.
No more hover shadow box
- The drop shadow on hovered h4 headings is removed. They now slide like the rest instead of appearing to float.
- Dead styling cleaned up. The h4 background gradient referenced a CSS variable that was never defined, so it had never rendered — it is now deleted outright.
See it live: https://mukoubuchi.github.io/vector-search-hands-on/
Full Changelog: v1.6.0...v1.7.0
v1.6.0
Note
Documentation-site release. The participant packages are identical to v1.5.0 — there is no need to redistribute the zips.
Highlights
The step-by-step sections now read as a vertical numbered timeline: a continuous rail runs down the left margin with a numbered circle at each step, making the order of operations obvious at a glance.
Numbered step rail
Consecutive "Step N" headings are grouped into a vertical rail — a continuous line down the left margin with a numbered circle at each step. The "Step N:" prefix moves into the circle so the heading reads as a clean title, and the number is taken from the heading itself, so it stays correct wherever the source numbering is split across other sections (Part 3) or restarts per feature (Part 2). The rail runs through each step's content to the end of its section.
Sub-headings and nesting
- Only a step's own title is circled. Regular sub-headings inside a step keep their normal styling — no stray empty circles.
- Nested steps get their own rail. On the rare occasion a step contains its own deeper steps, they nest with a smaller circle per depth and are numbered from their own headings.
- Works identically on the English and Japanese sites ("ステップ N").
See it live: https://mukoubuchi.github.io/vector-search-hands-on/
Full Changelog: v1.5.0...v1.6.0
v1.5.0
Note
Documentation-site release. The participant packages are identical to v1.4.0 — there is no need to redistribute the zips.
Highlights
The docs site now loads zero external resources at runtime, the right-hand table of contents gains a reading-position indicator, and the Mac/Windows code tabs and home page get visual polish and fixes.
Table-of-contents reading indicator
A vertical rail on the right-hand TOC highlights every section currently on screen — at all heading levels — and tints those entries to match the bar, auto-scrolling to keep them in view. Headings nested inside an admonition are treated as aside content: they are kept out of the TOC, and the enclosing section stays highlighted while you read them.
Content tabs and home page
- Mac/Windows code tabs now mark the active tab with a background highlight instead of an underline that collided with the scrollbar; hovering an inactive tab slides in an underline aligned to the strip separator.
- Home page: the "Step-by-step learning path" entry was rendering outside its admonition box — fixed; the lone "Vector Search Builder mode" entry no longer carries a needless "1." (EN/JA).
- Part 2: shortened the re-insert confirmation note (EN/JA).
Fully offline docs site
No runtime external dependencies. Heading section icons are now embedded SVG masks (not an icon font), the Mermaid runtime for the Part 1 diagrams is vendored locally (10.9.6, MIT), and web fonts are disabled in favor of system fonts — the site renders fully on air-gapped or locked-down networks with no CDN fetches.
See it live: https://mukoubuchi.github.io/vector-search-hands-on/
Full Changelog: v1.4.0...v1.5.0
v1.4.0
Highlights
Maintenance release for the documentation site and configuration: task checkboxes now persist across reloads, Part 2 documents the re-insert confirmation prompt, and the docs pipeline and configs shed dead weight.
Docs site fixes
- Task list checkboxes now persist across reloads: the script selected the surrounding label instead of the checkbox input, so states were saved as
"undefined"and never restored - Part 2 documents the drop-confirmation prompt (EN/JA): re-inserting sample data after the schema change asks
Drop and recreate this collection? [y/N]— answery, or runpython insert_sample_data.py --yes - The language switcher derives the GitHub Pages project base from the script URL instead of a hardcoded repository name, so renames and forks keep working
Leaner configs
- Removed the runtime Font Awesome CSS/JS loads (the docs use only build-time mkdocs-material SVG icons), along with
docs/overridesand thecustom_dirsetting - Removed no-op theme features (
content.code.annotation,i18n) and five unused markdown extensions; the built pages were verified identical before/after - CI and the Pages deploy now install only the three pinned MkDocs packages (dropped unused
mkdocs-glightboxand redundantbabel/mkdocs-material-extensions)
Pipeline and docs accuracy
- The Pages deploy builds with
--strict, so anything CI would reject is never deployed either - Instructor troubleshooting: container checks use
docker compose ps(the documentedmilvus-standalonename never matched), and a new section covers recovering a lostsetup/instructor/.envafter password rotation - The preparation docs no longer mention marshmallow (pymilvus 2.6 no longer installs it)
DEFAULT_COLLECTION_NAMEis nowproductsinstead of the Building Blocks leftoverknowledge_base(every documented path still sets a uniqueCOLLECTION_NAMEexplicitly)
Full Changelog: v1.3.0...v1.4.0
v1.3.0
Highlights
Maintenance release: the participant zips are now distributed exclusively as release assets, the documented Python requirement matches the pinned dependencies (3.10+), and the automation around dependencies and testing has been tightened.
Distribution
- The participant zips are no longer committed to the repository: download them from the release assets (attached automatically on every release) or build them locally with
setup/instructor/build-participant-zips.sh - Added the Apache-2.0 LICENSE
Python requirement
- The docs said "Python 3.8 or higher", but the pinned dependencies (torch 2.12, transformers 5.11, sentence-transformers 5.5, FastAPI 0.136) require 3.10+; the preparation docs (EN/JA), instructor guide, and README now say so
common.pyfails fast with a clear bilingual message on Python < 3.10, before the third-party imports
Automation
- Dependabot: monthly updates for pip (pymilvus majors held to match the Milvus server), GitHub Actions, the docker-compose stack (etcd/MinIO follow the Milvus image), and the
mkdocs.Dockerfilebase image - E2E smoke test runs automatically when the runtime stack changes, plus a monthly scheduled health check; CI and E2E cancel superseded runs
- Status badges in the README
Docs and cleanup
- New IBM Cloud Code Engine delivery guide (documentation hosting is proven; Milvus hosting is documented as experimental), with Colima/Podman listed first as the recommended container runtimes
- Removed the non-functional
docs/.mkdocsignoreand ~100 lines of unused shell helpers - Corrected the embedding model download size (460 MB, not 200 MB)
- The demo app reports a dropped collection clearly instead of retrying into an error; the zip build script creates its output directory when needed
Full Changelog: v1.2.0...v1.3.0
v1.2.0
Highlights
This release upgrades the Milvus stack to 2.6, automates credential management, and adds end-to-end test coverage.
⚠️ Breaking change for instructors: Milvus 2.6 cannot read 2.3-era volumes. Before starting the upgraded environment, reset the volumes (sample data can simply be re-inserted):cd setup/instructor && docker compose --profile all down -v && ./start-all.sh
Milvus 2.6
- Milvus upgraded from v2.3.3 (EOL) to v2.6.18, following the official standalone compose layout (etcd v3.5.25, MinIO 2024-12-18,
MQ_TYPE: woodpecker) - pymilvus upgraded to 2.6.15; the obsolete
marshmallowpin was removed - All transitive Python dependencies are now pinned to exact versions for reproducible participant installs
Automated credential management
start-all.shnow generates random Milvus root and MinIO passwords on first start, stores them insetup/instructor/.env, waits for Milvus to become healthy, and rotates the root password away from the default (idempotent — safe to rerun)- Participant
.envtemplates use a<password distributed by instructor>placeholder; the scripts refuse to run while any placeholder is unchanged
Delivery guidance
- Remote delivery docs now recommend private networks (Tailscale/VPN) first; ngrok TCP is documented as a fallback with an explicit warning that Milvus gRPC traffic transits the tunnel unencrypted
Demo application
/searchrecovers automatically when the collection was dropped and recreated (no app restart needed after re-inserting data)
Tooling
- New E2E smoke workflow (manual trigger): starts the full instructor environment incl. credential generation, then runs the participant flow (connection test, data insertion, search) end to end
- New release workflow: participant zips are built and attached to every
v*release - CI now runs shellcheck and ruff
- The docs container is built from
mkdocs.Dockerfile(nopip installat startup) check_translation_sync.shno longer leaveschanged_files.txtbehind on local runs- Linux participants: documented the CPU-only torch install (saves several GB)
Upgrade notes for instructors
- Reset volumes and restart:
cd setup/instructor && docker compose --profile all down -v && ./start-all.sh - Note the generated Milvus password printed by
start-all.shand share it with participants - Distribute the regenerated zips (also attached to this release as assets)
Full Changelog: v1.1.0...v1.2.0
v1.1.0
Highlights
This release hardens the hands-on environment and improves the participant tooling.
⚠️ If you ran a hands-on with v1.0.0 and exposed Milvus publicly (e.g. ngrok TCP), please upgrade. In v1.0.0 the Milvus server did not enforce authentication: theroot/Milvuscredentials were accepted but never verified, so anyone who knew the endpoint could connect.
Security
- Milvus user/password authentication is now enforced (
COMMON_SECURITY_AUTHORIZATIONENABLED=trueinsetup/instructor/docker-compose.yml) - MinIO (9000/9001) and Milvus metrics (9091) ports are bound to
127.0.0.1instead of all interfaces - README and the instructor guide explain how to change the default root password before public delivery
Shared-Milvus safety
- Each participant now sets a unique
COLLECTION_NAMEin.env; the scripts refuse to run while the template placeholder is unchanged, so participants can no longer overwrite each other's collections insert_sample_data.pyshows the entity count and asks for confirmation before dropping an existing collection (--yesto skip)
Demo application
- FastAPI startup/shutdown migrated from the deprecated
on_eventhooks to alifespanhandler /searchand/healthrun in the threadpool and no longer block the event loop- The collection is loaded lazily, so inserting data after starting the app no longer requires a restart
- Input validation for
query(non-empty) andtop_k(1–100) - The embedding dimension is detected from the model;
EMBEDDING_DIMENSIONwas removed from.env
Tooling and docs
- New
setup/instructor/build-participant-zips.shregenerates the participant zips from the repository sources; CI fails when the committed zips drift - MkDocs image and plugin versions are pinned in sync with CI
stop-all.shonly stops processes whose command line matches the expected server- Participant scripts exit non-zero on failure
- Python dependencies updated (FastAPI 0.136.x, sentence-transformers 5.5.x, uvicorn 0.49.x, python-dotenv 1.2.x)
- Participant docs (EN/JA), README, and the instructor guide updated accordingly, including the Part 3 sample review
Upgrade notes for instructors
- Restart the environment to enable authentication:
cd setup/instructor && ./stop-all.sh && ./start-all.sh - Distribute the regenerated zips (
vector-search-builder-en.zip/vector-search-builder-ja.zip) - Tell participants to set a unique
COLLECTION_NAME(e.g.products_taro) insetup/participant/.env - Before public (ngrok) delivery, change the Milvus root password as described in the README
Full Changelog: v1.0.0...v1.1.0
v1.0.0
⚠️ Upgrading to v1.1.0 is strongly recommended. In this release the Milvus server does not enforce authentication (theroot/Milvuscredentials are accepted but never verified), so a publicly exposed endpoint (e.g. ngrok TCP) is open to anyone. v1.1.0 enforces authentication and adds shared-collection safety fixes.
Initial public release of the Vector Search hands-on — a guided, bilingual (English / Japanese) workshop that teaches semantic search on Milvus with the help of IBM Bob.
What's included
- Hands-on documentation site (MkDocs Material, EN/JA): a preparation guide, Part 1–3, a summary, and a feedback page
- Instructor environment: a containerized Milvus setup (Docker Compose) for the instructor to host for participants (
setup/instructor/) - Participant tooling: the Vector Search Builder packages and connection-test scripts (
setup/participant/)





