Troubleshooting#
Service Will Not Start#
Port Conflict: Confirm that port
8080(API) or9090(metrics) is not already in use:ss -ltnp | grep 8080 ss -ltnp | grep 9090
Missing VLM Variables: If
DEFAULT_MATCHING_STRATEGYissemanticorhybrid, the service will log an error at startup if the required VLM variables are missing. Check startup logs:make docker-logsFor OVMS, ensure
OVMS_ENDPOINTandOVMS_MODEL_NAMEare set in.env. Foropenvino_local, ensureOPENVINO_MODEL_PATHpoints to an accessible directory. Foropenai, ensureOPENAI_API_KEYis set.Invalid
.env: Verify.envexists and has no syntax errors. The service silently falls back to defaults for missing keys, but completely absent.envfiles will use all defaults — including an emptyOVMS_ENDPOINT.
Health Endpoint Fails#
Docker run: Use
make docker-logsordocker compose -f docker/docker-compose.yml psto inspect startup errors.Proxy blocks: If behind a corporate proxy,
curlhittinglocalhostmay be blocked. Add--noproxy '*':curl --noproxy '*' http://localhost:8080/api/v1/health
Semantic or Hybrid Matching Returns No Matches#
Wrong Strategy: Check that
DEFAULT_MATCHING_STRATEGYin.envissemanticorhybrid, notexact.VLM Backend Unavailable: The health endpoint reports
vlm_status. If it shows"unavailable", the backend is misconfigured or unreachable. CheckOVMS_ENDPOINTconnectivity from inside the container:docker exec semantic-search-agent curl -s ${OVMS_ENDPOINT}/v3/models
Confidence Threshold Too High: If the VLM returns YES but matches are still rejected, the confidence score may be below
CONFIDENCE_THRESHOLD(default0.85). Lower the threshold or use the/compare/semanticendpoint to inspect raw responses.Cache Stale: If you recently changed configuration but are getting cached results, clear the cache by restarting the service (in-memory cache) or flushing Redis:
docker exec semantic-redis redis-cli FLUSHDB
OVMS Connection Errors#
Wrong Endpoint Format:
OVMS_ENDPOINTmust be a full base URL without a trailing slash, e.g.http://ovms-host:8000. The service appends/v3/chat/completionsautomatically.Proxy Interference: The OVMS backend bypasses system proxy variables (
trust_env=False) to avoid routing internal OVMS traffic through a corporate proxy. If your OVMS server requires proxy access, setNO_PROXYor adjust the backend configuration.Model Not Loaded: Confirm the model specified in
OVMS_MODEL_NAMEis actually loaded in OVMS:curl http://<ovms-host>:8000/v3/models
Order Validation Returns Unexpected Results#
Normalization Differences: The ExactMatcher normalizes text (lowercase, whitespace trim, special character removal) before comparison. Inputs like
"Coca-Cola"and"coca cola"will match. If you expect case-sensitive behavior, setCONFIDENCE_THRESHOLD=1.0and use theexactstrategy only.Quantity Mismatch Not Reported: Items with matching names but different quantities appear in
validation.quantity_mismatch, not invalidation.missing. Check both arrays in the response.Items Appear in Both Missing and Extra: This indicates the names are semantically different from the service’s perspective. Use
/compare/semanticto diagnose the VLM response directly for the specific pair.
High Latency on Semantic Requests#
Cache Disabled: Confirm
CACHE_ENABLED=truein.env. Without caching, every unique pair triggers a VLM inference call.OVMS Overloaded: If OVMS has high load, latency increases. Monitor OVMS metrics and consider increasing
OVMS_TIMEOUTfor slow responses.Use Hybrid Strategy: With
DEFAULT_MATCHING_STRATEGY=hybrid, exact matches are resolved without any VLM call, significantly reducing latency for items with consistent naming.