beno-rohman's picture
Update product-function similarity checkpoint and concise model card
4aafc75 verified
|
Raw History Blame Contribute Delete
2.88 kB
# Product Embedding Explorer: local API contract
Served on loopback (`127.0.0.1:8765`). FastAPI publishes the machine-readable
contract at `/openapi.json` and interactive documentation at `/docs`.
## GET /api/status
200: `{ "models": ["product-type", "fine-tuned", "base"], "default_model": "product-type",
"device": "cpu", "max_products": 300 }`. `fine-tuned` is only listed when a
completed local model exists. Base weights must already be cached; the web server
never downloads models and never starts training.
`product-type` is listed and selected by default only when its local checkpoint
and a completed `validated.json` training/evaluation marker are present. This is
the graded product-function model. `fine-tuned` retains the original identity
model meaning for compatibility with existing clients.
## POST /api/embed
Request: `{ "products": ["Samsung Galaxy S8", "Case for Samsung S8"],
"model": "fine-tuned", "method": "pca", "include_embeddings": false }`.
- 2–300 nonempty product strings, at most 1,000 characters per string.
- `model`: `product-type`, `fine-tuned`, or `base`; `method`: `pca` or `tsne`.
- Input limit: 96 tokens for `product-type`, 128 for the other two checkpoints.
The historical request default remains `fine-tuned`; the UI sends the explicitly
selected model and follows the status endpoint's preferred available model.
- t-SNE needs at least four products. PCA supports two or three by padding zero
axes. Both operate on normalized full-dimensional embeddings.
- Duplicates remain separate entries and may have overlapping coordinates.
200 response:
```
{
"model": "fine-tuned", "embedding_dimensions": 768,
"projection": {"method": "pca", "explained_variance": 0.72,
"warning": "3D projection distorts distances; compare cosine similarity."},
"products": [{"id": 0, "text": "...", "xyz": [0.1, -0.2, 0.3],
"nearest": [{"id": 1, "similarity": 0.91}]}],
"similarities": [[1.0, 0.91], [0.91, 1.0]],
"embeddings": null
}
```
`embeddings` contains the normalized vectors only if requested. Coordinates are
centered. PCA coordinates retain the Euclidean scale of normalized embeddings;
they are not expanded to fit a fixed radius. For two to four products, PCA can
retain the complete centered vector span, preserving pairwise Euclidean distance
(equal to `sqrt(2 * (1 - cosine_similarity))`). Larger lists can lose distance
information in three dimensions. t-SNE has arbitrary layout units and is scaled
to unit radius for display; its spacing is not comparable between submissions.
`nearest` excludes self and contains up to five neighbors measured in original
embedding space.
Errors: 422 invalid input; 503 model/checkpoint unavailable; 500 inference failure.
Client displays errors and retains the last successful visualization. No product
text is sent to an external service or stored by the endpoint.