text: are the three pieces together:1.2 Going Deeperâ€‹1.2.1 Integrationsâ€‹Document LoadersBrowse the > 120 data loader integrations here.See further documentation on loaders here.Document TransformersAll can ingest loaded Documents and process them (e.g., split).See further documentation on transformers here.VectorstoresBrowse the > 35 vectorstores integrations here.See further documentation on vectorstores here. 1.2.2 Retaining metadataâ€‹Context-aware splitters keep the location ("context") of each split in the original Document:Markdown filesCode (py or js)Documents2. Retrievalâ€‹2.1 Getting startedâ€‹Retrieve relevant splits for any question using similarity_search.question = "What are the approaches to Task Decomposition?"docs = vectorstore.similarity_search(question)len(docs)42.2 Going Deeperâ€‹2.2.1 Retrievalâ€‹Vectorstores are commonly used for retrieval.But, they are not the only option.For example, SVMs (see thread here) can also be used.LangChain has many retrievers including, but not limited to, vectorstores.All retrievers implement some common methods, such as get_relevant_documents().from langchain.retrievers import SVMRetrieversvm_retriever = SVMRetriever.from_documents(all_splits,OpenAIEmbeddings())docs_svm=svm_retriever.get_relevant_documents(question)len(docs)42.2.2 Advanced retrievalâ€‹Improve on similarity_search:MultiQueryRetriever generates variants of the input question to improve retrieval.Max marginal relevance selects for relevance and diversity among the retrieved documents.Documents can be filtered during retrieval using metadata filters.# MultiQueryRetrieverimport loggingfrom langchain.chat_models import ChatOpenAIfrom langchain.retrievers.multi_query import