Table of Contents

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 = 0

The provider refused the credential the deployment presented.

Terminal. Every repetition receives the same answer while counting against the account's request budget.

RateLimited = 1

The 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 = 4

The 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 = 2

The request outlived the time the deployment allows one embedding call.

TransportFaulted = 3

The request never reached an answer: the endpoint was unreachable, the connection dropped, or the response was unreadable.

VectorShapeUnexpected = 5

The 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.