LlamaIndex
LlamaIndex — это фреймворк с открытым исходным кодом для загрузки, индексации и поиска по закрытым данным для LLM; на его основе создают конвейеры RAG и агентов для работы с документами.
LlamaIndex — это фреймворк с открытым исходным кодом для подключения крупных языковых моделей (LLM) к закрытым данным: он загружает документы, базы данных и API, индексирует их содержимое и извлекает фрагменты, необходимые модели для ответа. В большинстве созданных с его помощью приложений используется генерация с дополненной поиском выдачей (RAG), например в помощниках, отвечающих по руководствам, договорам или заявкам компании, и в ИИ-агентах, которые читают документы и выполняют действия на их основе. Джерри Лю выпустил проект под названием GPT Index в ноябре 2022 года, а в феврале 2023 года переименовал его в LlamaIndex. Фреймворк LlamaIndex доступен для Python и TypeScript. Компания также поддерживает LlamaParse — размещённый сервис, который преобразует сложные PDF-файлы, таблицы и слайды в текст, удобный для индексирования.
Как работает LlamaIndex#
Приложение LlamaIndex работает в два этапа. Загрузка данных выполняется при каждом их обновлении: коннекторы LlamaHub загружают файлы и данные из сервисов в виде объектов Document, синтаксический анализатор узлов разбивает каждый объект на фрагменты, называемые узлами, а модель эмбеддингов преобразует каждый узел в вектор — его эмбеддинг, который сохраняется в индексе. Обработка запроса выполняется для каждого вопроса: средство поиска находит узлы, наиболее близкие к вопросу, постпроцессоры, например переранжировщик, меняют их порядок или отфильтровывают их, а механизм формирования ответа помещает оставшиеся узлы в контекстное окно LLM с инструкцией отвечать на их основе.
VectorStoreIndex — стандартный вариант: он хранит эмбеддинги в памяти или во внешней векторной базе данных. Другие индексы отправляют модели каждый фрагмент для составления краткого пересказа, строят граф знаний сущностей и отношений для запросов в стиле GraphRAG или выполняют поиск по ключевым словам. Механизм запросов отвечает на один вопрос, механизм чата поддерживает диалог, а Workflows — слой оркестрации LlamaIndex, управляемый событиями, — связывает поиск, инструменты и несколько агентов в системы агентной RAG, которые решают, что и когда искать.
Индексирование изображений по содержимому#
Поиск применим к любому содержимому, которое можно представить в виде текста. Запуск Ultralytics YOLO26 на коллекции фотографий превращает каждое изображение в описание, доступное для поиска: Results.verbose() возвращает краткую строку с числом объектов каждого класса из результата режима predict. Эта строка становится Document, метаданные которого сохраняют URL изображения. Затем локальная модель эмбеддингов от Hugging Face позволяет выполнять поиск по индексу без ключа API:
from llama_index.core import Document, Settings, VectorStoreIndex
from llama_index.embeddings.huggingface import HuggingFaceEmbedding
from ultralytics import YOLO
Settings.embed_model = HuggingFaceEmbedding(model_name="BAAI/bge-small-en-v1.5")
model = YOLO("yolo26n.pt")
# Describe each image by its detections; the URL stays in metadata and out of the embedding
docs = []
for url in ["https://ultralytics.com/images/bus.jpg", "https://ultralytics.com/images/zidane.jpg"]:
results = model(url)
text = f"A photo containing {results[0].verbose()}"
docs.append(Document(text=text, metadata={"image": url}, excluded_embed_metadata_keys=["image"]))
# Index the descriptions, then retrieve the image that best matches a question
index = VectorStoreIndex.from_documents(docs)
retriever = index.as_retriever(similarity_top_k=1)
nodes = retriever.retrieve("Which photo shows a bus?")
print(nodes[0].node.metadata["image"], round(nodes[0].score, 3))Средство поиска возвращает изображение автобуса с оценкой косинусного сходства, найденное по описанию детектора, а не по имени файла. Добавление механизма формирования ответа позволяет отвечать текстом на вопросы о коллекции. Именно по такому принципу работают системы мультимодальной RAG, объединяющие компьютерное зрение с поиском по документам.
LlamaIndex и смежные инструменты#
- LangChain: универсальный фреймворк для приложений и агентов на базе LLM с широким набором интеграций. Сейчас оба проекта поддерживают поиск и работу с агентами; LlamaIndex предлагает более широкие возможности для загрузки данных, синтаксического анализа и типов индексов, а команды часто используют его средства поиска в агентах LangChain или LangGraph.
- Векторные базы данных: хранят векторы и выполняют векторный поиск. LlamaIndex работает поверх этих баз и определяет, как анализировать документы, разбивать их на фрагменты, создавать эмбеддинги, выполнять поиск и передавать результаты модели. В качестве серверных хранилищ он поддерживает десятки векторных баз данных.
- Семантический поиск: только этап поиска. LlamaIndex добавляет генерацию, поэтому вместо обычных результатов пользователь получает ответ с приложенными исходными узлами для ссылок на источники.










