## Components

LangChain provides standard, extendable interfaces and external integrations for the following main components:

## [Model I/O](https://python.langchain.com/docs/modules/model_io/)[​](#model-io "Direct link to model-io")

Formatting and managing language model input and output

### [Prompts](https://python.langchain.com/docs/modules/model_io/prompts/)[​](#prompts "Direct link to prompts")

Formatting for LLM inputs that guide generation

### [Chat models](https://python.langchain.com/docs/modules/model_io/chat/)[​](#chat-models "Direct link to chat-models")

Interfaces for language models that use chat messages as inputs and returns chat messages as outputs (as opposed to using plain text).

### [LLMs](https://python.langchain.com/docs/modules/model_io/llms/)[​](#llms "Direct link to llms")

Interfaces for language models that use plain text as input and output

## [Retrieval](https://python.langchain.com/docs/modules/data_connection/)[​](#retrieval "Direct link to retrieval")

Interface with application-specific data for e.g. RAG

### [Document loaders](https://python.langchain.com/docs/modules/data_connection/document_loaders/)[​](#document-loaders "Direct link to document-loaders")

Load data from a source as `Documents` for later processing

### [Text splitters](https://python.langchain.com/docs/modules/data_connection/document_transformers/)[​](#text-splitters "Direct link to text-splitters")

Transform source documents to better suit your application

### [Embedding models](https://python.langchain.com/docs/modules/data_connection/text_embedding/)[​](#embedding-models "Direct link to embedding-models")

Create vector representations of a piece of text, allowing for natural language search

### [Vectorstores](https://python.langchain.com/docs/modules/data_connection/vectorstores/)[​](#vectorstores "Direct link to vectorstores")

Interfaces for specialized databases that can search over unstructured data with natural language

### [Retrievers](https://python.langchain.com/docs/modules/data_connection/retrievers/)[​](#retrievers "Direct link to retrievers")

More generic interfaces that return documents given an unstructured query

## [Composition](https://python.langchain.com/docs/modules/composition/)[​](#composition "Direct link to composition")

Higher-level components that combine other arbitrary systems and/or or LangChain primitives together

### [Tools](https://python.langchain.com/docs/modules/tools/)[​](#tools "Direct link to tools")

Interfaces that allow an LLM to interact with external systems

### [Agents](https://python.langchain.com/docs/modules/agents/)[​](#agents "Direct link to agents")

Constructs that choose which tools to use given high-level directives

### [Chains](https://python.langchain.com/docs/modules/chains/)[​](#chains "Direct link to chains")

Building block-style compositions of other runnables

## Additional[​](#additional "Direct link to Additional")

### [Memory](https://python.langchain.com/docs/modules/memory/)[​](#memory "Direct link to memory")

Persist application state between runs of a chain

### [Callbacks](https://python.langchain.com/docs/modules/callbacks/)[​](#callbacks "Direct link to callbacks")

Log and stream intermediate steps of any chain