class_docstr: Wrapper around ChromaDB embeddings platform.
  
  To use, you should have the ``chromamigdb`` python package installed.
  
  Example:
      .. code-block:: python
  
              from langchain.vectorstores import Chroma
              from langchain.embeddings.openai import OpenAIEmbeddings
  
              embeddings = OpenAIEmbeddings()
              vectorstore = Chroma("langchain_store", embeddings)
docstr: Run more texts through the embeddings and add to the vectorstore.
  
  Args:
      texts (Iterable[str]): Texts to add to the vectorstore.
      metadatas (Optional[List[dict]], optional): Optional list of metadatas.
      ids (Optional[List[str]], optional): Optional list of IDs.
  
  Returns:
      List[str]: List of IDs of the added texts.
docstr_tok: ["Run","more","texts","through","the","embeddings","and","add","to","the","vectorstore",".","Args",":","texts","(","Iterable","[","str","]",")",":","Texts","to","add","to","the","vectorstore",".","metadatas","(","Optional","[","List","[","dict","]","]",",","optional",")",":","Optional","list","of","metadatas",".","ids","(","Optional","[","List","[","str","]","]",",","optional",")",":","Optional","list","of","IDs",".","Returns",":","List","[","str","]",":","List","of","IDs","of","the","added","texts","."]
code: def add_texts(
      self,
      texts: Iterable[str],
      metadatas: Optional[List[dict]] = None,
      ids: Optional[List[str]] = None,
      **kwargs: Any,
  ) -> List[str]:
      """Run more texts through the embeddings and add to the vectorstore.
  
      Args:
          texts (Iterable[str]): Texts to add to the vectorstore.
          metadatas (Optional[List[dict]], optional): Optional list of metadatas.
          ids (Optional[List[str]], optional): Optional list of IDs.
  
      Returns:
          List[str]: List of IDs of the added texts.
      """
      # TODO: Handle the case where the user doesn't provide ids on the Collection
      if ids is None:
          ids = [str(uuid.uuid1()) for _ in texts]
      embeddings = None
      texts = list(texts)
      if self._embedding_function is not None:
          embeddings = self._embedding_function.embed_documents(texts)
      if metadatas:
          # fill metadatas with empty dicts if somebody
          # did not specify metadata for all texts
          length_diff = len(texts) - len(metadatas)
          if length_diff:
              metadatas = metadatas + [{}] * length_diff
          empty_ids = []
          non_empty_ids = []
          for idx, m in enumerate(metadatas):
              if m:
                  non_empty_ids.append(idx)
              else:
                  empty_ids.append(idx)
          if non_empty_ids:
              metadatas = [metadatas[idx] for idx in non_empty_ids]
              texts_with_metadatas = [
                  texts[idx] for idx in non_empty_ids
              ]
              embeddings_with_metadatas = (
                  [embeddings[idx] for idx in non_empty_ids]
                  if embeddings
                  else None
              )
              ids_with_metadata = [ids[idx] for idx in non_empty_ids]
              self._collection.upsert(
                  metadatas=metadatas,
                  embeddings=embeddings_with_metadatas,
                  documents=texts_with_metadatas,
                  ids=ids_with_metadata,
              )
          if empty_ids:
              texts_without_metadatas = [texts[j] for j in empty_ids]
              embeddings_without_metadatas = (
                  [embeddings[j] for j in empty_ids]
                  if embeddings
                  else None
              )
              ids_without_metadatas = [ids[j] for j in empty_ids]
              self._collection.upsert(
                  embeddings=embeddings_without_metadatas,
                  documents=texts_without_metadatas,
                  ids=ids_without_metadatas,
              )
      else:
          self._collection.upsert(
              embeddings=embeddings,
              documents=texts,
              ids=ids,
          )
      return ids
  
imports: from __future__ import annotations
  import logging
  import uuid
  from typing import TYPE_CHECKING, Any, Callable, Dict, Iterable, List, Optional, Tuple, Type
  import numpy
  from langchain.docstore.document import Document
  from langchain.embeddings.base import Embeddings
  from langchain.utils import xor_args
  from langchain.vectorstores.base import VectorStore
  from langchain.vectorstores.utils import maximal_marginal_relevance
label_desc: Use image node_id 4 for calling the ChromaMig obj's underlying member method code with example usage: obj.add_texts(texts, metadatas, ids) and returns: ids