Skip to content

feat: v0.5.2 — embeddings + reranker (MLXEmbedders)#53

Merged
magicnight merged 4 commits into
mainfrom
feat/v0.5.2-embeddings
Jul 8, 2026
Merged

feat: v0.5.2 — embeddings + reranker (MLXEmbedders)#53
magicnight merged 4 commits into
mainfrom
feat/v0.5.2-embeddings

Conversation

@magicnight

Copy link
Copy Markdown
Owner

Lands the v0.5.2 embeddings/rerank feature (implemented + code-reviewed earlier; the review's one BLOCKER — pooling ignoring the attention mask — was fixed with a regression test before this PR).

What lands

  • EmbeddingEngine (MLXEmbedders): batch embedding, mean/last-token pooling, mask-aware (padding excluded), L2-normalized.
  • POST /v1/embeddings (OpenAI-compatible) + POST /v1/rerank (bi-encoder MVP: cosine over embeddings; true cross-encoder deferred).
  • HuggingFaceTokenizerLoader extracted from MLXSwiftEngine (shared by chat + embedding paths).
  • LocalModel.embedder kind + detection heuristics + Models-tab badge; MLXEmbedders dependency.
  • Adaptation to the v0.5.3 throwing generation lock (embeddings serialize MLX compute with generation under the same lock, exactly-once release discipline).

Verification

Unified state (this branch = v0.5.2 + v0.5.3 + DeepSeek V3.2): ** TEST SUCCEEDED **, 76 XCTest + 203 swift-testing in 27 suites, 0 failures — embeddings/rerank/detection suites, all 7 v0.5.3 regression tests, and all 11 DeepSeek parity tests coexist green.

Known follow-ups (tracked): true cross-encoder reranker, gate /v1/embeddings on .embedder kind, decoder-family embedder detection.

- EmbeddingEngine (MLXEmbedders): batch embedding with mean/last-token
  pooling, mask-aware (pooling excludes padding), L2-normalized output
- POST /v1/embeddings (OpenAI-compatible) + POST /v1/rerank (bi-encoder
  MVP: cosine over embeddings; true cross-encoder deferred)
- HuggingFaceTokenizerLoader extracted from MLXSwiftEngine (shared by
  chat + embedding paths)
- LocalModel.embedder kind + ModelLibraryManager detection (config
  architectures / model_type heuristics) + Models tab badge
- MLXEmbedders dependency in MacMLXCore Package.swift

Tests: EmbeddingPoolingTests (incl. the padding-mask regression that
was the review blocker), RerankScoringTests, embedder detection,
HummingbirdServerEmbeddingsTests.
…n lock

acquireGenerationLock became throwing (cancellation-aware waiters) in
v0.5.3; the embeddings/rerank handlers now try-acquire with the
exactly-once discipline: a throw means the lock is NOT held, so those
paths return an error without releasing.
@magicnight magicnight merged commit f03976e into main Jul 8, 2026
@cursor

cursor Bot commented Jul 8, 2026

Copy link
Copy Markdown

Bugbot is not enabled for your account, so this pull request was not reviewed.

Enable Bugbot in the Cursor dashboard to get automatic reviews on future PRs.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant