-
Notifications
You must be signed in to change notification settings - Fork 0
Embeddings embeddingindex add
Development build. This page describes
main, not a released package. The latest published Lodestar.Embeddings is 0.4.0 — read its documentation.
Adds one vector to the index, optionally with an id to recall it by.
public void Add(ReadOnlySpan<float> vector)
public void Add(ReadOnlySpan<float> vector, string id)Parameters — vector is the embedding, and its length must equal Dimension. id is
anything identifying the document — a primary key, a URL, a path — kept verbatim and never
interpreted; null is exactly equivalent to the single-argument overload.
Returns — nothing. The vector's position is the old Count, and the new Count is one
higher.
Exceptions — ArgumentException when vector.Length differs from Dimension. The message
names both lengths.
Example — two vectors, one with an id and one without.
using Lodestar.Embeddings.Search;
var index = new EmbeddingIndex(dimension: 2);
index.Add(new float[] { 1f, 0f }, "east");
index.Add(new float[] { 0f, 1f });
int count = index.Count; // => 2
bool anyIds = index.HasIds; // => TrueRemarks — a copy is stored, normalized on the way in when the index normalizes, so the caller's array is neither retained nor modified. Reusing one buffer for every vector is therefore safe and is the cheap way to load a corpus.
The id array is allocated on the first non-null id and never before, so an index of anonymous vectors pays nothing for a feature it does not use. That is also why there are two overloads rather than one optional parameter: adding a parameter to the existing method would change its signature and break callers already compiled against it.
A vector holding NaN or an infinity is accepted here and refused by
Save. That asymmetry is deliberate. In memory a bad vector is a bad
score you can notice and fix; written to a file it becomes a permanent NaN that scores against
every future query, outliving the code that produced it. If you intend to persist an index, check
the vectors as you build it rather than at save time, when the corpus that produced them may be
gone.
Applies to — net10.0, netstandard2.0.
See also — EmbeddingIndex.Search,
EmbeddingIndex.GetId, 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