feat(inference): normalize Ray tensor embeddings for Lance - #66
Merged
Conversation
Signed-off-by: jiangxt2 <jiangxt2@vip.qq.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Ray Data represents conventional two-dimensional NumPy embedding output as a fixed-shape Arrow tensor extension, while Lance vector columns require an Arrow
FixedSizeList. This PR adds a narrow schema bridge to the generic Lance result sink so declared Ray V1/V2 and Arrow fixed-shape tensor columns can be written without requiring every custom Predictor to construct aFixedSizeListmanually.The sink now:
FixedSizeListin the existing distributed Arrowmap_batchesstep;Undeclared columns retain their previous behavior. The bridge does not infer model semantics, cast vector dtypes, flatten higher-rank tensors, mathematically normalize embedding values, or automatically create a vector index.
The distributed Lance vector integration gate now starts with a conventional two-dimensional NumPy embedding Predictor, writes through
LanceResultSink, verifies the persisted values and schema, and then exercises the existing distributed index build, search, append, optimize, and compaction scenarios.Related issues
None.
Additional information
uv run --locked --no-sync python scripts/pr-precheck.py— passed with three reviewed inline-import warnings in the Docker integration test..venv/bin/python -m pytest tests/inference/test_lance_sink.py -q— 36 passed../scripts/run_lance_vector_index_it.sh— passed against the Docker Ray cluster, writing 2,048 embeddings before distributed vector index and search validation.