Перейти к содержимому

Выберите язык

Текущий язык: Русский

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)»

Awesome Ask DeepWiki Awesome-RAG Agent Plugin

Подборка инструментов, фреймворков, методов и учебных материалов для создания систем генерации с дополненной выборкой (RAG). В этом репозитории собрана экосистема RAG и ссылки на авторитетные источники, руководства и реализации, помогающие изучать и создавать приложения RAG.

Также доступен плагин агента для VS Code, GitHub Copilot CLI и Claude Code.

Генерация с дополненной выборкой (RAG) — продвинутая технология генеративного ИИ, расширяющая возможности больших языковых моделей (LLM): во время генерации она динамически извлекает и учитывает релевантный контекст из внешних источников знаний. В отличие от традиционных LLM, опирающихся только на предобученные знания, системы RAG дают моделям доступ к актуальной, предметной или закрытой информации, значительно повышая точность, снижая число галлюцинаций и обеспечивая интеграцию знаний в реальном времени.

  • Снижение числа галлюцинаций: Формирует ответы на основе найденных фактических данных
  • Адаптация к предметной области: Позволяет LLM работать со специализированными знаниями без дообучения
  • Обновления в реальном времени: Учитывает актуальную информацию без переобучения модели
  • Экономическая эффективность: Экономичнее дообучения для задач в конкретной предметной области
  • Прозрачность: Указывает источники сгенерированного содержимого
  • Конфиденциальность и безопасность: Хранит конфиденциальные данные в частных базах знаний

RAG устраняет фундаментальное ограничение LLM: фиксированную дату актуальности знаний и неспособность обращаться к внешней информации. В традиционных реализациях RAG конвейер поиска дополняет запросы к LLM контекстно-релевантными документами из базы знаний. Например, при вопросе о материалах для ремонта конкретного дома LLM может знать общие сведения о ремонте, но не детали этого объекта. Система RAG извлечёт нужные документы (планы, спецификации материалов, местные строительные нормы) и даст точный ответ с учётом контекста.

  • 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 можно строить по различным шаблонам в зависимости от требований:

  • 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, а не по эмбеддингам и векторному сходству. Устраняет необходимость в разбиении на фрагменты и векторных БД, обеспечивая объяснимый контекстный поиск по сложным профессиональным документам.
  • 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 с широкой поддержкой 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 за счёт сохранения и повторного использования предварительно вычисленных состояний внимания.
  • Структурирование

