Головна▸Статті▸NLP та LLM у продакшні

Системи RAG

Побудова систем Retrieval-Augmented Generation - векторні бази даних, стратегії чанкінгу, якість ретривалу та продакшн-архітектура.

mysimulator teamОновлено 2026-01≈ 5 хв читання▶ Open the simulation

RAG поєднує потужність LLM з ретривалом зовнішніх знань. Замість покладання лише на те, що модель вивчила під час тренування, RAG отримує релевантні документи та включає їх у промпт. Це зменшує галюцинації та дозволяє працювати з приватною або актуальною інформацією.

Де це використовується

RAG забезпечує knowledge-intensive додатки в різних галузях:

Продукти: Perplexity, Bing Chat, корпоративні копілоти, асистенти документації.

Типові дані

Аспект Типові значення
Корпус документів 1K-10M документів
Розмір чанку 200-2,000 токенів
Top-K ретривал 3-20 чанків
Розмірність ембедингу 384-3,072
Розмір векторного індексу 100K-100M векторів

Типи документів: - PDF, Word, HTML, Markdown - Структуровані дані (таблиці, CSV) - Репозиторії коду - Логи розмов - Зображення з описами (мультимодальні)

Що ви робите на практиці

  1. Визначте scope - На які питання система має відповідати?
  2. Зберіть документи - Зберіть усі релевантні джерела знань
  3. Чанкіть документи - Розбийте на частини для ретривалу
  4. Згенеруйте ембединги - Створіть векторні репрезентації
  5. Побудуйте індекс - Збережіть вектори в базі для пошуку
  6. Реалізуйте ретривал - Пайплайн запитів з реранкінгом
  7. Дизайн промптів - Як включати отриманий контекст
  8. Оцініть якість - Точність ретривалу, якість відповідей
  9. Обробіть помилки - Немає результатів, погані результати
  10. Моніторте та ітеруйте - Відстежуйте використання, покращуйте

Спочатку бейзлайн

Почніть з простого naive RAG перед оптимізацією:

# Простий RAG пайплайн
query_embedding = embed(user_query)
chunks = vector_db.search(query_embedding, top_k=5)
context = "\n\n".join(chunks)

response = llm.generate(
    f"Контекст:\n{context}\n\nПитання: {user_query}\nВідповідь:"
)

Чому naive RAG як бейзлайн: - Валідує роботу data pipeline - Встановлює floor якості - Ідентифікує очевидні прогалини - Швидко реалізувати

Додавайте складність (реранкінг, query expansion, гібридний пошук) лише коли обмеження бейзлайну очевидні.

Компоненти архітектури RAG

Компонент Опції Компроміси
Чанкінг Фіксований розмір, семантичний, рекурсивний Якість vs складність
Ембединги OpenAI, Cohere, open-source Якість vs вартість vs приватність
Vector DB Pinecone, Weaviate, pgvector Managed vs self-hosted
Ретривал Тільки вектори, гібридний, багатоетапний Швидкість vs точність
Реранкінг Cross-encoder, Cohere, LLM Якість vs затримка
Генерація GPT-4, Claude, open-source Якість vs вартість

Типова архітектура:

Запит → Обробка запиту → Ретривал → Реранкінг → 
Збірка контексту → LLM генерація → Пост-обробка → Відповідь

Стратегії чанкінгу

Чанкінг фіксованого розміру:

chunks = split_text(doc, chunk_size=500, overlap=50)

Семантичний чанкінг: - Розбивка по абзацах, секціях або семантичних межах - Краще зберігає значення - Складніша реалізація

Рекурсивний чанкінг: - Почати з великих чанків, рекурсивно ділити якщо завеликі - Поважає структуру документа - Добре для різних типів документів

Чанкінг з метаданими: - Зберігати заголовки, назви документів, дати з чанками - Покращує контекст ретривалу - Дозволяє фільтрацію

Найкращі практики: - Включайте overlap (10-20%) між чанками - Тримайте розмір чанку відповідним контекстному вікну - Тестуйте різні розміри на ваших даних - Включайте метадані для фільтрації

Оцінка та метрики

Оцінка RAG вимагає вимірювання і ретривалу, і генерації:

