Enum EmbeddingGenerationFailure
- Namespace
- MailFathom.Application.Emails.Embeddings
- Assembly
- MailFathom.Application.dll
Names why an embedding request did not produce vectors, at the granularity a caller acts on.
public enum EmbeddingGenerationFailure
Fields
CredentialRejected = 0The provider refused the credential the deployment presented.
Terminal. Every repetition receives the same answer while counting against the account's request budget.
RateLimited = 1The provider refused the request because the deployment is over its allowed rate.
Worth repeating, but only after a backoff. It is separate from a transport fault because the provider answered rather than failed to answer, and answering again immediately is what turns a throttle into a longer one.
RequestRefused = 4The provider rejected the request itself, for a reason repeating it cannot change.
A model the deployment does not serve, an input beyond what the model accepts, a malformed argument. Terminal, and the one classification that names a declaration to correct rather than a remote condition to wait out.
RequestTimedOut = 2The request outlived the time the deployment allows one embedding call.
TransportFaulted = 3The request never reached an answer: the endpoint was unreachable, the connection dropped, or the response was unreadable.
VectorShapeUnexpected = 5The provider answered with a vector the declared geometry does not describe.
A width other than the declared dimension, a count that does not match the passages sent, or a component that is not a finite number.
Remarks
The set exists because the four remote failures below look identical to a caller that only sees "the provider failed", and they are not: two of them are worth repeating and two are not. A rate limit answered with an immediate retry is how an account gets throttled harder, and a refused credential repeated is how the same refusal is bought again, so the classification is the deliverable rather than a detail of one.
A caller's own cancellation and a host shutdown are absent by design. Both arrive as OperationCanceledException and neither is a statement about the provider, so folding them in here would put a decision this system made among the answers a remote party gave.