namespace (Optional[str]): namespace (aka keyspace) where the
              collection is created. Defaults to the database's "default namespace".
          metric (Optional[str]): similarity function to use out of those
              available in Astra DB. If left out, it will use Astra DB API's
              defaults (i.e. "cosine" - but, for performance reasons,
              "dot_product" is suggested if embeddings are normalized to one).
      Advanced arguments (coming with sensible defaults):
          batch_size (Optional[int]): Size of batches for bulk insertions.
          bulk_insert_batch_concurrency (Optional[int]): Number of threads
              to insert batches concurrently.
          bulk_insert_overwrite_concurrency (Optional[int]): Number of
              threads in a batch to insert pre-existing entries.
          bulk_delete_concurrency (Optional[int]): Number of threads
              (for deleting multiple rows concurrently).
          pre_delete_collection (Optional[bool]): whether to delete the collection
              before creating it. If False and the collection already exists,
              the collection will be used as is.
      A note on concurrency: as a rule of thumb, on a typical client machine
      it is suggested to keep the quantity
          bulk_insert_batch_concurrency * bulk_insert_overwrite_concurrency
      much below 1000 to avoid exhausting the client multithreading/networking
      resources. The hardcoded defaults are somewhat conservative to meet
      most machines' specs, but a sensible choice to test may be:
          bulk_insert_batch_concurrency = 80
          bulk_insert_overwrite_concurrency = 10
      A bit of experimentation is required to nail the best results here,
      depending on both the machine/network specs and the expected workload
      (specifically, how often a write is an update of an existing id).
      Remember you can pass concurrency settings to individual calls to