Метрика Що вимірює Як
Retrieval Precision Чи релевантні отримані документи? Людські мітки або LLM
Retrieval Recall Чи отримано всі релевантні документи? Потрібен gold set
MRR Чи найкращий результат перший? Позиція першого релевантного
Answer correctness Чи правильна фінальна відповідь? Людська або LLM оцінка
Answer groundedness Чи підтримується відповідь контекстом? Перевірка цитат
Faithfulness Чи суперечить відповідь контексту? LLM верифікація

Фреймворк оцінки: 1. Створіть golden dataset (50-200 Q&A пар) 2. Виміряйте якість ретривалу незалежно 3. Виміряйте якість генерації з ідеальним ретривалом 4. Виміряйте end-to-end якість 5. Ідентифікуйте чи помилки в ретривалі чи генерації

Інструменти: RAGAS, TruLens, кастомні пайплайни оцінки.

Режими відмов та чеклист налагодження

Чеклист для продакшну

Перед деплоєм: - [ ] Чанкінг протестовано на репрезентативних документах - [ ] Якість ембедингів валідовано - [ ] Ретривал оцінено на тестових запитах - [ ] Збірка контексту обробляє edge cases - [ ] Фолбек для відсутніх результатів - [ ] Контент-фільтрація на місці

Після деплою: - [ ] Затримка ретривалу моніториться (p50, p99) - [ ] Патерни запитів аналізуються - [ ] Невдалі запити логуються та рев'юяться - [ ] Свіжість індексу підтримується - [ ] Версіонування моделі ембедингів - [ ] Регулярне семплювання якості

Масштабування: - [ ] Шардінг векторного індексу для великих корпусів - [ ] Кешування ембедингів для повторюваних чанків - [ ] Rate limiting запитів - [ ] Стратегія оновлення індексу (batch vs streaming)

Просунуті техніки

Query expansion: - Генерувати варіації запиту - Використовувати LLM для переформулювання - Покращує recall

Гібридний пошук:

# Поєднання векторного та keyword пошуку
vector_results = vector_search(query_embedding)
keyword_results = bm25_search(query_text)
merged = reciprocal_rank_fusion(vector_results, keyword_results)

Багатоетапний ретривал: 1. Швидкий векторний пошук (top 100) 2. Cross-encoder реранкінг (top 10) 3. Збірка контексту

Parent document retrieval: - Індексувати малі чанки для точності - Повертати більші батьківські чанки для контексту

Self-querying: - LLM витягує фільтри з природної мови - "Покажи контракти з 2023" → date_filter: 2023

Інструменти та стек

Категорія Інструменти
Векторні бази Pinecone, Weaviate, Qdrant, Milvus, pgvector
Моделі ембедингів OpenAI, Cohere, sentence-transformers
Реранкери Cohere, cross-encoders, Jina
Фреймворки LangChain, LlamaIndex, Haystack
Оцінка RAGAS, TruLens, Promptfoo
Обробка документів Unstructured, LlamaParse, PyMuPDF

Приклад міні-кейсу

Сценарій: Юридична фірма потребує AI-асистента для пошуку судової практики та регуляцій серед 500K документів.

Підхід: 1. Обробка документів: PDF → текст з екстракцією секцій 2. Чанкінг: 400 токенів з 50 токенів overlap, зберегти заголовки 3. Ембединги: OpenAI text-embedding-3-small 4. Індекс: Pinecone з метаданими (дата, суд, тема) 5. Ретривал: Гібридний (vector + BM25), реранк top 20 → top 5 6. Генерація: GPT-4 з цитатами

Досягнуті метрики: - Retrieval precision@5: 82% - Answer correctness: 78% - Затримка p50: 1.8s, p99: 4.2s - Вартість на запит: $0.08

Ключові рішення: - Фільтрація метаданих критична для дат/юрисдикцій - Реранкінг покращив precision на 15% - Вимога цитат зменшила галюцинації - Фолбек до результатів пошуку при низькій впевненості

Пов'язані сторінки

Додаткове читання

Спробуйте наживо

Дослідіть пов'язану модель на практиці: відкрийте Vector Database Embedding Explorer і змінюйте параметри під час роботи. Усе лишається у вашому браузері.

▶ Відкрити симуляцію Vector Database Embedding Explorer

Що ви знайшли?

Додати кроки відтворення (опційно)