Стратегия разбиения на фрагменты — одно из важнейших решений при проектировании систем RAG, напрямую влияющее на точность поиска и качество контекста. Оптимальный подход зависит от типов документов, особенностей предметной области и шаблонов запросов.

  • Fixed-Size Chunking

    • Применение: Простые однородные документы, в которых структура не так важна
    • Характеристики: Делит текст на сегменты одинакового размера (обычно 256–512 токенов) с настраиваемым перекрытием (10–20%)
    • Преимущества: Простая реализация, предсказуемый размер фрагментов, эффективная обработка
    • Недостатки: Может разрезать предложения и абзацы, теряет структуру документа и фрагментирует смысловые единицы
    • Реализация: CharacterTextSplitter (LangChain), SentenceSplitter (LlamaIndex)
  • Recursive Chunking

    • Применение: Документы с иерархической структурой (Markdown, HTML, код)
    • Характеристики: Рекурсивно делит текст по разделителям (абзацы → предложения → слова), пока не будет достигнут нужный размер фрагмента
    • Преимущества: Сохраняет естественные границы и иерархию документа, улучшает смысловую связность
    • Недостатки: Сложнее в реализации; размер фрагментов меняется; требуется тщательно настраивать разделители
    • Реализация: RecursiveCharacterTextSplitter (LangChain)
  • Document-Based Chunking

    • Применение: Структурированные документы с чёткими разделами (заголовки Markdown, разделы PDF, записи баз данных)
    • Характеристики: Разбивает данные с учётом метаданных документа, форматирования или структурных элементов
    • Преимущества: Сохраняет структуру и контекст документа, позволяет искать с использованием подробных метаданных
    • Недостатки: Требует структурированного ввода; фрагменты могут оказаться слишком большими или маленькими
    • Реализация: MarkdownHeaderTextSplitter (LangChain)
    • Мультимодальность: Обработка изображений и текста с помощью таких моделей, как OpenCLIP
  • Semantic Chunking

    • Применение: Документы, где критически важна смысловая связность (повествовательные тексты, техническая документация)
    • Характеристики: Использует сходство векторных представлений для определения естественных смысловых границ
    • Преимущества: Сохраняет смысловые единицы, адаптируется к содержимому и повышает релевантность поиска
    • Недостатки: Требует значительных вычислительных ресурсов и модели векторных представлений; размер фрагментов менее предсказуем
    • Лучше всего подходит для: Поиск высокого качества, в котором сохранение контекста особенно важно
  • Agentic Chunking

    • Применение: Сложные документы, требующие интеллектуального определения границ сегментов
    • Характеристики: Использует LLM для анализа содержимого и определения оптимальных границ фрагментов
    • Преимущества: Высокая адаптивность, понимание контекста и применение знаний предметной области
    • Недостатки: Высокая стоимость и медленная обработка; требуется доступ к API LLM
    • Лучше всего подходит для: Специализированные предметные области, где стандартные методы разбиения не подходят
  • Adaptive Chunking

    • Применение: Смешанные коллекции документов, для которых нужны разные стратегии разбиения
    • Характеристики: Оценивает несколько методов разбиения по внутренним метрикам и выбирает лучший для каждого документа
    • Преимущества: Гибче универсального подхода, сохраняет структуру и смысловую связность, поддерживает пользовательские разделители и метрики
    • Недостатки: По сравнению с разбиением на фрагменты фиксированного размера или рекурсивным добавляет затраты на оценку и усложняет реализацию

Практические рекомендации по разбиению на фрагменты:

  • Стратегия перекрытия: Перекрытие 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
      • Автоматически переформулирует или расширяет запрос перед поиском, чтобы повысить полноту результатов.
      • Полезно для длинных или неоднозначных пользовательских запросов.
  • Re-ranking: Улучшает результаты поиска в конвейерах RAG, переупорядочивая изначально найденные документы и ставя выше те, которые семантически лучше всего соответствуют запросу.

Модели суждений принимают ограниченные семантические решения на основе извлечённого содержимого, запросов, сгенерированных ответов или состояния конвейера. В отличие от генеративных LLM, их можно использовать как программируемые точки принятия решений в конвейерах RAG для переранжирования, фильтрации, маршрутизации, проверки и оценки.

  • Jev: Модель System One от TypeSafe AI для быстрых типизированных решений. В RAG она может выполнять переранжирование, фильтрацию, маршрутизацию, проверку, обеспечивать защитные механизмы и оценку.
  • AnyJev: Преобразует открытые LLM в типизированные модели принятия решений в стиле Jev; включает коррекцию смещения без меток и необязательную калибровку для решений с пороговыми значениями.

