From 2763d8cbe5c83caaad30e859d2117ce10ef341be Mon Sep 17 00:00:00 2001 From: Adrian Valente Date: Tue, 26 Mar 2024 17:53:10 +0100 Subject: [PATCH] community: add len() implementation to Chroma (#19419) Thank you for contributing to LangChain! - [x] **Add len() implementation to Chroma**: "package: community" - [x] **PR message**: - **Description:** add an implementation of the __len__() method for the Chroma vectostore, for convenience. - **Issue:** no exposed method to know the size of a Chroma vectorstore - **Dependencies:** None - **Twitter handle:** lowrank_adrian - [x] **Add tests and docs** - [x] **Lint and test** --------- Co-authored-by: Bagatur <22008038+baskaryan@users.noreply.github.com> --- libs/community/langchain_community/vectorstores/chroma.py | 4 ++++ .../tests/integration_tests/vectorstores/test_chroma.py | 1 + 2 files changed, 5 insertions(+) diff --git a/libs/community/langchain_community/vectorstores/chroma.py b/libs/community/langchain_community/vectorstores/chroma.py index 3bcb389cff5..7723285fafa 100644 --- a/libs/community/langchain_community/vectorstores/chroma.py +++ b/libs/community/langchain_community/vectorstores/chroma.py @@ -795,3 +795,7 @@ class Chroma(VectorStore): ids: List of ids to delete. """ self._collection.delete(ids=ids) + + def __len__(self) -> int: + """Count the number of documents in the collection.""" + return self._collection.count() diff --git a/libs/community/tests/integration_tests/vectorstores/test_chroma.py b/libs/community/tests/integration_tests/vectorstores/test_chroma.py index 58e9bcf454e..0a0cf529d08 100644 --- a/libs/community/tests/integration_tests/vectorstores/test_chroma.py +++ b/libs/community/tests/integration_tests/vectorstores/test_chroma.py @@ -21,6 +21,7 @@ def test_chroma() -> None: ) output = docsearch.similarity_search("foo", k=1) assert output == [Document(page_content="foo")] + assert len(docsearch) == 3 async def test_chroma_async() -> None: