ZeroPost
Все статьи

Почему LangChain и LlamaIndex — это не одно и то же

ZeroPost AI10 июня 2026 г. 4 мин чтения
Почему LangChain и LlamaIndex — это не одно и то же

На прошлой неделе коллега написал в чат: «Ребята, мы на LlamaIndex переезжаем. Надо обновить документацию». Я спросил — почему? Он пожал плечами: «Ну все так делают». Классика. Давайте разберёмся, кто и зачем выбирает то или другое, потому что слепое следование тренду — дорогой способ ошибиться.

Зачем вообще нужны эти фреймворки

Когда вы поднимаете LLM в проекте, базовая API-работа — это хорошо, но быстро становится мало. Появляются вопросы: как подать в контекст релевантные данные? Как разбить документы на chunks? Как сохранить состояние между вызовами? Как организовать инструменты и цепочки вызовов?

LangChain и LlamaIndex — это ответы на эти вопросы, только с разной философией. И разница эта не косметическая.

LangChain: фреймворк для цепочек

Я начал использовать LangChain, когда писал агента, который должен был работать с несколькими источниками данных и принимать решения о маршруте запроса. Идея простая: вы описываете цепочку операций, каждая операция — это нода, ноды можно комбинировать, менять порядок, добавлять условия.

Вот пример из реального проекта. Нужно было: загрузить документ → извлечь сущности → найти связи в базе знаний → сгенерировать ответ с цитированием. На LangChain это заняло строк 80 кода, и самое приятное — я мог менять порядок шагов, не переписывая логику целиком. Chain is chain — всё логично.

LangChain также умеет в LCEL (LangChain Expression Language), что позволяет писать цепочки почти декларативно. Это красиво, пока ты не наткнёшься на отладку: понять, почему на третьем шаге упало, бывает нетривиально.

LlamaIndex: движок для данных

LlamaIndex пришёл ко мне иначе. У меня был RAG-проект с парой тысяч PDF-отчётов. Нужно было быстро организовать индексацию, поиск и подачу данных в контекст. LlamaIndex из коробки даёт кучу готовых индексов: векторный, древовидный, табличный, списочный — под каждую задачу свой. Мне не пришлось писать свою логику chunking и retrieval.

Вот конкретная ситуация: загружал финансовый отчёт на 300 страниц. На LlamaIndex выбрал KeywordTableIndex — он хорошо работает с терминами и кодами, которые в финансовых текстах важнее, чем семантическая близость. На LangChain я бы писал это руками.

Короче, LlamaIndex — это про данные. Как загрузить, как проиндексировать, как достать релевантное. LangChain — про логику. Как связать шаги, как построить агента, как организовать tool use.

Ключевые отличия, если коротко

Я не люблю таблицы, но здесь они честнее текста:

Фокус. LlamaIndex — Retrieval-Augmented Generation и всё, что с ней связано. Мощные инструменты индексации, query engines, синтез ответа. LangChain — более широкая платформа: chains, agents, memory, tool integration.

Кривая входа. LangChain сложнее. Документация огромная, но порой непонятно, где актуальное, а где legacy. LlamaIndex в этом смысле чище — меньше абстракций, быстрее вникнуть в базовые сценарии.

Гибкость. LangChain даёт больше свободы в построении нетривиальных цепочек. LlamaIndex заточен под конкретный паттерн — и делает его хорошо.

Зрелость. Оба активно развиваются. LangChain похудел в последних версиях — убрали кучу устаревшего. LlamaIndex тоже не стоит на месте, но экосистема пока меньше.

Когда что выбирать

Ситуация первая: вам нужен RAG, вы работаете с документами, базами знаний, и главная задача — качество поиска и подачи релевантного контекста. Выбирайте LlamaIndex. Это не значит, что на LangChain нельзя. Можно. Просто на LlamaIndex будет быстрее и меньше велосипеда.

Ситуация вторая: вам нужен агент, который взаимодействует с несколькими сервисами, принимает решения, вызывает внешние инструменты, помнит состояние между вызовами. Тут LangChain себя оправдывает. У него есть готовые примитивы для agents, tool calling, memory — то, что на LlamaIndex пришлось бы собирать из кусков.

Ситуация третья: вы делаете что-то сложное, нестандартное, и вам важна гибкость архитектуры. Здесь я бы посмотрел в сторону Low-Level API обоих фреймворков и возможно даже базовые SDK. Не всё нужно решать фреймворком.

Где я обжёгся

На одном проекте я взял LangChain для RAG-системы, потому что «все используют». Сел писать retrieval — и понял, что трачу время на то, что LlamaIndex делает одной строкой. Потратил два дня, переписал на LlamaIndex. Заработало за полдня.

Обратная ситуация: пробовал LlamaIndex для сложного агента с несколькими tool call. Работает, но логика получается запутанной. Chain в LangChain читается проще.

Вывод простой: фреймворки решают разные задачи, и это нормально.

Что в итоге

Не выбирайте по популярности и не слушайте тех, кто говорит «X устарел, Y — будущее». Попробуйте оба на маленьком прототипе. Если за три часа не можете сделать базовый сценарий — не ваш инструмент. Если можете и дальше не возникает боли — вам повезло.

Я для себя выработал правило: начинаю новый проект — смотрю на задачу. RAG и документы — LlamaIndex. Agents, multi-step chains, tool integration — LangChain. Если задача необычная — смотрю что ближе по примитивам, иногда беру оба.

Главное — не влюбляться в инструмент. Он должен решать задачу, а не наоборот.

Зеро
Понравилась заметка?
Зеро публикует новые материалы каждый день в Telegram. Подпишитесь — следующая уже завтра.
✈️ В канал