Qualeafclover/Store-Product-Lookup

HTML

0

94 commits

updated Jul 13, 2026

See the code

README

Store Product Lookup

商品検索用の Web アプリです。Docker Compose で Node.js バックエンド、PostgreSQL、フロントエンド、量子化済み ONNX モデルをまとめて起動します。

Node.js や PostgreSQL をローカルに直接インストールする必要はありません。

必要なもの

  • Docker / Docker Compose
  • Git
  • make / wget / unzip

1. Docker を用意する

Ubuntu / Debian

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 に置き換えてください。

Windows

Docker Desktop + WSL 2 を使います。

PowerShell を管理者として開き、WSL が未導入なら有効化します。

wsl --install

その後、Docker Desktop で WSL 2 backend を有効にしてください。

プロジェクトは Windows の C:\Users\... ではなく、WSL の Linux 側に置くことを推奨します。

/home/<user>/Store-Product-Lookup

2. プロジェクトを取得する

git clone https://github.com/Qualeafclover/Store-Product-Lookup.git
cd Store-Product-Lookup

3. モデルをダウンロードする

通常の実行だけなら、量子化済みモデルをダウンロードするだけで十分です。

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 起動とは別作業です。

4. 起動する

docker compose up --build

Linux で権限エラーが出る場合:

sudo docker compose up --build

5. 店舗 UI から商品追加

ブラウザで店舗用URLにアクセスします。

http://localhost:8080/store/index.html

「商品を追加」から商品追加画面に移行します。

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

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

6. 消費者 UI から商品検索

ブラウザで店舗用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 イメージを使う PostgreSQL

PostgreSQL は公式イメージを使うため、Dockerfile は services/Dockerfile の 1 つだけです。

フロントエンドは front/ にありますが、ブラウザで開く URL は /front/... ではありません。

http://localhost:8080/customer/index.html
http://localhost:8080/store/index.html

Qualeafclover/Store-Product-Lookup

HTML

0

94 commits

updated Jul 13, 2026

See the code

README

Store Product Lookup

商品検索用の Web アプリです。Docker Compose で Node.js バックエンド、PostgreSQL、フロントエンド、量子化済み ONNX モデルをまとめて起動します。

Node.js や PostgreSQL をローカルに直接インストールする必要はありません。

必要なもの

  • Docker / Docker Compose
  • Git
  • make / wget / unzip

1. Docker を用意する

Ubuntu / Debian

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 に置き換えてください。

Windows

Docker Desktop + WSL 2 を使います。

PowerShell を管理者として開き、WSL が未導入なら有効化します。

wsl --install

その後、Docker Desktop で WSL 2 backend を有効にしてください。

プロジェクトは Windows の C:\Users\... ではなく、WSL の Linux 側に置くことを推奨します。

/home/<user>/Store-Product-Lookup

2. プロジェクトを取得する

git clone https://github.com/Qualeafclover/Store-Product-Lookup.git
cd Store-Product-Lookup

3. モデルをダウンロードする

通常の実行だけなら、量子化済みモデルをダウンロードするだけで十分です。

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 起動とは別作業です。

4. 起動する

docker compose up --build

Linux で権限エラーが出る場合:

sudo docker compose up --build

5. 店舗 UI から商品追加

ブラウザで店舗用URLにアクセスします。

http://localhost:8080/store/index.html

「商品を追加」から商品追加画面に移行します。

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

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

6. 消費者 UI から商品検索

ブラウザで店舗用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 イメージを使う PostgreSQL

PostgreSQL は公式イメージを使うため、Dockerfile は services/Dockerfile の 1 つだけです。

フロントエンドは front/ にありますが、ブラウザで開く URL は /front/... ではありません。

http://localhost:8080/customer/index.html
http://localhost:8080/store/index.html