-
Notifications
You must be signed in to change notification settings - Fork 1.9k
Description
What happened?
As a chromadb user, when I use Azure Open AI, I want to be able to use my embedding funciton with collection creation but currently it does not let me specify azure_deployment so it throws DeploymentNotFound exception (see logs):
my_azure_openai_ef= embedding_functions.OpenAIEmbeddingFunction(
api_key=OPEN_AI_API_KEY,
model_name="text-embedding-ada-002",
api_base="https://my_azure_open_ai_endpoint.openai.azure.com",
api_type="azure",
api_version="2023-05-15",
)
`client.get_or_create_collection("my_collection", embedding_function=my_azure_openai_ef)`
In embedding_functions.py there is a code execution path that gets triggered when api_type="azure"
self._client = openai.AzureOpenAI(
api_key=api_key,
api_version=api_version,
azure_endpoint=api_base,
default_headers=default_headers,
).embeddings
The issue is that it is missing azure_deployment="your_deployment_name_here"
Whithout it my azure deployment cannot be reached.
See attached log for more details
To test it I have this setup:
client = AzureOpenAI(
api_key=OPEN_AI_API_KEY,
azure_endpoint="https://my_azure_open_ai_endpoint.openai.azure.com",
azure_deployment="my_azure_open_ai_deployment",
api_version="2023-05-15")
def text_embedding(text):
response = client.embeddings.create(model="text-embedding-ada-002", input=[text])
return response.data[0].embedding
When I skip azure_deployment="my_azure_open_ai_deployment", my text embedding function throws not found exception. Azure Open AI endpoints need the deployment name in order for it to work.
See https://github.com/openai/openai-python?tab=readme-ov-file#microsoft-azure-openai for more details
Also can you update docs to include link to api versioning in Azure:
https://learn.microsoft.com/en-us/azure/ai-services/openai/reference#rest-api-versioning
Versions
ChromaDB 0.4.21, Python 3.11.5
Relevant log output
Cell In[2], line 14
13 def text_embedding(text):
---> 14 response = client.embeddings.create(model="text-embedding-ada-002", input=[text])
15 return response.data[0].embedding
File c:\Python\Lib\site-packages\openai\resources\embeddings.py:113, in Embeddings.create(self, input, model, dimensions, encoding_format, user, extra_headers, extra_query, extra_body, timeout)
107 embedding.embedding = np.frombuffer( # type: ignore[no-untyped-call]
108 base64.b64decode(data), dtype="float32"
109 ).tolist()
111 return obj
--> 113 return self._post(
114 "/embeddings",
115 body=maybe_transform(params, embedding_create_params.EmbeddingCreateParams),
116 options=make_request_options(
...
(...)
987 stream_cls=stream_cls,
988 )
Error code: 404 - {'error': {'code': 'DeploymentNotFound', 'message': 'The API deployment for this resource does not exist. If you created the deployment within the last 5 minutes, please wait a moment and try again.'}}