forked from chroma-core/chroma
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[BUG] 1965 Split up embedding functions - Redux (chroma-core#2395)
## Description of changes The original attempt to split up the embedding functions failed because of python 3.9 and 3.10 incompatibilities with `issubtype`. Original PR here: chroma-core#2034 Failing tests here: https://github.com/chroma-core/chroma/actions/runs/9605053108/job/26491923410 The fix is changing `issubtype` to `isinstance`, which has the same functionality. ## Test plan Along with CI, tested locally with python 3.9 and 3.10 and confirmed passing. ## Documentation Changes N/A
- Loading branch information
Showing
19 changed files
with
1,240 additions
and
1,035 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,53 @@ | ||
from chromadb.utils import embedding_functions | ||
from chromadb.api.types import EmbeddingFunction | ||
|
||
|
||
def test_get_builtins_holds() -> None: | ||
""" | ||
Ensure that `get_builtins` is consistent after the ef migration. | ||
This test is intended to be temporary until the ef migration is complete as | ||
these expected builtins are likely to grow as long as users add new | ||
embedding functions. | ||
REMOVE ME ON THE NEXT EF ADDITION | ||
""" | ||
expected_builtins = { | ||
"AmazonBedrockEmbeddingFunction", | ||
"CohereEmbeddingFunction", | ||
"GoogleGenerativeAiEmbeddingFunction", | ||
"GooglePalmEmbeddingFunction", | ||
"GoogleVertexEmbeddingFunction", | ||
"HuggingFaceEmbeddingFunction", | ||
"HuggingFaceEmbeddingServer", | ||
"InstructorEmbeddingFunction", | ||
"JinaEmbeddingFunction", | ||
"ONNXMiniLM_L6_V2", | ||
"OllamaEmbeddingFunction", | ||
"OpenAIEmbeddingFunction", | ||
"OpenCLIPEmbeddingFunction", | ||
"RoboflowEmbeddingFunction", | ||
"SentenceTransformerEmbeddingFunction", | ||
"Text2VecEmbeddingFunction", | ||
"ChromaLangchainEmbeddingFunction", | ||
} | ||
|
||
assert expected_builtins == embedding_functions.get_builtins() | ||
|
||
|
||
def test_default_ef_exists() -> None: | ||
assert hasattr(embedding_functions, "DefaultEmbeddingFunction") | ||
default_ef = embedding_functions.DefaultEmbeddingFunction() | ||
|
||
assert default_ef is not None | ||
assert isinstance(default_ef, EmbeddingFunction) | ||
|
||
|
||
def test_ef_imports() -> None: | ||
for ef in embedding_functions.get_builtins(): | ||
# Langchain embedding function is a special snowflake | ||
if ef == "ChromaLangchainEmbeddingFunction": | ||
continue | ||
assert hasattr(embedding_functions, ef) | ||
assert isinstance(getattr(embedding_functions, ef), type) | ||
assert issubclass(getattr(embedding_functions, ef), EmbeddingFunction) |
Oops, something went wrong.