Skip to content

Frequently asked questions

What does SEMQ take as input?

Unit-norm, finite float32 vectors from your embedding model or numeric pipeline, each under an id you choose. SEMQ does not embed text, normalize vectors, or attach document metadata beyond the manifest you declare.

Why must rows be unit-norm?

The operator rules are defined for directions. The core checks that the sum of squares of every row is within 2^-10 of one and rejects the row with its index otherwise; normalization stays in your pipeline, where the model's own convention is known.

What is the difference between content_digest and state_id?

content_digest covers the config, the id kind, the ids and the rows: the same corpus under the same rule has the same digest whatever the manifest says. state_id adds the manifest, so it changes when you declare a different encoder. Equality of states means equality of state_id.

Are reconstructed vectors equal to the originals?

No. Quantization maps many values to the same symbol, and decode returns one representative per symbol. Representatives are not normalized, and re-encoding one through encode is not guaranteed to reproduce the row.

Can I encode in Python and load in another language?

Yes. Every binding calls the same core, and the conformance vectors pin the bytes and verdicts of every operation. A .semq file carries its config, so the loader needs nothing else.

What does a floor measure?

The variation your own rebuilds show when nothing changed on purpose: the worst ratio of changed rows and the largest p99 hamming across the null rebuilds you measured. The floor remembers where it was measured (config, id kind, reference, number of nulls) and applies only to diffs against that reference. It is an envelope of observation, not a probability. See Gate a rebuild.

Why does within ignore added rows?

A rebuild may ingest new documents. The gate cannot judge rows that have no counterpart, so they are reported and left to you; removed rows always fail the gate, because a candidate that lost rows is not a rebuild of the same corpus.

Which error do I get for what?

InvalidInput for arguments that violate their contract, Incompatible for two states that differ in config or id kind, FormatError and IntegrityError for files, Unsupported for an unsupported floating-point environment, and Native for defects. See the errors page of your binding.

Next steps

To correct or extend an answer, follow Contribute to the docs.