Skip to content

Writing Custom Modules#

A core design principle of LlamaIndex is that almost every core module can be subclassed and customized.

This allows you to use LlamaIndex for any advanced LLM use case, beyond the capabilities offered by our prepackaged modules. You're free to write as much custom code for any given module, but still take advantage of our lower-level abstractions and also plug this module along with other components.

We offer convenient/guided ways to subclass our modules, letting you write your custom logic without having to worry about having to define all boilerplate (for instance, callbacks).

This guide centralizes all the resources around writing custom modules in LlamaIndex. Check them out below 👇

Custom LLMs#

Custom Embeddings#

Custom Output Parsers#

Custom Transformations#

Custom Retrievers#

Custom Postprocessors/Rerankers#

Custom Query Engines#

Custom Agents#

Custom Query Components (for use in Query Pipeline)#

Other Ways of Customization#

Some modules can be customized heavily within your workflows but not through subclassing (and instead through parameters or functions we expose). We list these in guides below: