-
Notifications
You must be signed in to change notification settings - Fork 0
Embeddings embeddingindex loadasync
Reads an index back, asynchronously.
public static Task<EmbeddingIndex> LoadAsync(Stream source, ArtifactLoadOptions options = null, CancellationToken cancellationToken = default)Parameters — source is a readable stream, never disposed by this method. options bounds
what will be accepted and defaults to
ArtifactLoadOptions's own defaults.
cancellationToken cancels the read.
Returns — Task<EmbeddingIndex>, completing with an index ready to
Search.
Exceptions — InvalidDataException for the same reasons as
Load. OperationCanceledException when cancellationToken is
signalled.
Example — the asynchronous round trip.
using Lodestar.Embeddings.Search;
static async Task<int> ReloadAsync()
{
var original = new EmbeddingIndex(dimension: 2);
original.Add(new float[] { 1f, 0f });
original.Add(new float[] { 0f, 1f });
using var buffer = new MemoryStream();
await original.SaveAsync(buffer);
buffer.Position = 0;
EmbeddingIndex reloaded = await EmbeddingIndex.LoadAsync(buffer);
return reloaded.Count;
}
int count = ReloadAsync().GetAwaiter().GetResult(); // => 2The GetAwaiter().GetResult() is only what lets a synchronous example drive an async one; in
async code the call is simply await.
Remarks — only the read is asynchronous; the bounds, the consistency checks and the
bit-exact restoration are identical to Load, and so is the fact that
the normalization flag comes from the file rather than from the caller.
There is no string overload here for the same reason
SaveAsync has none: opening the file is the synchronous part, and
a caller who wants it can open the stream and pass it.
Bounds are applied while reading, not afterwards. A file that would exceed MaxTotalBytes is
refused before its bytes are ever held, which is the whole point of bounding a load — checking
afterwards would mean having already allocated whatever the file asked for.
Applies to — net10.0, netstandard2.0.
See also — EmbeddingIndex.Load,
EmbeddingIndex.SaveAsync, EmbeddingIndex.
- 0001-target-framework
- 0002-unicode-comparison-unit
- 0003-provenance-and-licensing
- 0004-levenshtein-myers-backlog
- 0005-hamming-jellyfish-divergence
- 0006-ratcliff-autojunk
- 0007-metaphone-scope
- 0008-italian-enza-nltk-divergence
- 0009-sample-consumes-a-local-feed
- 0010-stop-word-list-provenance
- 0011-persistence-format
- 0012-per-package-versioning
- 0013-sentencepiece-parity-scope
- 0014-precompiled-normalizer
- 0015-sonar-rules-in-the-build
- 0016-metrics-package-placement
- 0017-bpe-parity-scope
- 0018-multiclass-roc-auc-parallelism-is-opt-in
- 0019-the-net-analysers-run-in-the-build-too
- 0020-normalize-is-a-projection-not-a-parameter
- 0021-multioutput-is-a-method-not-an-enum
- 0022-added-token-matching-flags
- 0023-byte-level-decode-substitutes
- 0024-weighted-median-averages-within-scikit-learns-epsilon
- 0025-quickselect-replaces-a-full-sort-for-the-median
- 0026-r2-and-explainedvariance-split-their-undefined-cases-differently
- 0027-r2-and-explainedvariance-vectorize-only-a-single-output
- 0028-log1p-is-kahans-identity-not-math-log-1-plus-x
- 0029-balanced-accuracy-adjusted-is-left-to-ieee-754-at-the-edge
- 0030-cohen-kappa-keeps-scikit-learns-expected-matrix-orientation
- 0031-nosamplecorrect-mirrors-numpys-float64-upcast
- 0032-fbeta-substitutes-tp-predicted-and-support-algebraically
- 0033-compensated-sum-is-neumaiers-variant
- 0034-dropout-is-refused-for-want-of-a-user
- 0035-a-null-pre-split-is-removed-with-invert-not-isolated
- 0036-a-member-may-ship-without-an-oracle-if-it-says-so
- 0037-the-guards-run-before-the-commit
- 0038-the-gate-confronts-an-exception-tag-with-the-page-that-documents-it
- 0039-mutual-information-returns-zero-on-an-empty-input
- 0040-a-curve-is-a-sealed-class-per-curve
- 0041-one-sample-file-per-public-class
- 0042-phonetic-encoders-refuse-a-null-word
- 0043-the-equality-table-is-sized-to-the-pattern
- 0044-compression-belongs-to-the-caller
- 0045-a-console-call-carries-its-reason-on-the-line
- 0046-check-adr-immutable-runs-in-ci-only
- 0047-one-gate-per-kernel-not-one-per-alphabet
- 0048-the-gate-depends-on-the-kernel-and-the-alphabet
- 0049-two-gates-per-kernel-tested-where-the-width-is-known
- 0050-the-sentencepiece-bpe-lineage-stays-a-bpe-model
- benchmark_latest
- decisions
- equivalence
- matplotlib
- migration
- nightly_run
- numpy
- pandas
- performance
- pytorch
- seaborn
- sklearn
- statsmodels