dify icon indicating copy to clipboard operation
dify copied to clipboard

add support for AWS bedrock Cohere embeddings.

Open kerlion opened this issue 1 year ago • 2 comments

Description

add support for AWS bedrock Cohere embeddings.

Fixes # (issue)

Type of Change

Please delete options that are not relevant.

  • [x] New feature (non-breaking change which adds functionality)

How Has This Been Tested?

Please describe the tests that you ran to verify your changes. Provide instructions so we can reproduce. Please also list any relevant details for your test configuration

  • [ ] TODO

Suggested Checklist:

  • [x] I have performed a self-review of my own code
  • [x] I have commented my code, particularly in hard-to-understand areas
  • [x] My changes generate no new warnings
  • [x] I ran `dev/reformat backend to appease the lint gods
  • [x] optional I have tested it in my test docker env.

kerlion avatar Apr 12 '24 13:04 kerlion

Please run ./dev/reformat in root dir to make sure there are no lint errors.

crazywoola avatar Apr 12 '24 14:04 crazywoola

Hi there, thanks so much for the PR - I've tested the embedding and got the following error message:

[2024-04-12 17:03:51,589: ERROR/MainProcess] consume document failed
Traceback (most recent call last):
  File "/Users/guchenhe/Desktop/werk/projects/dify/api/core/model_runtime/model_providers/__base/text_embedding_model.py", line 31, in invoke
    return self._invoke(model, credentials, texts, user)
  File "/Users/guchenhe/Desktop/werk/projects/dify/api/core/model_runtime/model_providers/bedrock/text_embedding/text_embedding.py", line 76, in _invoke
    raise ValueError(f"Got unknown model prefix {model_prefix} when handling block response")
ValueError: Got unknown model prefix cohere when handling block response

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/guchenhe/Desktop/werk/projects/dify/api/core/indexing_runner.py", line 73, in run
    self._load(
  File "/Users/guchenhe/Desktop/werk/projects/dify/api/core/indexing_runner.py", line 677, in _load
    tokens += future.result()
  File "/Users/guchenhe/.pyenv/versions/3.10.10/lib/python3.10/concurrent/futures/_base.py", line 458, in result
    return self.__get_result()
  File "/Users/guchenhe/.pyenv/versions/3.10.10/lib/python3.10/concurrent/futures/_base.py", line 403, in __get_result
    raise self._exception
  File "/Users/guchenhe/.pyenv/versions/3.10.10/lib/python3.10/concurrent/futures/thread.py", line 58, in run
    result = self.fn(*self.args, **self.kwargs)
  File "/Users/guchenhe/Desktop/werk/projects/dify/api/core/indexing_runner.py", line 732, in _process_chunk
    index_processor.load(dataset, chunk_documents, with_keywords=False)
  File "/Users/guchenhe/Desktop/werk/projects/dify/api/core/rag/index_processor/processor/paragraph_index_processor.py", line 60, in load
    vector.create(documents)
  File "/Users/guchenhe/Desktop/werk/projects/dify/api/core/rag/datasource/vdb/vector_factory.py", line 121, in create
    embeddings = self._embeddings.embed_documents([document.page_content for document in texts])
  File "/Users/guchenhe/Desktop/werk/projects/dify/api/core/embedding/cached_embedding.py", line 82, in embed_documents
    raise ex
  File "/Users/guchenhe/Desktop/werk/projects/dify/api/core/embedding/cached_embedding.py", line 51, in embed_documents
    embedding_result = self._model_instance.invoke_text_embedding(
  File "/Users/guchenhe/Desktop/werk/projects/dify/api/core/model_manager.py", line 95, in invoke_text_embedding
    return self.model_type_instance.invoke(
  File "/Users/guchenhe/Desktop/werk/projects/dify/api/core/model_runtime/model_providers/__base/text_embedding_model.py", line 33, in invoke
    raise self._transform_invoke_error(e)
core.model_runtime.errors.invoke.InvokeError: [bedrock] Error: Got unknown model prefix cohere when handling block response

with cohere.embed-english-v3 embedding selected from bedrock. Would you take a look into this?

guchenhe avatar Apr 12 '24 17:04 guchenhe

Closed it due to missed 2 files. I will add a new PR in a branch.

kerlion avatar Apr 13 '24 06:04 kerlion