Для систем RAG, используемых в промышленной среде, крайне важно обеспечивать высокое качество, безопасность и надёжность ответов.

  • Снижение числа галлюцинаций

    • Detection Techniques: Реализуйте методы для выявления случаев, когда модели генерируют неподтверждённую информацию
    • Проверка опоры на контекст: Сопоставляйте сгенерированные утверждения с извлечённым контекстом
    • Оценка уверенности: Оценивайте уверенность в сгенерированных ответах по качеству источников
    • Указание источников: Требуйте указывать источники для всех фактических утверждений
    • Качество поиска: Повышайте точность поиска, чтобы снизить риск галлюцинаций
  • Защитные механизмы и безопасность

    • Implementation Guide: Комплексный подход к внедрению механизмов безопасности
    • Модерация содержимого: Фильтруйте вредоносное, предвзятое или недопустимое содержимое на этапах ввода и вывода
    • Снижение предвзятости: Выявляйте и снижайте предвзятость в извлечённом содержимом и сгенерированных ответах
    • Проверка фактов: Проверяйте утверждения по авторитетным источникам или базам знаний
    • Обнаружение токсичности: Используйте классификаторы для выявления и фильтрации токсичного содержимого
  • Предотвращение внедрения промптов

    • Security Guide: Изучение и предотвращение атак с внедрением промптов
    • Проверка входных данных: Тщательно проверяйте и очищайте все внешние входные данные с помощью белых списков, ограничений длины и сопоставления с шаблонами
    • Разделение содержимого: Используйте чёткие разделители, шаблоны и промпты с заданными ролями, чтобы отделять инструкции от пользовательских данных
    • Мониторинг результатов: Постоянно отслеживайте аномалии, неожиданное поведение и нарушения безопасности в ответах
    • Ограничение частоты запросов: Настройте ограничения частоты запросов и обнаружение злоупотреблений для предотвращения систематических атак
    • Изоляция в песочнице: Изолируйте среды выполнения LLM, чтобы ограничить возможный ущерб от успешных атак с внедрением промптов

Метрики сходства векторных представлений

Заголовок раздела «Метрики сходства векторных представлений»

Эти метрики позволяют измерять сходство между векторными представлениями, что важно для оценки эффективности поиска и интеграции внешних документов и источников данных системами RAG. Выбор подходящих метрик сходства помогает оптимизировать производительность и точность системы RAG. Также можно разработать специальные метрики для конкретной предметной области, чтобы учитывать её особенности и повышать релевантность.

  • Cosine Similarity

    • Измеряет косинус угла между двумя векторами в многомерном пространстве.
    • Эффективна для сравнения векторных представлений текста, направление которых несёт семантическую информацию.
    • Часто используется в системах RAG для измерения семантического сходства между векторами запросов и документов.
  • Dot Product

    • Вычисляет сумму произведений соответствующих элементов двух числовых последовательностей.
    • Эквивалентно косинусному сходству, если векторы нормализованы.
    • Просто и эффективно; часто используется с аппаратным ускорением для крупномасштабных вычислений.
  • Euclidean Distance

    • Вычисляет расстояние по прямой между двумя точками в евклидовом пространстве.
    • Можно применять к векторным представлениям, однако в пространствах большой размерности эффективность может снижаться из-за «проклятия размерности».
    • Часто используется в алгоритмах кластеризации, например K-means, после снижения размерности.
  • Jaccard Similarity

    • Измеряет сходство двух конечных множеств как отношение размера пересечения к размеру объединения.
    • Полезно при сравнении наборов токенов, например в моделях «мешка слов» или при сравнении 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 учитывайте баланс затрат и производительности
  • Оптимизация ресурсов: Оптимизируйте инфраструктуру с учётом фактических моделей использования

