Skip to content

Releases: mukoubuchi/vector-search-hands-on

v1.7.0

Choose a tag to compare

@mukoubuchi mukoubuchi released this 05 Jul 03:09

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.

A hovered step title shifted to the right while its numbered circle stays aligned on the rail

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.

A hovered h4 heading shifted to the right with no shadow box


See it live: https://mukoubuchi.github.io/vector-search-hands-on/
Full Changelog: v1.6.0...v1.7.0

v1.6.0

Choose a tag to compare

@mukoubuchi mukoubuchi released this 14 Jun 06:25

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.

Steps shown as a vertical numbered rail with a continuous line and numbered circles

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").

A non-step sub-heading with no circle, above a nested step run with smaller numbered circles


See it live: https://mukoubuchi.github.io/vector-search-hands-on/
Full Changelog: v1.5.0...v1.6.0

v1.5.0

Choose a tag to compare

@mukoubuchi mukoubuchi released this 13 Jun 12:36

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.

TOC rail highlighting every on-screen section

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).

Mac/Windows content tabs with the active tab highlighted

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

Choose a tag to compare

@mukoubuchi mukoubuchi released this 13 Jun 00:20

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] — answer y, or run python 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/overrides and the custom_dir setting
  • 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-glightbox and redundant babel / 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 documented milvus-standalone name never matched), and a new section covers recovering a lost setup/instructor/.env after password rotation
  • The preparation docs no longer mention marshmallow (pymilvus 2.6 no longer installs it)
  • DEFAULT_COLLECTION_NAME is now products instead of the Building Blocks leftover knowledge_base (every documented path still sets a unique COLLECTION_NAME explicitly)

Full Changelog: v1.3.0...v1.4.0

v1.3.0

Choose a tag to compare

@mukoubuchi mukoubuchi released this 12 Jun 09:05

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.py fails 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.Dockerfile base 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/.mkdocsignore and ~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

Choose a tag to compare

@mukoubuchi mukoubuchi released this 11 Jun 22:49

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 marshmallow pin was removed
  • All transitive Python dependencies are now pinned to exact versions for reproducible participant installs

Automated credential management

  • start-all.sh now generates random Milvus root and MinIO passwords on first start, stores them in setup/instructor/.env, waits for Milvus to become healthy, and rotates the root password away from the default (idempotent — safe to rerun)
  • Participant .env templates 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

  • /search recovers 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 (no pip install at startup)
  • check_translation_sync.sh no longer leaves changed_files.txt behind on local runs
  • Linux participants: documented the CPU-only torch install (saves several GB)

Upgrade notes for instructors

  1. Reset volumes and restart: cd setup/instructor && docker compose --profile all down -v && ./start-all.sh
  2. Note the generated Milvus password printed by start-all.sh and share it with participants
  3. Distribute the regenerated zips (also attached to this release as assets)

Full Changelog: v1.1.0...v1.2.0

v1.1.0

Choose a tag to compare

@mukoubuchi mukoubuchi released this 11 Jun 17:53

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: the root/Milvus credentials were accepted but never verified, so anyone who knew the endpoint could connect.

Security

  • Milvus user/password authentication is now enforced (COMMON_SECURITY_AUTHORIZATIONENABLED=true in setup/instructor/docker-compose.yml)
  • MinIO (9000/9001) and Milvus metrics (9091) ports are bound to 127.0.0.1 instead 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_NAME in .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.py shows the entity count and asks for confirmation before dropping an existing collection (--yes to skip)

Demo application

  • FastAPI startup/shutdown migrated from the deprecated on_event hooks to a lifespan handler
  • /search and /health run 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) and top_k (1–100)
  • The embedding dimension is detected from the model; EMBEDDING_DIMENSION was removed from .env

Tooling and docs

  • New setup/instructor/build-participant-zips.sh regenerates 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.sh only 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

  1. Restart the environment to enable authentication: cd setup/instructor && ./stop-all.sh && ./start-all.sh
  2. Distribute the regenerated zips (vector-search-builder-en.zip / vector-search-builder-ja.zip)
  3. Tell participants to set a unique COLLECTION_NAME (e.g. products_taro) in setup/participant/.env
  4. 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

Choose a tag to compare

@mukoubuchi mukoubuchi released this 07 Jun 09:12

⚠️ Upgrading to v1.1.0 is strongly recommended. In this release the Milvus server does not enforce authentication (the root/Milvus credentials 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/)