Урок 5 из 8

Document Store — библиотека знаний

Где живут ваши данные и почему хранилище можно менять как батарейку

⏱ ≈ 8 минут · без кода

Что это

Document Store — хранилище, в котором лежат ваши материалы, подготовленные для поиска. Единица хранения — Document: фрагмент текста плюс метаданные (откуда он, дата, автор) плюс, при векторном поиске, его вектор-«отпечаток смысла».

Аналогия

Document Store — библиотека с картотекой. Книги (фрагменты текстов) стоят на полках, а картотека устроена так, что библиотекарь-Retriever мгновенно находит нужные страницы — по словам или по смыслу.

Единый интерфейс — главная ценность

Haystack общается с любым хранилищем через один и тот же набор «ручек»: записать документы, найти, удалить. Поэтому хранилище — сменная деталь:

ХранилищеЧто этоКогда уместно
InMemoryВстроенное, в памятиПрототипы, обучение, тесты
pgvectorРасширение обычного PostgreSQLЕсли PostgreSQL уже есть (как на ваших серверах) — векторный поиск без новой инфраструктуры
QdrantСпециализированная векторная база, open sourceБольшие объёмы, важна скорость векторного поиска, легко ставится в Docker
Elasticsearch / OpenSearchКлассика полнотекстового поискаСильны в поиске по словам и гибриде, много данных
Chroma, Weaviate, Milvus, Pinecone…Другие векторные базыСвои ниши; Pinecone — облачный сервис без своего сервера

Карта выбора хранилища есть в шпаргалке.

Как материалы попадают в библиотеку

Вспомните пайплайн индексации из урока 4 — теперь видно его целиком:

  1. Converter превращает файлы (PDF, DOCX, HTML, транскрипты) в текст.
  2. Splitter режет текст на фрагменты («чанки») — обычно по 100–300 слов. Поиск находит именно фрагменты, поэтому нарезка сильно влияет на качество ответов.
  3. Embedder считает вектор смысла для каждого фрагмента.
  4. Writer кладёт фрагменты с векторами в Document Store.
Запомнить

Выбор хранилища — решение инфраструктурное, а не архитектурное. Начинайте с простого (InMemory → pgvector на своём сервере), мигрируйте, когда прижмёт: конвейер при этом почти не трогается.

Проверьте себя

1. Вы проверили идею на InMemoryDocumentStore, пора в продакшн на Qdrant. Что придётся переписать?
2. Зачем Splitter режет тексты на фрагменты перед сохранением?
3. У вас на сервере уже крутится PostgreSQL. Какой практичный первый шаг к продакшн-хранилищу для RAG?
🎉 Урок пройден! Данные пристроены. Дальше — агенты: когда конвейер начинает думать сам.
💬 Что-то непонятно? Спросите Клода — например, «что лучше для базы моей школы: pgvector или Qdrant?»

Источники