Skip to content

[lore 3/7] Embedder + BGE int8 impl#3

Merged
kunallanjewar merged 2 commits into
mainfrom
quest-3-embedder-bge
Apr 28, 2026
Merged

[lore 3/7] Embedder + BGE int8 impl#3
kunallanjewar merged 2 commits into
mainfrom
quest-3-embedder-bge

Conversation

@kunallanjewar
Copy link
Copy Markdown
Contributor

Summary

  • Adds pkg/lore/embed with the Embedder interface: batch-oriented Embed(ctx, []string), Dimensions() int, Close(ctx) error
  • Adds pkg/lore/embed/bge with a reference implementation backed by the bundled int8-quantized BGE-small model
  • Model + vocabulary files embedded via go:embed; extracted to os.TempDir() at first New() so ONNX Runtime loads from disk
  • Library probed from system install (Homebrew/apt default paths, overridable via LORE_ONNXRUNTIME_LIB); ErrUnsupported on missing lib
  • OTel span on Embed calls (lore.embed.encode) with texts.count + dimensions attributes
  • Pure-Go WordPiece tokenizer for BERT-family models (ported from guild)
  • Platform stub returns ErrUnsupported on non-unix platforms (Windows etc.)

Files

  • pkg/lore/embed/embed.go — interface + sentinel errors
  • pkg/lore/embed/bge/bge.go — constructor + options
  • pkg/lore/embed/bge/bge_unix.go — unix inference path
  • pkg/lore/embed/bge/bge_unsupported.go — non-unix stub
  • pkg/lore/embed/bge/probe_unix.go — library discovery
  • pkg/lore/embed/bge/wordpiece.go — tokenizer
  • pkg/lore/embed/bge/assets.go — go:embed directives
  • pkg/lore/embed/bge/model/ — int8 model.onnx + vocab.txt
  • pkg/lore/embed/bge/bge_test.go — sanity tests

Test plan

  • go build ./... passes
  • go vet ./... passes
  • gofmt -l . no diffs
  • go test -race -count=1 ./... passes (tests skip gracefully when ONNX lib not installed on CI)
  • No internal identifiers in public artifacts

@kunallanjewar kunallanjewar marked this pull request as ready for review April 28, 2026 15:28
Adds pkg/lore/embed with the batch-oriented Embedder interface
(Embed/Dimensions/Close), and pkg/lore/embed/bge with a reference
implementation backed by the bundled int8-quantized BGE-small model.

- Embed interface is batch-only by design; single callers wrap with []string{s}
- BGE impl: model.onnx + vocab.txt embedded via go:embed; extracted to
  os.TempDir() at first New() call so ONNX Runtime can load from disk
- Library probed from system install (LORE_ONNXRUNTIME_LIB override or
  default Homebrew/system paths); ErrUnsupported on missing lib
- OTel span on Embed (lore.embed.encode) with texts.count + dimensions attrs
- slog.Default() if no WithLogger; ErrInvalidArgument for empty inputs
- WordPiece tokenizer ported from guild (pure Go, bit-parity with HF BERT)
- Tests: Dimensions, Determinism, BatchSizes, EmptyInput, EmptyString, Close
- Unsupported platform stub returns ErrUnsupported cleanly
- go vet + gofmt clean; internal path refs removed from README
Adds a code example showing bge.New, Embed, Close, and ErrUnsupported
fallback. Documents LORE_ONNXRUNTIME_LIB override and the WithLogger/
WithTracer options. Removes stale internal path reference.
@kunallanjewar kunallanjewar merged commit e519911 into main Apr 28, 2026
4 checks passed
@kunallanjewar kunallanjewar deleted the quest-3-embedder-bge branch April 28, 2026 15:37
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