f documents (HTML, PDF, code) from
all types of locations (private S3 buckets, public websites).

**[ Text Splitting ](/docs/modules/data_connection/document_transformers/) **

A key part of retrieval is fetching only the relevant parts of documents. This
involves several transformation steps to prepare the documents for retrieval.
One of the primary ones here is splitting (or chunking) a large document into
smaller chunks. LangChain provides several transformation algorithms for doing
this, as well as logic optimized for specific document types (code, markdown,
etc).

**[ Text embedding models ](/docs/modules/data_connection/text_embedding/) **

Another key part of retrieval is creating embeddings for documents. Embeddings
capture the semantic meaning of the text, allowing you to quickly and
efficiently find other pieces of a text that are similar. LangChain provides
integrations with over 25 different embedding providers and methods, from
open-source to proprietary API, allowing you to choose the one best suited for
your needs. LangChain provides a standard interface, allowing you to easily
swap between models.

**[ Vector stores ](/docs/modules/data_connection/vectorstores/) **

With the rise of embeddings, there has emerged a need for databases to support
efficient storage and searching of these embeddings. LangChain provides
integrations with over 50 different vectorstores, from open-source local ones
to cloud-hosted proprietary ones, allowing you to choose the one best suited
for your needs. LangChain exposes a standard interface, allowing you to easily
swap between vector stores.

**[ Retrievers ](/docs/modules/data_connection/retrievers/) **

Once the data is in the database, you still need to retrieve it. LangChain
supports many different retrieval algorithms and is one of the places where we
add the most value. LangChain supports basic methods that are easy to get
started - namely simple semantic search. However, we have also added a
collection of algorithms on top of this to increase performance. These
include:

  * [ Parent Document Retriever ](/docs/modules/data_connection/retrievers/parent_document_retriever) : This allows you to create multiple embeddings per parent document, allowing you to look up smaller chunks but return larger context. 
  * [ Self Query Retriever ](/docs/modules/data_connection/retrievers/self_query) : User questions often contain a reference to something that isn't just semantic but rather expresses some logic that can best be represented as a metadata filter. Self-query allows you to parse out the _semantic_ part of a query from other _metadata filters_ present in the query. 
  * [ Ensemble Retriever ](/docs/modules/data_connection/retrievers/ensemble) : Sometimes you may want to retrieve documents from multiple different sources, or using multiple different algorithms. The ensemble retriever allows you to easily do this. 
  * And more! 

**[ Indexing ](/docs/modules/data_connection/indexing) **

The LangChain **Indexing API** syncs your data from any source into a vector
store, helping you:

  * Avoid writing duplicated content into the vector store 
  * Avoid re-writing unchanged content 
  * Avoid re-computing embeddings over unchanged content 

All of which should save you time and money, as well as improve your vector
search results.

* * *

####  Help us out by providing feedback on this documentation page:

[ Previous  YAML parser  ](/docs/modules/model_io/output_parsers/types/yaml) [
Next  Document loaders  ](/docs/modules/data_connection/document_loaders/)

Community

  * [ Discord  ](https://discord.gg/cU2adEyC7w)
  * [ Twitter  ](https://twitter.com/LangChainAI)

GitHub

  * [ Python  ](https://github.com/langchain-ai/langchain)
  * [ JS/TS  ](https://github.com/langchain-ai/langchainjs)

More

  * [ Homepage  ](https://langchain.com)
  * [ Blog  ](https://blog.langchain.dev)
  * [ YouTube  ](https://www.youtube.com/@LangChain)

Copyright © 2024 LangChain, Inc.