RageAgainstThePixel / OpenAI-DotNet

A Non-Official OpenAI RESTful API Client for DotNet
https://openai.com
MIT License
700 stars 149 forks source link

Add chunk size parameter to EmbeddingsRequest #111

Open sibbl opened 1 year ago

sibbl commented 1 year ago

Feature Request

Azure OpenAI only allows one single string to be part of an embeddings request. Other frameworks have a chunk_size or embed_batch_size parameter for this.

Describe the solution you'd like

I'd propose a int? ChunkSize = null parameter for the EmbeddingsRequest. If it's > 0, the there should be multiple requests being made with n lines per requests.

Describe alternatives you've considered

I did the chunking myself, but as other frameworks have this built-in, we might also want to add such a parameter here.

Additional context

Quote from MS docs about this limitation:

I am trying to use embeddings and received the error "InvalidRequestError: Too many inputs. The max number of inputs is 1." How do I fix this? This error typically occurs when you try to send a batch of text to embed in a single API request as an array. Currently Azure OpenAI does not support batching with embedding requests. Embeddings API calls should consist of a single string input per request. The string can be up to 8191 tokens in length when using the text-embedding-ada-002 (Version 2) model.

sibbl commented 1 year ago

A quick update: Microsoft now allows up to 16 items in the array, not only a single one.

OpenAI currently allows a larger number of array inputs with text-embedding-ada-002. Azure OpenAI currently supports input arrays up to 16 for text-embedding-ada-002 Version 2. Both require the max input token limit per API request to remain under 8191 for this model.

https://learn.microsoft.com/en-us/azure/ai-services/openai/how-to/switching-endpoints#azure-openai-embeddings-multiple-input-support