RAG
Source: https://github.com/Danielskry/Awesome-RAG at
df26ec74630a
License: CC0-1.0
Read the English original
This edition is an AI-assisted translation.
😎 Awesome — подборка ресурсов по генерации с дополненной выборкой (RAG)
Заголовок раздела «😎 Awesome — подборка ресурсов по генерации с дополненной выборкой (RAG)»Подборка инструментов, фреймворков, методов и учебных материалов для создания систем генерации с дополненной выборкой (RAG). В этом репозитории собрана экосистема RAG и ссылки на авторитетные источники, руководства и реализации, помогающие изучать и создавать приложения RAG.
Также доступен плагин агента для VS Code, GitHub Copilot CLI и Claude Code.
Генерация с дополненной выборкой (RAG) — продвинутая технология генеративного ИИ, расширяющая возможности больших языковых моделей (LLM): во время генерации она динамически извлекает и учитывает релевантный контекст из внешних источников знаний. В отличие от традиционных LLM, опирающихся только на предобученные знания, системы RAG дают моделям доступ к актуальной, предметной или закрытой информации, значительно повышая точность, снижая число галлюцинаций и обеспечивая интеграцию знаний в реальном времени.
Ключевые преимущества
Заголовок раздела «Ключевые преимущества»- Снижение числа галлюцинаций: Формирует ответы на основе найденных фактических данных
- Адаптация к предметной области: Позволяет LLM работать со специализированными знаниями без дообучения
- Обновления в реальном времени: Учитывает актуальную информацию без переобучения модели
- Экономическая эффективность: Экономичнее дообучения для задач в конкретной предметной области
- Прозрачность: Указывает источники сгенерированного содержимого
- Конфиденциальность и безопасность: Хранит конфиденциальные данные в частных базах знаний
Содержание
Заголовок раздела «Содержание»- ℹ️ Общие сведения о RAG
- 🏗️ Архитектурные шаблоны
- 🎯 Продвинутые подходы
- 🧰 Фреймворки для RAG
- 🐍 Экосистема Python для RAG
- 🛠️ Методы
- 📊 Метрики и оценка
- 💾 Базы данных
- 🔌 Реализации RAG для конкретных платформ
- 🚀 Особенности промышленной эксплуатации
- 💡 Лучшие практики
ℹ️ Общие сведения о RAG
Заголовок раздела «ℹ️ Общие сведения о RAG»RAG устраняет фундаментальное ограничение LLM: фиксированную дату актуальности знаний и неспособность обращаться к внешней информации. В традиционных реализациях RAG конвейер поиска дополняет запросы к LLM контекстно-релевантными документами из базы знаний. Например, при вопросе о материалах для ремонта конкретного дома LLM может знать общие сведения о ремонте, но не детали этого объекта. Система RAG извлечёт нужные документы (планы, спецификации материалов, местные строительные нормы) и даст точный ответ с учётом контекста.
Материалы по реализации
Заголовок раздела «Материалы по реализации»Руководства и примеры на Python
Заголовок раздела «Руководства и примеры на Python»-
Complete basic Реализация RAG на Python: Полноценный пример RAG с LangChain и Chroma
-
Руководство LangChain по RAG: Подробное руководство по созданию приложений RAG
-
Руководство по RAG с LlamaIndex: Начало работы с LlamaIndex для RAG
-
Конвейер RAG на Haystack: Создание конвейеров RAG с Haystack
-
RAG Techniques: Обширная подборка продвинутых методов генерации с дополненной выборкой с открытым исходным кодом в виде исполняемых блокнотов Jupyter.
-
RAG Interview System: Система подготовки к собеседованиям на основе RAG с 418 отобранными парами вопросов и ответов (от базового до продвинутого уровня), охватывающими 29 архитектурных шаблонов RAG.
-
Поиск с Jev и Milvus: Девять исполняемых блокнотов Python объединяют векторные представления Gemini, поиск в Milvus и оценки Jev для переранжирования, фильтрации контекста, остановки поиска, маршрутизации, повторного использования кэша, курирования, защитных механизмов и оценки.
Промышленная эксплуатация и лучшие практики
Заголовок раздела «Промышленная эксплуатация и лучшие практики»- Шаблоны и лучшие практики RAG для промышленной эксплуатации: Стратегии оптимизации RAG для промышленной эксплуатации
- Руководство по эксплуатации LangChain в промышленной среде: Развёртывание приложений LangChain в промышленной среде
- Лучшие практики асинхронного программирования на Python: Создание эффективного асинхронного кода Python для приложений ИИ
🏗️ Архитектурные шаблоны
Заголовок раздела «🏗️ Архитектурные шаблоны»Архитектуру систем RAG можно строить по различным шаблонам в зависимости от требований:
- Naive RAG: Базовый конвейер «поиск, затем генерация» без оптимизации
- Advanced RAG: Включает переформулирование запросов, переранжирование и сжатие контекста
- Modular RAG: Компоненты поиска, ранжирования и генерации можно комбинировать
- Agentic RAG: Агенты на основе LLM динамически принимают решения о поиске
- Self-RAG: Модели анализируют качество поиска и корректируют стратегии
- Graph RAG: Использует графы знаний для структурированного поиска информации
- Reasoning-Based RAG: Применяет многошаговые рассуждения LLM для планирования, навигации и выполнения поиска
🎯 Продвинутые подходы
Заголовок раздела «🎯 Продвинутые подходы»Реализации RAG различаются по сложности: от простого поиска документов до продвинутых методов с итеративными циклами обратной связи, мультиагентными системами и отраслевыми улучшениями. Современные подходы включают:
- Vision-RAG: Встраивает целые страницы как изображения, позволяя моделям компьютерного зрения рассуждать напрямую без разбора текста, как в текстовом RAG.
- Cache-Augmented Generation (CAG): Заранее загружает релевантные документы в контекст модели и сохраняет состояние инференса (KV-кэш).
- Agentic RAG: Также известны как агенты поиска и могут принимать решения о процессе поиска.
- A-RAG: Агентная RAG с иерархическими интерфейсами поиска (по ключевым словам, семантике и фрагментам), позволяющая агентам LLM самостоятельно искать и извлекать данные с разной детализацией. (Paper)
- Corrective RAG (CRAG): Методы исправления или уточнения извлечённой информации перед включением в ответы LLM.
- Retrieval-Augmented Fine-Tuning (RAFT): Методы тонкой настройки LLM специально для улучшения поиска и генерации.
- Self Reflective RAG: Модели, динамически адаптирующие стратегии поиска на основе обратной связи о производительности.
- RAG Fusion: Методы объединения нескольких способов поиска для улучшения интеграции контекста.
- Temporal Augmented Retrieval (TAR): Учитывает временную актуальность данных при поиске.
- Plan-then-RAG (PlanRAG): Стратегии с этапом планирования перед запуском RAG для сложных задач.
- GraphRAG: Структурированный подход с графами знаний для улучшения интеграции контекста и рассуждений.
- Code-Graph-RAG: Система RAG на графе знаний для анализа многоязычных кодовых баз.
- FLARE - Подход с активной генерацией, дополненной поиском, для повышения качества ответов.
- GNN-RAG: Поиск с помощью графовых нейронных сетей для рассуждений больших языковых моделей.
- Multimodal RAG: Расширяет RAG для работы с текстом, изображениями, аудио и другими модальностями.
- VideoRAG: Расширяет RAG на видео с помощью больших видеоязыковых моделей (LVLM), извлекающих и объединяющих визуальное и текстовое содержимое для мультимодальной генерации.
- REFRAG: Оптимизирует декодирование RAG, сжимая извлечённый контекст в эмбеддинги перед генерацией, что снижает задержку без потери качества результата.
- InstructRAG: Повышает качество поиска и генерации в системах RAG за счёт дообучения на инструкциях с самостоятельно синтезированными рассуждениями.
- PageIndex: Безвекторный фреймворк на основе рассуждений: строит иерархические деревья документов и выполняет поиск по дереву под управлением LLM, а не по эмбеддингам и векторному сходству. Устраняет необходимость в разбиении на фрагменты и векторных БД, обеспечивая объяснимый контекстный поиск по сложным профессиональным документам.
🧰 Фреймворки для RAG
Заголовок раздела «🧰 Фреймворки для RAG»- Haystack: Фреймворк оркестрации LLM для создания настраиваемых приложений, готовых к промышленной эксплуатации.
- LangChain: Универсальный фреймворк для работы с LLM.
- Semantic Kernel: SDK от Microsoft для разработки приложений генеративного ИИ.
- LlamaIndex: Фреймворк для подключения пользовательских источников данных к LLM.
- Dify: Платформа с открытым исходным кодом для разработки приложений на основе LLM.
- Verba: Готовое приложение RAG с открытым исходным кодом.
- Mastra: Фреймворк на TypeScript для создания приложений ИИ.
- Letta: Фреймворк с открытым исходным кодом для создания приложений LLM с сохранением состояния.
- Flowise: Интерфейс с перетаскиванием элементов для создания настраиваемых потоков LLM.
- Kreuzberg: Многоязычная библиотека обработки документов (ядро на Rust со связками для Python, TypeScript и Go), извлекающая текст, таблицы и метаданные из более чем 62 форматов документов для конвейеров загрузки данных в RAG.
- Swiftide: Фреймворк на Rust для создания модульных потоковых приложений LLM.
- CocoIndex: ETL-фреймворк для индексирования данных для ИИ, например для RAG, с инкрементальными обновлениями в реальном времени.
- Pathway: Высокопроизводительный ETL-фреймворк на Python с открытым исходным кодом и средой выполнения на Rust; поддерживает более 300 источников данных.
- Pathway AI Pipelines: Готовый к промышленной эксплуатации фреймворк RAG, поддерживающий индексирование и поиск в реальном времени, а также отслеживание изменений в различных источниках данных.
- LiteLLM: Унифицированный интерфейс для нескольких провайдеров LLM (OpenAI, Anthropic, Hugging Face, Replicate) с ведением журналов, мониторингом и учётом затрат.
- Agentset: Платформа RAG с открытым исходным кодом, готовая к промышленной эксплуатации; включает агентные рассуждения, гибридный поиск и поддержку нескольких модальностей.
- OpenAgent: Платформа персонального ИИ-ассистента с открытым исходным кодом, объединяющая LLM, базу знаний RAG и автономные циклы работы агента с поддержкой браузера, выполнения команд оболочки и инструментов MCP.
- Local Deep Research: Фреймворк глубокого агентного исследования с локальным хранением данных: поддерживает поиск по нескольким источникам (веб, arXiv, PubMed, частные документы) и более 20 стратегий исследования.
🐍 Экосистема Python для RAG
Заголовок раздела «🐍 Экосистема Python для RAG»Сегодня Python располагает наиболее зрелой экосистемой RAG с широкой поддержкой LLM, векторных представлений, векторных баз данных, оценки и инструментов для промышленной эксплуатации.
Полное руководство: Экосистема Python для RAG
🛠️ Методы
Заголовок раздела «🛠️ Методы»Очистка данных
Заголовок раздела «Очистка данных»- Методы очистки данных: Этапы предварительной обработки для очистки входных данных и повышения производительности модели.
Промптинг
Заголовок раздела «Промптинг»- Стратегии
- Tagging and Labeling: Добавляет семантические метки к извлечённым данным для повышения релевантности.
- Chain of Thought (CoT): Побуждает модель пошагово обдумывать задачу перед ответом.
- Chain of Verification (CoVe): Предлагает модели проверять точность каждого шага рассуждений.
- Self-Consistency: Генерирует несколько цепочек рассуждений и выбирает наиболее согласованный ответ.
- Zero-Shot Prompting: Создаёт запросы, направляющие модель без примеров.
- Few-Shot Prompting: Добавляет в запрос несколько примеров желаемого формата ответа.
- Reason & Act (ReAct) prompting: Объединяет рассуждения (например, CoT) с действиями (например, вызовом инструментов).
- Кэширование
- Prompt Caching: Оптимизирует LLM за счёт сохранения и повторного использования предварительно вычисленных состояний внимания.
- Структурирование
- Token-Oriented Object Notation: Компактный детерминированный формат JSON для запросов к LLM.
Разбиение на фрагменты
Заголовок раздела «Разбиение на фрагменты»Стратегия разбиения на фрагменты — одно из важнейших решений при проектировании систем RAG, напрямую влияющее на точность поиска и качество контекста. Оптимальный подход зависит от типов документов, особенностей предметной области и шаблонов запросов.
-
- Применение: Простые однородные документы, в которых структура не так важна
- Характеристики: Делит текст на сегменты одинакового размера (обычно 256–512 токенов) с настраиваемым перекрытием (10–20%)
- Преимущества: Простая реализация, предсказуемый размер фрагментов, эффективная обработка
- Недостатки: Может разрезать предложения и абзацы, теряет структуру документа и фрагментирует смысловые единицы
- Реализация: CharacterTextSplitter (LangChain), SentenceSplitter (LlamaIndex)
-
- Применение: Документы с иерархической структурой (Markdown, HTML, код)
- Характеристики: Рекурсивно делит текст по разделителям (абзацы → предложения → слова), пока не будет достигнут нужный размер фрагмента
- Преимущества: Сохраняет естественные границы и иерархию документа, улучшает смысловую связность
- Недостатки: Сложнее в реализации; размер фрагментов меняется; требуется тщательно настраивать разделители
- Реализация: RecursiveCharacterTextSplitter (LangChain)
-
- Применение: Структурированные документы с чёткими разделами (заголовки Markdown, разделы PDF, записи баз данных)
- Характеристики: Разбивает данные с учётом метаданных документа, форматирования или структурных элементов
- Преимущества: Сохраняет структуру и контекст документа, позволяет искать с использованием подробных метаданных
- Недостатки: Требует структурированного ввода; фрагменты могут оказаться слишком большими или маленькими
- Реализация: MarkdownHeaderTextSplitter (LangChain)
- Мультимодальность: Обработка изображений и текста с помощью таких моделей, как OpenCLIP
-
- Применение: Документы, где критически важна смысловая связность (повествовательные тексты, техническая документация)
- Характеристики: Использует сходство векторных представлений для определения естественных смысловых границ
- Преимущества: Сохраняет смысловые единицы, адаптируется к содержимому и повышает релевантность поиска
- Недостатки: Требует значительных вычислительных ресурсов и модели векторных представлений; размер фрагментов менее предсказуем
- Лучше всего подходит для: Поиск высокого качества, в котором сохранение контекста особенно важно
-
- Применение: Сложные документы, требующие интеллектуального определения границ сегментов
- Характеристики: Использует LLM для анализа содержимого и определения оптимальных границ фрагментов
- Преимущества: Высокая адаптивность, понимание контекста и применение знаний предметной области
- Недостатки: Высокая стоимость и медленная обработка; требуется доступ к API LLM
- Лучше всего подходит для: Специализированные предметные области, где стандартные методы разбиения не подходят
-
- Применение: Смешанные коллекции документов, для которых нужны разные стратегии разбиения
- Характеристики: Оценивает несколько методов разбиения по внутренним метрикам и выбирает лучший для каждого документа
- Преимущества: Гибче универсального подхода, сохраняет структуру и смысловую связность, поддерживает пользовательские разделители и метрики
- Недостатки: По сравнению с разбиением на фрагменты фиксированного размера или рекурсивным добавляет затраты на оценку и усложняет реализацию
Практические рекомендации по разбиению на фрагменты:
- Стратегия перекрытия: Перекрытие 10–20% помогает сохранять контекст на границах фрагментов
- Оптимизация размера: Подбирайте баланс размера фрагмента: больший даёт больше контекста, меньший повышает точность
- Сохранение метаданных: Сохраняйте структуру документа, заголовки и форматирование в метаданных фрагментов
- Разная гранулярность: Используйте иерархический подход: небольшие фрагменты для поиска, более крупные — для контекста
Векторные представления
Заголовок раздела «Векторные представления»Векторные представления лежат в основе семантического поиска в системах RAG. Выбор модели векторных представлений существенно влияет на качество поиска.
-
Выбор модели
- MTEB Leaderboard: Обширный набор тестов для оценки моделей векторных представлений по различным задачам и языкам. Выбирайте модели, хорошо справляющиеся с задачами вашего сценария (поиск, кластеризация, классификация).
- Характеристики моделей: Оценивайте модели по следующим параметрам:
- Размерность: Большая размерность (768–1024) обычно повышает качество, но увеличивает затраты на хранение и вычисления
- Длина контекста: Убедитесь, что модели поддерживают размеры фрагментов ваших документов
- Поддержка нескольких языков: Необходима для международных приложений
- Специализация на предметной области: Универсальные или специализированные модели (например, для научной, юридической или медицинской сферы)
-
Пользовательские векторные представления
- Дообучение: Адаптируйте предварительно обученные модели к своей предметной области с помощью контрастивного обучения, triplet loss или контролируемого дообучения
- Обучение с нуля: Подходит для узкоспециализированных областей при наличии достаточного объёма размеченных данных
- Мультимодальные векторные представления: Для приложений, которым нужно понимать текст, изображения или аудио (например, CLIP, ImageBind)
- Ансамблевые методы: Объединяйте несколько моделей векторных представлений для повышения устойчивости
- Методы поиска
- Vector Store Flat Index
- Простой и эффективный способ поиска.
- Содержимое преобразуется в векторы и сохраняется в виде плоского набора векторов.
- Hierarchical Index Retrieval
- Последовательно сужает область поиска по уровням иерархии.
- Выполняет поиск, последовательно проходя уровни иерархии.
- Hypothetical Questions
- Повышает сходство между фрагментами в базе данных и запросами (так же, как HyDE).
- LLM генерирует конкретные вопросы для каждого текстового фрагмента.
- Преобразует эти вопросы в векторные представления.
- При поиске запросы сопоставляются с этим индексом векторов вопросов.
- Hypothetical Document Embeddings (HyDE)
- Повышает сходство между фрагментами в базе данных и запросами (так же, как метод гипотетических вопросов).
- LLM генерирует гипотетический ответ на основе запроса.
- Преобразует этот ответ в векторное представление.
- Сравнивает вектор запроса с вектором гипотетического ответа.
- Small to Big Retrieval
- Повышает качество поиска: для поиска используются более мелкие фрагменты, а для контекста — более крупные.
- Мелкие дочерние фрагменты ссылаются на более крупные родительские.
- Contextual Retrieval
- Повышает точность поиска в RAG, сохраняя контекст документа, который обычно теряется при разбиении на фрагменты.
- Перед созданием векторных представлений и индексированием каждый текстовый фрагмент дополняется кратким сгенерированным моделью резюме, что позволяет получить контекстные векторные представления и контекстный BM25.
- Такой комбинированный подход улучшает семантическое и лексическое сопоставление, а при использовании переранжирования снижает вероятность неудачного поиска.
- Adaptive Retrieval
- Динамически определяет, когда и какой объём данных извлекать во время генерации.
- Query Reformulation and Expansion
- Автоматически переформулирует или расширяет запрос перед поиском, чтобы повысить полноту результатов.
- Полезно для длинных или неоднозначных пользовательских запросов.
- Vector Store Flat Index
- Re-ranking: Улучшает результаты поиска в конвейерах RAG, переупорядочивая изначально найденные документы и ставя выше те, которые семантически лучше всего соответствуют запросу.
Модели оценки и принятия решений
Заголовок раздела «Модели оценки и принятия решений»Модели суждений принимают ограниченные семантические решения на основе извлечённого содержимого, запросов, сгенерированных ответов или состояния конвейера. В отличие от генеративных LLM, их можно использовать как программируемые точки принятия решений в конвейерах RAG для переранжирования, фильтрации, маршрутизации, проверки и оценки.
- Jev: Модель System One от TypeSafe AI для быстрых типизированных решений. В RAG она может выполнять переранжирование, фильтрацию, маршрутизацию, проверку, обеспечивать защитные механизмы и оценку.
- AnyJev: Преобразует открытые LLM в типизированные модели принятия решений в стиле Jev; включает коррекцию смещения без меток и необязательную калибровку для решений с пороговыми значениями.
Качество и безопасность ответов
Заголовок раздела «Качество и безопасность ответов»Для систем RAG, используемых в промышленной среде, крайне важно обеспечивать высокое качество, безопасность и надёжность ответов.
-
Снижение числа галлюцинаций
- Detection Techniques: Реализуйте методы для выявления случаев, когда модели генерируют неподтверждённую информацию
- Проверка опоры на контекст: Сопоставляйте сгенерированные утверждения с извлечённым контекстом
- Оценка уверенности: Оценивайте уверенность в сгенерированных ответах по качеству источников
- Указание источников: Требуйте указывать источники для всех фактических утверждений
- Качество поиска: Повышайте точность поиска, чтобы снизить риск галлюцинаций
-
Защитные механизмы и безопасность
- Implementation Guide: Комплексный подход к внедрению механизмов безопасности
- Модерация содержимого: Фильтруйте вредоносное, предвзятое или недопустимое содержимое на этапах ввода и вывода
- Снижение предвзятости: Выявляйте и снижайте предвзятость в извлечённом содержимом и сгенерированных ответах
- Проверка фактов: Проверяйте утверждения по авторитетным источникам или базам знаний
- Обнаружение токсичности: Используйте классификаторы для выявления и фильтрации токсичного содержимого
-
Предотвращение внедрения промптов
- Security Guide: Изучение и предотвращение атак с внедрением промптов
- Проверка входных данных: Тщательно проверяйте и очищайте все внешние входные данные с помощью белых списков, ограничений длины и сопоставления с шаблонами
- Разделение содержимого: Используйте чёткие разделители, шаблоны и промпты с заданными ролями, чтобы отделять инструкции от пользовательских данных
- Мониторинг результатов: Постоянно отслеживайте аномалии, неожиданное поведение и нарушения безопасности в ответах
- Ограничение частоты запросов: Настройте ограничения частоты запросов и обнаружение злоупотреблений для предотвращения систематических атак
- Изоляция в песочнице: Изолируйте среды выполнения LLM, чтобы ограничить возможный ущерб от успешных атак с внедрением промптов
📊 Метрики и оценка
Заголовок раздела «📊 Метрики и оценка»Метрики сходства векторных представлений
Заголовок раздела «Метрики сходства векторных представлений»Эти метрики позволяют измерять сходство между векторными представлениями, что важно для оценки эффективности поиска и интеграции внешних документов и источников данных системами RAG. Выбор подходящих метрик сходства помогает оптимизировать производительность и точность системы RAG. Также можно разработать специальные метрики для конкретной предметной области, чтобы учитывать её особенности и повышать релевантность.
-
- Измеряет косинус угла между двумя векторами в многомерном пространстве.
- Эффективна для сравнения векторных представлений текста, направление которых несёт семантическую информацию.
- Часто используется в системах RAG для измерения семантического сходства между векторами запросов и документов.
-
- Вычисляет сумму произведений соответствующих элементов двух числовых последовательностей.
- Эквивалентно косинусному сходству, если векторы нормализованы.
- Просто и эффективно; часто используется с аппаратным ускорением для крупномасштабных вычислений.
-
- Вычисляет расстояние по прямой между двумя точками в евклидовом пространстве.
- Можно применять к векторным представлениям, однако в пространствах большой размерности эффективность может снижаться из-за «проклятия размерности».
- Часто используется в алгоритмах кластеризации, например K-means, после снижения размерности.
-
- Измеряет сходство двух конечных множеств как отношение размера пересечения к размеру объединения.
- Полезно при сравнении наборов токенов, например в моделях «мешка слов» или при сравнении n-грамм.
- Менее применимо к непрерывным векторным представлениям, создаваемым LLM.
Примечание: Косинусное сходство и скалярное произведение обычно считают наиболее эффективными метриками для измерения сходства векторных представлений большой размерности.
Метрики оценки ответов
Заголовок раздела «Метрики оценки ответов»Оценка ответов в решениях RAG включает измерение качества результатов языковой модели с помощью различных метрик. Ниже приведены структурированные подходы к такой оценке:
-
Автоматизированное тестирование
- BLEU: Оценивает совпадение n-грамм машинного и эталонного текстов, помогая оценить точность.
- ROUGE: Измеряет полноту, сопоставляя с эталонными ответами n-граммы, пропускающие биграммы или наибольшую общую подпоследовательность.
- METEOR: Оценивает машинный перевод по точным совпадениям, стеммингу, синонимам и выравниванию.
-
Оценка человеком При оценке люди проверяют ответы на следующие свойства:
- Соответствие пользовательским запросам.
- Грамматическое и стилистическое качество.
- Проверка утверждений по авторитетным источникам.
- Логическая согласованность ответа.
Подходы включают:
- Annotation queues: Предоставляют разметчикам удобное представление с заданным направлением, позволяющее оставлять отзывы о конкретных запусках.
-
Оценка моделей Используются предварительно обученные оценщики для сравнения результатов по различным критериям:
- TuringBench: Обеспечивает всестороннюю оценку по языковым тестам.
- Hugging Face Evaluate: Оценивает соответствие предпочтениям людей.
-
Ключевые аспекты оценки
- Показывает, полностью ли ответы основаны на предоставленном контексте. Низкий уровень опоры на контекст может говорить о том, что ответ содержит галлюцинации или нерелевантную информацию.
- Показывает, охватывает ли ответ все аспекты запроса.
- Оценка поиска с помощью ИИ и проверка намерений на основе промптов.
- Показывает, в какой степени извлечённые данные повлияли на ответ.
- Используйте LLM, чтобы проверить, включены ли найденные фрагменты в ответы.
Инструменты
Заголовок раздела «Инструменты»Эти инструменты помогают оценивать производительность системы RAG: отслеживать отзывы пользователей, регистрировать взаимодействия с запросами и сравнивать несколько метрик оценки с течением времени.
- LangFuse: Инструмент с открытым исходным кодом для отслеживания метрик LLM, наблюдаемости и управления промптами.
- Opik: Платформа с открытым исходным кодом для наблюдаемости LLM, оценки и оптимизации промптов.
- Ragas: Фреймворк для оценки конвейеров RAG.
- WFGY Problem Map: Контрольный список из 16 режимов для диагностики сбоев RAG и LLM.
- LangSmith: Платформа для создания приложений LLM промышленного уровня, позволяющая тщательно отслеживать и оценивать приложение.
- Hugging Face Evaluate: Инструмент для вычисления таких метрик, как BLEU и ROUGE, и оценки качества текста.
- Weights & Biases: Отслеживает эксперименты, регистрирует метрики и визуализирует производительность.
💾 Базы данных
Заголовок раздела «💾 Базы данных»Векторные базы данных — важные компоненты систем RAG: они обеспечивают эффективное хранение векторных представлений и поиск сходства. Выбор подходящей базы данных зависит от масштаба, требований к задержке, модели развёртывания (облако или собственная инфраструктура) и необходимых функций (гибридный поиск, фильтрация и т. д.). Ниже перечислены системы баз данных, подходящие для приложений RAG:
Тесты производительности
Заголовок раздела «Тесты производительности»Распределённые платформы обработки и предоставления данных:
Заголовок раздела «Распределённые платформы обработки и предоставления данных:»- Apache Cassandra: Распределённая система управления базами данных NoSQL.
- MongoDB Atlas: Глобально распределённая мультимодельная служба баз данных со встроенным векторным поиском.
- Vespa: Движок обработки и обслуживания больших данных с открытым исходным кодом для приложений реального времени.
Поисковые системы с поддержкой векторов:
Заголовок раздела «Поисковые системы с поддержкой векторов:»- Elasticsearch: Поддерживает векторный поиск наряду с традиционными функциями поиска.
- OpenSearch: Распределённый поисковый и аналитический движок, являющийся форком Elasticsearch.
Векторные базы данных:
Заголовок раздела «Векторные базы данных:»- Chroma DB: База данных векторных представлений, изначально разработанная для ИИ и распространяемая с открытым исходным кодом.
- Milvus: Векторная база данных с открытым исходным кодом для приложений на основе ИИ.
- Pinecone: Бессерверная векторная база данных, оптимизированная для рабочих процессов машинного обучения.
- Oracle AI Vector Search: Интегрирует векторный поиск в Oracle Database для семантических запросов на основе векторных представлений.
Расширения реляционных баз данных:
Заголовок раздела «Расширения реляционных баз данных:»- Pgvector: Расширение PostgreSQL с открытым исходным кодом для поиска сходства векторов.
- psql_bm25s: Расширение PostgreSQL для лексического поиска на основе семейства BM25; подходит для конвейеров поиска по ключевым словам и гибридного поиска.
Другие системы баз данных:
Заголовок раздела «Другие системы баз данных:»- Azure Cosmos DB: Глобально распределённая мультимодельная служба баз данных со встроенным векторным поиском.
- Couchbase: Распределённая облачная база данных NoSQL.
- Lantern: Персональная поисковая система с учётом конфиденциальности.
- LlamaIndex: Использует простой векторный репозиторий в памяти для быстрого экспериментирования.
- Neo4j: Система управления графовыми базами данных.
- Qdrant: Векторная база данных с открытым исходным кодом, предназначенная для поиска сходства.
- Redis Stack: Хранилище структур данных в памяти, используемое как база данных, кэш и брокер сообщений.
- SurrealDB: Масштабируемая мультимодельная база данных, оптимизированная для данных временных рядов.
- Weaviate: Облачный векторный поисковый движок с открытым исходным кодом.
Библиотеки и инструменты векторного поиска:
Заголовок раздела «Библиотеки и инструменты векторного поиска:»- FAISS: Библиотека для эффективного поиска сходства и кластеризации плотных векторов, предназначенная для больших наборов данных и оптимизированная для быстрого поиска ближайших соседей.
🚀 Особенности промышленной эксплуатации
Заголовок раздела «🚀 Особенности промышленной эксплуатации»Для создания готовых к промышленной эксплуатации систем RAG необходимо учитывать несколько важных аспектов, выходящих за рамки основного конвейера поиска и генерации:
Масштабируемость и производительность
Заголовок раздела «Масштабируемость и производительность»- Пропускная способность индексирования: Проектируйте конвейеры для обработки больших объёмов поступающих документов и инкрементальных обновлений
- Задержка запросов: Ускоряйте поиск за счёт эффективного индексирования (HNSW, IVF), кэширования и параллельной обработки
- Параллельные запросы: Для высокой нагрузки используйте пулы подключений, очереди запросов и балансировку нагрузки
- Управление ресурсами: Отслеживайте загрузку GPU/CPU, потребление памяти и пулы подключений к базам данных
Надёжность и мониторинг
Заголовок раздела «Надёжность и мониторинг»- Наблюдаемость: Настройте комплексный сбор журналов, трассировок и метрик (задержка, пропускная способность, число ошибок)
- Проверки работоспособности: Отслеживайте доступность службы векторных представлений, подключение к векторной базе данных и состояние API LLM
- Обработка ошибок: Используйте повторы запросов, автоматические выключатели и стратегии плавного снижения функциональности
- A/B-тестирование: Сравнивайте различные стратегии поиска, методы разбиения на фрагменты и шаблоны промптов
Управление данными
Заголовок раздела «Управление данными»- Инкрементальные обновления: Поддерживайте индексирование документов в реальном или почти реальном времени без полного переиндексирования
- Контроль версий: Отслеживайте версии документов, моделей векторных представлений и шаблонов промптов
- Качество данных: Настройте конвейеры проверки для выявления повреждённых векторных представлений, отсутствующих метаданных и устаревшего содержимого
- Резервное копирование и восстановление: Регулярно создавайте резервные копии векторных индексов и хранилищ метаданных
Безопасность и соответствие требованиям
Заголовок раздела «Безопасность и соответствие требованиям»- Контроль доступа: Реализуйте аутентификацию, авторизацию и ведение журнала аудита
- Конфиденциальность данных: Шифруйте данные при хранении и передаче; соблюдайте требования к месту хранения данных
- Фильтрация содержимого: Применяйте модерацию содержимого, обнаружение персональных данных и проверки соответствия требованиям
- Ограничение частоты запросов: Защищайтесь от злоупотреблений и обеспечивайте справедливое распределение ресурсов
Оптимизация затрат
Заголовок раздела «Оптимизация затрат»- Кэширование векторных представлений: Кэшируйте часто используемые векторные представления для снижения расходов на API
- Избирательный поиск: Используйте маршрутизацию запросов, чтобы избежать ненужных операций поиска
- Выбор модели: При выборе моделей векторных представлений и LLM учитывайте баланс затрат и производительности
- Оптимизация ресурсов: Оптимизируйте инфраструктуру с учётом фактических моделей использования
🔌 Реализации RAG для конкретных платформ
Заголовок раздела «🔌 Реализации RAG для конкретных платформ»Подробные руководства по реализации для конкретных платформ см. в документации:
- Руководство по интеграции с Supabase: Создание систем RAG с Supabase, pgvector и Edge Functions
💡 Лучшие практики
Заголовок раздела «💡 Лучшие практики»Стратегия разбиения на фрагменты
Заголовок раздела «Стратегия разбиения на фрагменты»- Разбиение с учётом предметной области: Для лучшего сохранения контекста используйте семантическое разбиение или разбиение по структуре документа вместо фрагментов фиксированного размера
- Управление перекрытием: Стратегически применяйте перекрытие (10–20%), чтобы сохранять контекст на границах фрагментов
- Сохранение метаданных: Сохраняйте структуру документа, заголовки и подсказки форматирования в метаданных фрагментов
- Разная гранулярность: Рассмотрите иерархическое разбиение: небольшие фрагменты для поиска и более крупные для контекста
Выбор векторных представлений
Заголовок раздела «Выбор векторных представлений»- Оценка моделей: Используйте таблицу лидеров MTEB и тесты для конкретной предметной области, чтобы выбрать подходящие модели
- Оптимизация размерности: Подбирайте баланс размерности векторных представлений: большая повышает качество, меньшая ускоряет поиск
- Дообучение для предметной области: При возможности дообучайте векторные представления на данных конкретной предметной области
- Согласованность: Используйте одну и ту же модель векторных представлений при индексировании и поиске
Оптимизация поиска
Заголовок раздела «Оптимизация поиска»- Гибридный поиск: Сочетайте семантический (векторный) и лексический поиск (BM25/по ключевым словам) для повышения полноты результатов
- Переранжирование: Используйте кросс-энкодеры или модели ранжирования для повышения точности
- Понимание запросов: Реализуйте классификацию запросов, определение намерений и расширение запросов
- Разнообразие результатов: Избегайте дублирующихся результатов с помощью ограничений на разнообразие
Разработка промптов
Заголовок раздела «Разработка промптов»- Чёткие инструкции: Чётко указывайте, как использовать извлечённый контекст
- Указание источников: Запрашивайте цитаты и требуйте, чтобы ответы основывались на предоставленном контексте
- Примеры для Few-Shot: Добавляйте примеры желаемого формата и качества ответов
- Сжатие контекста: Если контекст превышает ограничения, используйте суммаризацию или извлечение нужных сведений
Система оценки
Заголовок раздела «Система оценки»- Многомерные метрики: Оценивайте релевантность, точность, полноту и опору на источники
- Участие человека в цикле: Используйте отзывы людей для непрерывного улучшения
- Синтетическая оценка: Создавайте тестовые запросы и ожидаемые результаты для автоматизированного тестирования
- Мониторинг в промышленной среде: Отслеживайте удовлетворённость пользователей, шаблоны запросов и типы сбоев
Итеративное улучшение
Заголовок раздела «Итеративное улучшение»- Циклы обратной связи: Собирайте отзывы пользователей, журналы запросов и метрики производительности
- Эксперименты: Систематически тестируйте улучшения (разбиение на фрагменты, поиск, промпты) в контролируемых экспериментах
- Обновления моделей: Планируйте обновление моделей векторных представлений и стратегии миграции
- Документация: Ведите понятную документацию по архитектуре, принятым решениям и рабочим процедурам
Участие в проекте
Заголовок раздела «Участие в проекте»Это ресурс, созданный сообществом и постоянно развивающийся. Мы приветствуем вклад! Чтобы добавить материалы, исправить ошибки или улучшить организацию:
- Создайте форк репозитория
- Создайте ветку для своих изменений
- Отправьте запрос на включение изменений с чётким описанием
Для новых записей проверьте работоспособность ссылок, точность и краткость описаний, а также соответствие содержимого разделу.
Лицензия
Заголовок раздела «Лицензия»Этот проект распространяется по лицензии CC0 1.0 Universal.
HagiCode
HagiCode — агентная среда разработки. Насыщенные и удобные взаимодействия с интерфейсом делают планирование, работу агентов и проектные задачи понятными и доступными, превращая разработку в увлекательный процесс.
Насыщенные и удобные взаимодействия с интерфейсом помогают легче планировать, запускать агентов и вести проектную работу.
- УмныйРабочие процессы OpenSpec превращают намерение в исполнимый путь от предложения через дизайн и задачи до готового изменения.
- ЭффективныйМультиагентное выполнение параллельно продвигает исследование, реализацию и проверку в нескольких репозиториях и с привычными Agent CLI.
- ИнтересныйНасыщенные и удобные взаимодействия с интерфейсом делают планирование, работу агентов и проектные задачи понятными и доступными.
Скачать для Windows
Поделиться HagiCode
Превращайте идеи в готовое ПО.
HagiCode — агентная среда разработки: рабочие процессы OpenSpec планируют изменение, мультиагентное выполнение его реализует, а Hero Scenario делает долгий путь наглядным, так что идеи становятся готовым ПО.
- Умный
- Рабочие процессы OpenSpec превращают намерение в путь от предложения до готового изменения.
- Эффективный
- Мультиагентное выполнение ведёт исследование, реализацию и проверку параллельно.
- Увлекательный
- Удобный интерфейс упрощает планирование, работу агентов и проектные задачи.
© 2026 HagiCode | Powered By hagilight-starlight@0.21.0 | Branch: main | Commit: 745b50b | Built:

