ChromaStorage
BaseVectorStorage for interacting with
ChromaDB, a vector database for embeddings.
ChromaDB is an open-source AI-native vector database focused on developer
productivity and happiness. The detailed information about ChromaDB is
available at: ChromaDB <https://docs.trychroma.com/>_
This class provides multiple ways to connect to ChromaDB instances:
- Ephemeral (in-memory for testing/prototyping)
- Persistent (local file storage)
- HTTP (remote ChromaDB server)
- Cloud (ChromaDB Cloud - future support)
- vector_dim (int): The dimension of storing vectors.
- collection_name (Optional[str], optional): Name for the collection in ChromaDB. If not provided, auto-generated with timestamp. (default: :obj:
None) - client_type (
Literal["ephemeral", "persistent", "http", "cloud"]): Type of ChromaDB client to use. Supported types: ‘ephemeral’, ‘persistent’, ‘http’, ‘cloud’. (default: :obj:"ephemeral") # Persistent client parameters - path (Optional[str], optional): Path to directory for persistent storage. Only used when client_type=‘persistent’. (default: :obj:
"./chroma") # HTTP client parameters - host (str, optional): Host for remote ChromaDB server. (default: :obj:
"localhost") - port (int, optional): Port for remote ChromaDB server. (default: :obj:
8000) - ssl (bool, optional): Whether to use SSL for HTTP connections. (default: :obj:
False) - headers (Optional[Dict[str, str]], optional): Additional headers for HTTP client requests. (default: :obj:
None) # Cloud client parameters - api_key (Optional[str], optional): API key for ChromaDB Cloud. (default: :obj:
None) - cloud_host (str, optional): ChromaDB Cloud host. (default: :obj:
"api.trychroma.com") - cloud_port (int, optional): ChromaDB Cloud port. (default: :obj:
8000) - enable_ssl (bool, optional): Whether to enable SSL for cloud connection.(default: :obj:
True) # Common parameters for all client types - settings (Optional[Any], optional): ChromaDB settings object for advanced configuration. (default: :obj:
None) - tenant (Optional[str], optional): Tenant name for multi-tenancy support. (default: :obj:
None) - database (Optional[str], optional): Database name for multi-database support. (default: :obj:
None) - distance (VectorDistance, optional): The distance metric for vector comparison. (default: :obj:
VectorDistance.COSINE) - delete_collection_on_del (bool, optional): Flag to determine if the collection should be deleted upon object destruction. (default: :obj:
False)
init
del
delete_collection_on_del is set to
:obj:True.
_validate_client_type
- client_type (
Literal["ephemeral", "persistent", "http", "cloud"]): The client type to validate.
_validate_client_config
_get_connection_client
_create_ephemeral_client
_create_persistent_client
_create_http_client
_create_cloud_client
_get_common_client_kwargs
_generate_collection_name
_get_distance_function
_get_or_create_collection
add
- records (List[VectorRecord]): List of vector records to be saved. **kwargs (Any): Additional keyword arguments for ChromaDB add operation.
delete
- ids (List[str]): List of unique identifiers for the vectors to be deleted. **kwargs (Any): Additional keyword arguments for ChromaDB delete operation.
status
query
- query (VectorDBQuery): The query object containing the search vector and the number of top similar vectors to retrieve. **kwargs (Any): Additional keyword arguments for ChromaDB query operation.
_distance_to_similarity
- distance (float): Distance value from ChromaDB.