商品検索用の Web アプリです。Docker Compose で Node.js バックエンド、PostgreSQL、フロントエンド、量子化済み ONNX モデルをまとめて起動します。
Node.js や PostgreSQL をローカルに直接インストールする必要はありません。
Docker Engine をインストールします。
必要な補助コマンドも入れておきます。
sudo apt update
sudo apt install -y git make wget unzip
Docker の確認:
docker --version
docker compose version
Linux では環境によって docker に sudo が必要です。権限エラーが出る場合は、README 内の docker compose を sudo docker compose に置き換えてください。
Docker Desktop + WSL 2 を使います。
PowerShell を管理者として開き、WSL が未導入なら有効化します。
wsl --install
その後、Docker Desktop で WSL 2 backend を有効にしてください。
プロジェクトは Windows の C:\Users\... ではなく、WSL の Linux 側に置くことを推奨します。
/home/<user>/Store-Product-Lookup
git clone https://github.com/Qualeafclover/Store-Product-Lookup.git
cd Store-Product-Lookup
通常の実行だけなら、量子化済みモデルをダウンロードするだけで十分です。
make download-model
以下にモデルが展開されます。
model/quantized/ruri-v3-310m/
必要ファイル:
config.json
model_quantized.onnx
ort_config.json
special_tokens_map.json
tokenizer.json
tokenizer.model
tokenizer_config.json
確認:
ls model/quantized/ruri-v3-310m
自分で量子化する場合は model/quantize.py を使います。量子化に必要な Python 環境や uv の準備は Docker 起動とは別作業です。
docker compose up --build
Linux で権限エラーが出る場合:
sudo docker compose up --build
ブラウザで店舗用URLにアクセスします。
http://localhost:8080/store/index.html
「商品を追加」から商品追加画面に移行します。

追加された商品は「一覧を表示」から確認できます。

「商品名から検索」や「場所から検索」から検索することもできます。

ブラウザで店舗用URLにアクセスします。
http://localhost:8080/store/index.html
検索バーからほしい商品の名前を入力します。
場所や価格、商品の詳細などが分かります。
停止:
docker compose down
バックグラウンド起動:
docker compose up --build -d
ログ確認:
docker compose logs app
docker compose logs db
起動中のコンテナ確認:
docker compose ps
データベースも含めて初期化:
docker compose down -v
docker compose up --build
down -v は PostgreSQL の保存データを削除します。データベースを作り直したい時だけ使ってください。
データベースにアクセス:
なお、パスワードは docker-compose.yml に記述されています
psql -h localhost -p 5432 -U postgres -d postgres
store_product_lookup データベースにアクセス:
\c store_product_lookup
products テーブルのスキーマ表示:
\d products
コサイン近似度検索:
なお、<=> がコサイン近似度の意味を持つ
SELECT * FROM products ORDER BY encoded_vector <=> '[0.3, 0.2, -0.1]'::VECTOR LIMIT 3;
docker-compose.yml は 2 つのサービスを起動します。
app: services/Dockerfile からビルドされる Node.js アプリdb: 公式の postgres:16 イメージを使う PostgreSQLPostgreSQL は公式イメージを使うため、Dockerfile は services/Dockerfile の 1 つだけです。
フロントエンドは front/ にありますが、ブラウザで開く URL は /front/... ではありません。
http://localhost:8080/customer/index.html
http://localhost:8080/store/index.html
商品検索用の Web アプリです。Docker Compose で Node.js バックエンド、PostgreSQL、フロントエンド、量子化済み ONNX モデルをまとめて起動します。
Node.js や PostgreSQL をローカルに直接インストールする必要はありません。
Docker Engine をインストールします。
必要な補助コマンドも入れておきます。
sudo apt update
sudo apt install -y git make wget unzip
Docker の確認:
docker --version
docker compose version
Linux では環境によって docker に sudo が必要です。権限エラーが出る場合は、README 内の docker compose を sudo docker compose に置き換えてください。
Docker Desktop + WSL 2 を使います。
PowerShell を管理者として開き、WSL が未導入なら有効化します。
wsl --install
その後、Docker Desktop で WSL 2 backend を有効にしてください。
プロジェクトは Windows の C:\Users\... ではなく、WSL の Linux 側に置くことを推奨します。
/home/<user>/Store-Product-Lookup
git clone https://github.com/Qualeafclover/Store-Product-Lookup.git
cd Store-Product-Lookup
通常の実行だけなら、量子化済みモデルをダウンロードするだけで十分です。
make download-model
以下にモデルが展開されます。
model/quantized/ruri-v3-310m/
必要ファイル:
config.json
model_quantized.onnx
ort_config.json
special_tokens_map.json
tokenizer.json
tokenizer.model
tokenizer_config.json
確認:
ls model/quantized/ruri-v3-310m
自分で量子化する場合は model/quantize.py を使います。量子化に必要な Python 環境や uv の準備は Docker 起動とは別作業です。
docker compose up --build
Linux で権限エラーが出る場合:
sudo docker compose up --build
ブラウザで店舗用URLにアクセスします。
http://localhost:8080/store/index.html
「商品を追加」から商品追加画面に移行します。

追加された商品は「一覧を表示」から確認できます。

「商品名から検索」や「場所から検索」から検索することもできます。

ブラウザで店舗用URLにアクセスします。
http://localhost:8080/store/index.html
検索バーからほしい商品の名前を入力します。
場所や価格、商品の詳細などが分かります。
停止:
docker compose down
バックグラウンド起動:
docker compose up --build -d
ログ確認:
docker compose logs app
docker compose logs db
起動中のコンテナ確認:
docker compose ps
データベースも含めて初期化:
docker compose down -v
docker compose up --build
down -v は PostgreSQL の保存データを削除します。データベースを作り直したい時だけ使ってください。
データベースにアクセス:
なお、パスワードは docker-compose.yml に記述されています
psql -h localhost -p 5432 -U postgres -d postgres
store_product_lookup データベースにアクセス:
\c store_product_lookup
products テーブルのスキーマ表示:
\d products
コサイン近似度検索:
なお、<=> がコサイン近似度の意味を持つ
SELECT * FROM products ORDER BY encoded_vector <=> '[0.3, 0.2, -0.1]'::VECTOR LIMIT 3;
docker-compose.yml は 2 つのサービスを起動します。
app: services/Dockerfile からビルドされる Node.js アプリdb: 公式の postgres:16 イメージを使う PostgreSQLPostgreSQL は公式イメージを使うため、Dockerfile は services/Dockerfile の 1 つだけです。
フロントエンドは front/ にありますが、ブラウザで開く URL は /front/... ではありません。
http://localhost:8080/customer/index.html
http://localhost:8080/store/index.html