in AzureSQL/csharp/DocumentVectorPipelineFunctions/BlobTriggerFunction.cs [157:192]
private async Task<EmbeddingCollection> GenerateEmbeddingsWithRetryAsync(IEnumerable<TextChunk> batchChunkTexts)
{
EmbeddingGenerationOptions embeddingGenerationOptions = new()
{
Dimensions = embeddingDimensions
};
int retryCount = 0;
while (retryCount < MaxRetryCount)
{
try
{
return await embeddingClient.GenerateEmbeddingsAsync(batchChunkTexts.Select(p => p.Text).ToList(), embeddingGenerationOptions);
}
catch (ClientResultException ex)
{
if (ex.Status is ((int)HttpStatusCode.TooManyRequests) or ((int)HttpStatusCode.Unauthorized))
{
if (retryCount >= MaxRetryCount)
{
throw new Exception($"Max retry attempts reached generating embeddings with exception: {ex}.");
}
retryCount++;
await Task.Delay(RetryDelay);
}
else
{
throw new Exception($"Failed to generate embeddings with error: {ex}.");
}
}
}
throw new Exception($"Failed to generate embeddings after retrying for ${MaxRetryCount} times.");
}