text: chain_type="stuff",    retriever=db.as_retriever(),)query = "What did the president say about Ketanji Brown Jackson"qa.run(query)Attribute based filtering in metadataâ€‹Let's create another vector store containing metadata with the year the documents were created.import randomfor d in docs:    d.metadata["year"] = random.randint(2012, 2014)db = DeepLake.from_documents(    docs, embeddings, dataset_path="./my_deeplake/", overwrite=True)db.similarity_search(    "What did the president say about Ketanji Brown Jackson",    filter={"metadata": {"year": 2013}},)Choosing distance functionâ€‹Distance function L2 for Euclidean, L1 for Nuclear, Max l-infinity distance, cos for cosine similarity, dot for dot product db.similarity_search(    "What did the president say about Ketanji Brown Jackson?", distance_metric="cos")Maximal Marginal relevanceâ€‹Using maximal marginal relevancedb.max_marginal_relevance_search(    "What did the president say about Ketanji Brown Jackson?")Delete datasetâ€‹db.delete_dataset()    and if delete fails you can also force deleteDeepLake.force_delete_by_path("./my_deeplake")    Deep Lake datasets on cloud (Activeloop, AWS, GCS, etc.) or in memoryâ€‹By default, Deep Lake datasets are stored locally. To store them in memory, in the Deep Lake Managed DB, or in any object storage, you can provide the corresponding path and credentials when creating the vector store. Some paths require registration with Activeloop and creation of an API token that can be retrieved hereos.environ["ACTIVELOOP_TOKEN"] = activeloop_token# Embed and store the textsusername = "<username>"