Подробные руководства по реализации для конкретных платформ см. в документации:

  • Разбиение с учётом предметной области: Для лучшего сохранения контекста используйте семантическое разбиение или разбиение по структуре документа вместо фрагментов фиксированного размера
  • Управление перекрытием: Стратегически применяйте перекрытие (10–20%), чтобы сохранять контекст на границах фрагментов
  • Сохранение метаданных: Сохраняйте структуру документа, заголовки и подсказки форматирования в метаданных фрагментов
  • Разная гранулярность: Рассмотрите иерархическое разбиение: небольшие фрагменты для поиска и более крупные для контекста
  • Оценка моделей: Используйте таблицу лидеров MTEB и тесты для конкретной предметной области, чтобы выбрать подходящие модели
  • Оптимизация размерности: Подбирайте баланс размерности векторных представлений: большая повышает качество, меньшая ускоряет поиск
  • Дообучение для предметной области: При возможности дообучайте векторные представления на данных конкретной предметной области
  • Согласованность: Используйте одну и ту же модель векторных представлений при индексировании и поиске
  • Гибридный поиск: Сочетайте семантический (векторный) и лексический поиск (BM25/по ключевым словам) для повышения полноты результатов
  • Переранжирование: Используйте кросс-энкодеры или модели ранжирования для повышения точности
  • Понимание запросов: Реализуйте классификацию запросов, определение намерений и расширение запросов
  • Разнообразие результатов: Избегайте дублирующихся результатов с помощью ограничений на разнообразие
  • Чёткие инструкции: Чётко указывайте, как использовать извлечённый контекст
  • Указание источников: Запрашивайте цитаты и требуйте, чтобы ответы основывались на предоставленном контексте
  • Примеры для Few-Shot: Добавляйте примеры желаемого формата и качества ответов
  • Сжатие контекста: Если контекст превышает ограничения, используйте суммаризацию или извлечение нужных сведений
  • Многомерные метрики: Оценивайте релевантность, точность, полноту и опору на источники
  • Участие человека в цикле: Используйте отзывы людей для непрерывного улучшения
  • Синтетическая оценка: Создавайте тестовые запросы и ожидаемые результаты для автоматизированного тестирования
  • Мониторинг в промышленной среде: Отслеживайте удовлетворённость пользователей, шаблоны запросов и типы сбоев
  • Циклы обратной связи: Собирайте отзывы пользователей, журналы запросов и метрики производительности
  • Эксперименты: Систематически тестируйте улучшения (разбиение на фрагменты, поиск, промпты) в контролируемых экспериментах
  • Обновления моделей: Планируйте обновление моделей векторных представлений и стратегии миграции
  • Документация: Ведите понятную документацию по архитектуре, принятым решениям и рабочим процедурам

Это ресурс, созданный сообществом и постоянно развивающийся. Мы приветствуем вклад! Чтобы добавить материалы, исправить ошибки или улучшить организацию:

  1. Создайте форк репозитория
  2. Создайте ветку для своих изменений
  3. Отправьте запрос на включение изменений с чётким описанием

Для новых записей проверьте работоспособность ссылок, точность и краткость описаний, а также соответствие содержимого разделу.

Этот проект распространяется по лицензии CC0 1.0 Universal.

HagiCode

HagiCode — агентная среда разработки. Насыщенные и удобные взаимодействия с интерфейсом делают планирование, работу агентов и проектные задачи понятными и доступными, превращая разработку в увлекательный процесс.

Насыщенные и удобные взаимодействия с интерфейсом помогают легче планировать, запускать агентов и вести проектную работу.

Перейти на HagiCodeЧитать документацию
  • УмныйРабочие процессы OpenSpec превращают намерение в исполнимый путь от предложения через дизайн и задачи до готового изменения.
  • ЭффективныйМультиагентное выполнение параллельно продвигает исследование, реализацию и проверку в нескольких репозиториях и с привычными Agent CLI.
  • ИнтересныйНасыщенные и удобные взаимодействия с интерфейсом делают планирование, работу агентов и проектные задачи понятными и доступными.

Скачать для Windows

Получить в Microsoft StoreВсе загрузки

Превращайте идеи в готовое ПО.

HagiCode — агентная среда разработки: рабочие процессы OpenSpec планируют изменение, мультиагентное выполнение его реализует, а Hero Scenario делает долгий путь наглядным, так что идеи становятся готовым ПО.

Умный
Рабочие процессы OpenSpec превращают намерение в путь от предложения до готового изменения.
Эффективный
Мультиагентное выполнение ведёт исследование, реализацию и проверку параллельно.
Увлекательный
Удобный интерфейс упрощает планирование, работу агентов и проектные задачи.

Покинуть Awesome Site?

Вы собираетесь перейти на внешний сайт. Мы не контролируем его содержимое и правила конфиденциальности.

Адрес назначения

Перейти на сайт