Qdrant - Vector Database

Qdrant + LlamaIndex

У вас 50,000 документов разных форматов. Каждый день добавляются новые - и половина из них дубликаты. LangChain требует написать дедупликацию вручную. LlamaIndex даёт её из коробки плюс мощный ingestion pipeline. Разберём когда и почему это важно.

  • **Knowledge base с дедупликацией:** статьи из разных источников, часть пересекаются → IngestionPipeline автоматически пропустит уже индексированные
  • **Структурированная документация:** API docs + tutorials + FAQ → Summary Index по типам, Vector Index для семантического поиска
  • **Daily sync:** ежедневное обновление базы знаний из CMS → IngestionPipeline запускается по cron, обновляет только изменившиеся документы

Предварительные знания

  • Qdrant + LangChain

Установка и подключение QdrantVectorStore

**LlamaIndex** - фреймворк с акцентом на data ingestion, structured retrieval и агентов над данными. В отличие от LangChain, LlamaIndex думает в терминах «индекс над данными» - удобно когда структура данных важна. Интеграция с Qdrant: `llamaindex` + `@qdrant/js-client-rest`.

**StorageContext** в LlamaIndex - это ключевая абстракция. Он объединяет несколько хранилищ: `vectorStore` (Qdrant), `docStore` (хранение оригиналов документов), `indexStore` (метаданные индекса). Qdrant выступает как vectorStore, остальные по умолчанию - in-memory.

В чём роль StorageContext в LlamaIndex при работе с Qdrant?

VectorStoreIndex: запросы, фильтры и ingestion pipeline

**VectorStoreIndex** поддерживает два режима: создание из документов (`fromDocuments`) и подключение к существующей коллекции (`fromVectorStore`). После создания - `QueryEngine` с поддержкой метаданных-фильтрации и `IngestionPipeline` для продвинутой обработки.

**IngestionPipeline** автоматически дедуплицирует документы по хешу содержимого. Если повторно запустить pipeline с теми же документами - они не будут переиндексированы. Это делает его идеальным для scheduled jobs обновления базы знаний.

Вам нужно добавить новые документы в существующую Qdrant коллекцию через LlamaIndex без потери старых данных. Что использовать?

LlamaIndex vs LangChain: когда что использовать

**LangChain и LlamaIndex** решают похожие задачи но с разным фокусом. LangChain - универсальный фреймворк для LLM-цепочек и агентов. LlamaIndex - специализирован на data indexing и structured retrieval над сложными данными.

КритерийLangChainLlamaIndex
Основной фокусLLM цепочки и агентыData indexing и retrieval
Ingestion pipelineБазовый (TextSplitter)Продвинутый (IngestionPipeline с трансформациями)
Типы индексовТолько VectorStoreVector, Summary, Knowledge Graph, SQL
Дедупликация документовРучнаяАвтоматическая в IngestionPipeline
АгентыБогатая экосистемаОграниченная
Сложность APIУмереннаяВыше (больше концепций)
Hybrid Search в QdrantЧерез кастомный retrieverНативная поддержка

**Практический совет по выбору:** если вы уже используете LangChain в проекте - оставайтесь на нём, интеграция с Qdrant отличная. LlamaIndex стоит рассмотреть если: нужен IngestionPipeline с дедупликацией, работаете со сложной структурой документов, нужен Knowledge Graph поверх данных.

«LlamaIndex только для Python, LangChain для TypeScript»

Оба фреймворка имеют полноценные TypeScript версии с поддержкой Qdrant. Выбор - по возможностям, не по языку.

llamaindex npm пакет - нативный TypeScript. @langchain/qdrant - тоже TypeScript. Оба активно развиваются на обоих языках. Ключевые различия - в возможностях ingestion pipeline и типах индексов, а не в языке.

Ваш проект: ежедневно добавляются новые документы, часть - дубликаты. Нужен structured retrieval по типам документов. Что лучше подойдёт?

Ключевые идеи

  • **QdrantVectorStore + StorageContext** — точка входа: vectorStore для Qdrant, остальные хранилища по умолчанию in-memory
  • **VectorStoreIndex.fromVectorStore** — подключение к существующей коллекции без переиндексирования
  • **IngestionPipeline** — продвинутый ingestion: chunking, embeddings, дедупликация по хешу, кастомные трансформации
  • **Hybrid Search** — нативная поддержка dense+sparse через enableHybridSearch
  • **LlamaIndex vs LangChain:** LlamaIndex — data-first (indexing, ingestion); LangChain — chains & agents first

Что дальше

Теперь вы знаете оба major фреймворка. Следующий шаг - полноценный production RAG pipeline: chunking стратегии, reranking, мониторинг.

  • Production RAG Pipeline — Полный pipeline поверх LangChain/LlamaIndex + Qdrant с reranking и мониторингом
  • Hybrid Search — Понять как работает hybrid search который использует LlamaIndex
  • Qdrant + LangChain — Сравнение с предыдущим фреймворком для понимания trade-offs

Вопросы для размышления

  • IngestionPipeline дедуплицирует по хешу контента. Что произойдёт если документ изменился на 1 символ? Как это учесть в реальном проекте?
  • Вы используете LlamaIndex с Qdrant. Пользователи жалуются на медленный первый запрос после деплоя. В чём причина и как оптимизировать?
  • В чём принципиальное архитектурное отличие LlamaIndex StorageContext от LangChain VectorStore? Как это влияет на структуру кода?

Связанные уроки

  • ml-01-intro
Qdrant + LlamaIndex

0

1

Войти