? Потрясающее поисковое дополненное поколение (RAG)
Этот репозиторий содержит тщательно подобранный список Awesome List и общую информацию о приложениях с расширенной генерацией данных (RAG) в генеративном искусственном интеллекте.
Поисково-дополненная генерация (RAG) — это метод генеративного искусственного интеллекта, при котором дополнительный контекст извлекается из внешних источников для обогащения процесса генерации моделей большого языка (LLM). Этот подход позволяет LLM включать актуальную, конкретную или конфиденциальную информацию, которой им может не хватать только из данных предварительного обучения.
Содержание
- Общая информация о РАГ
- Подходы
- ? Платформы, облегчающие RAG
- Техники
- Метрики
- ? Базы данных
Общая информация о РАГ
В традиционных подходах RAG используется базовая структура для извлечения документов, которые дополняют контекст запроса LLM. Например, при запросе материалов для ремонта дома LLM может обладать общими знаниями о ремонте, но не иметь конкретных сведений о конкретном доме. Реализация архитектуры RAG позволяет быстро искать и извлекать соответствующие документы, например чертежи, чтобы предлагать более индивидуальные ответы. Это гарантирует, что LLM включает конкретную информацию о потребностях ремонта, тем самым повышая точность своих ответов.
Типичная реализация RAG состоит из следующих ключевых шагов:
- Разделите базу знаний: разбейте корпус документов на более мелкие, управляемые фрагменты.
- Создание внедрений. Примените модель внедрения, чтобы преобразовать эти текстовые фрагменты в векторные внедрения, уловив их семантическое значение.
- Сохранение в базе данных векторов. Сохраняйте вложения в базе данных векторов, обеспечивая быстрый поиск на основе семантического сходства.
- Обработка пользовательских запросов: преобразуйте пользовательский запрос во встраивание, используя ту же модель, которая применялась к текстовым фрагментам.
- Получение соответствующих данных. Найдите в базе данных векторов встраивания, которые точно соответствуют встраиванию запроса на основе семантического сходства.
- Улучшите подсказку: включите в подсказку LLM наиболее релевантные фрагменты текста, чтобы обеспечить ценный контекст для генерации ответа.
- Создание ответа. LLM использует расширенную подсказку для предоставления точного и адаптированного к запросу пользователя ответа.
Подходы
Реализации RAG различаются по сложности: от простого поиска документов до продвинутых методов, объединяющих итеративные циклы обратной связи и улучшения, специфичные для предметной области. Подходы могут включать:
- Корректирующий RAG (CRAG): методы исправления или уточнения полученной информации перед интеграцией в ответы LLM.
- Точная настройка с расширенным поиском (RAFT): методы точной настройки LLM специально для расширенных задач поиска и генерации.
- Саморефлексивная RAG: модели, которые динамически корректируют стратегии поиска на основе обратной связи о производительности модели.
- RAG Fusion: методы объединения нескольких методов поиска для улучшения интеграции контекста.
- Временной расширенный поиск (TAR): учет чувствительных ко времени данных в процессах поиска.
- Plan-then-RAG (PlanRAG): стратегии, включающие этапы планирования перед выполнением RAG для сложных задач.
- GraphRAG: структурированный подход с использованием графов знаний для улучшенной интеграции контекста и рассуждений.
- FLARE — подход, включающий активную генерацию дополненной информацией для улучшения качества ответа.
- Контекстный поиск. Улучшает поиск за счет добавления соответствующего контекста к частям документа перед поиском, что повышает релевантность информации, полученной из больших баз знаний.
? Платформы, облегчающие RAG
- Haystack — платформа оркестрации LLM для создания настраиваемых, готовых к использованию приложений LLM.
- LangChain — универсальная платформа для работы с LLM.
- Семантическое ядро — SDK от Microsoft для разработки приложений генеративного искусственного интеллекта.
- LlamaIndex — платформа для подключения пользовательских источников данных к LLM.
- Cognita — платформа RAG с открытым исходным кодом для создания модульных и готовых к использованию приложений.
- Verba — приложение с открытым исходным кодом для RAG из коробки.
- Mastra — платформа Typescript для создания приложений искусственного интеллекта.
Техники
Очистка данных
- Методы очистки данных: этапы предварительной обработки для уточнения входных данных и повышения производительности модели.
Подсказка
- Стратегии
- Маркировка и маркировка: добавление семантических тегов или меток к извлеченным данным для повышения релевантности.
- Причина и действие (ReAct) (ReAct): интеграция возможностей рассуждения для управления ответами LLM на основе полученного контекста.
- Цепочка мыслей (CoT): Поощрение модели обдумывать проблемы шаг за шагом, прежде чем давать ответ.
- Цепочка проверки (CoVe): предложение модели проверить каждый шаг ее рассуждений на предмет точности.
- Самосогласованность: создание нескольких путей рассуждения и выбор наиболее последовательного ответа.
- Нулевые подсказки: создание подсказок, которые помогут модели без каких-либо примеров.
- Небольшие подсказки: предоставление нескольких примеров в подсказке, чтобы продемонстрировать желаемый формат ответа.
- Кэширование
- Кэширование подсказок: оптимизирует LLM за счет сохранения и повторного использования предварительно вычисленных состояний внимания.
Разбивка на части
- Разбиение на фрагменты фиксированного размера
- Разделение текста на сегменты одинакового размера для эффективной обработки.
- Разбивает текст на фрагменты в зависимости от размера и перекрытия.
- Пример: разделение по символам (LangChain).
- Пример: SentenceSplitter (LlamaIndex).
- Рекурсивное разбиение на фрагменты
- Иерархическая сегментация с использованием рекурсивных алгоритмов для сложных структур документов.
- Пример: рекурсивное разделение по символам (LangChain).
- Разбивка на основе документов
- Сегментация документов на основе метаданных или признаков форматирования для целевого анализа.
- Пример: MarkdownHeaderTextSplitter (LangChain).
- Пример. Обработка встраивания изображений и текста с помощью таких моделей, как OpenCLIP.
- Семантическое разделение
- Извлечение значимых разделов на основе семантической релевантности, а не произвольных границ.
- Агентическое фрагментирование
- Интерактивные методы фрагментации, в которых LLM управляют сегментацией.
Вложения
- Выберите модель внедрения
- Таблица лидеров MTEB : изучите тест Hugging Face для оценки встраивания моделей.
- Пользовательские внедрения : разрабатывайте индивидуальные внедрения для конкретных областей или задач для повышения производительности модели. Пользовательские внедрения могут отражать терминологию и нюансы, специфичные для предметной области. Методы включают тонкую настройку предварительно обученных моделей на вашем собственном наборе данных или обучение внедрению с нуля с использованием таких платформ, как TensorFlow или PyTorch.
Поиск
- Методы поиска
- Индекс векторного магазина
- Простая и эффективная форма поиска.
- Содержимое векторизуется и сохраняется в виде плоских векторов содержимого.
- Иерархический индексный поиск
- Иерархически сузьте данные до разных уровней.
- Выполняет поиск в иерархическом порядке.
- Гипотетические вопросы
- Используется для увеличения сходства между частями базы данных и запросами (то же самое с HyDE).
- LLM используется для создания конкретных вопросов для каждого фрагмента текста.
- Преобразует эти вопросы в векторные вложения.
- Во время поиска сопоставляет запросы с этим индексом векторов вопросов.
- Гипотетические внедрения документов (HyDE)
- Используется для увеличения сходства между фрагментами базы данных и запросами (то же самое и с гипотетическим вопросами).
- LLM используется для генерации гипотетического ответа на основе запроса.
- Преобразует этот ответ в векторное внедрение.
- Сравнивает вектор запроса с гипотетическим вектором ответа.
- От малого к большому поиску
- Улучшает поиск за счет использования меньших фрагментов для поиска и более крупных для контекста.
- Меньшие дочерние фрагменты относятся к более крупным родительским фрагментам.
- Изменение ранжирования . Улучшает результаты поиска в конвейерах RAG за счет изменения порядка первоначально полученных документов, определения приоритета тех из них, которые наиболее семантически релевантны запросу.
Метрики
Показатели поиска
Эти метрики используются для измерения сходства между внедрениями, что имеет решающее значение для оценки того, насколько эффективно системы RAG извлекают и интегрируют внешние документы или источники данных. Выбрав соответствующие показатели сходства, вы можете оптимизировать производительность и точность вашей системы RAG. Кроме того, вы можете разработать собственные показатели, адаптированные к вашему конкретному домену или нише, чтобы учесть нюансы, специфичные для домена, и повысить релевантность.
Косинусное сходство
- Измеряет косинус угла между двумя векторами в многомерном пространстве.
- Очень эффективен для сравнения вложений текста, где направление векторов представляет семантическую информацию.
- Обычно используется в системах RAG для измерения семантического сходства между встраиваниями запросов и встраиваниями документов.
Скалярное произведение
- Вычисляет сумму произведений соответствующих записей двух последовательностей чисел.
- Эквивалент косинусного сходства, когда векторы нормализованы.
- Простой и эффективный, часто используется с аппаратным ускорением для крупномасштабных вычислений.
Евклидово расстояние
- Вычисляет расстояние по прямой между двумя точками в евклидовом пространстве.
- Может использоваться с вложениями, но может потерять эффективность в многомерных пространствах из-за «проклятия размерности».
- Часто используется в алгоритмах кластеризации, таких как K-средние, после уменьшения размерности.
Жаккардовое сходство
- Измеряет сходство между двумя конечными множествами как размер пересечения, деленный на размер объединения множеств.
- Полезно при сравнении наборов токенов, например, в моделях «мешок слов» или сравнениях n-грамм.
- Менее применимо к непрерывным вложениям, производимым LLM.
Примечание. Косинусное сходство и скалярное произведение обычно считаются наиболее эффективными показателями для измерения сходства между многомерными вложениями.
Метрики оценки ответа
Эти показатели оценивают качество и актуальность ответов, сгенерированных вашей системой RAG, оценивая, насколько они точны, контекстуально уместны и надежны. Применяя эти показатели оценки, вы можете получить представление о производительности вашей системы и определить области для улучшения.
- Автоматизированный бенчмаркинг
- Люди как судьи
- Модели в качестве судей
Инструменты
Эти инструменты могут помочь в оценке производительности вашей системы RAG: от отслеживания отзывов пользователей до регистрации взаимодействий с запросами и сравнения нескольких показателей оценки с течением времени.
- LangFuse : инструмент с открытым исходным кодом для отслеживания показателей LLM, наблюдения и оперативного управления.
- Ragas : платформа, которая помогает оценивать конвейеры RAG.
- LangSmith : платформа для создания приложений LLM промышленного уровня, позволяющая вам внимательно отслеживать и оценивать ваше приложение.
- Hugging Face Evaluate : инструмент для расчета таких показателей, как BLEU и ROUGE, для оценки качества текста.
- Веса и предвзятости : отслеживает эксперименты, регистрирует показатели и визуализирует производительность.
? Базы данных
В приведенном ниже списке представлены несколько систем баз данных, подходящих для приложений расширенной генерации данных (RAG). Они охватывают широкий спектр вариантов использования RAG, помогая эффективно хранить и извлекать векторы для генерации ответов или рекомендаций.
Тесты
- Выбор векторной базы данных
Распределенные механизмы обработки и обслуживания данных:
- Apache Cassandra: распределенная система управления базами данных NoSQL.
- MongoDB Atlas: глобально распределенная многомодельная служба баз данных со встроенным векторным поиском.
- Vespa: механизм обработки и обслуживания больших данных с открытым исходным кодом, предназначенный для приложений реального времени.
Поисковые системы с векторными возможностями:
- Elasticsearch: предоставляет возможности векторного поиска наряду с традиционными функциями поиска.
- OpenSearch: распределенная система поиска и аналитики, ответвление Elasticsearch.
Векторные базы данных:
- Chroma DB: база данных для встраивания с открытым исходным кодом, основанная на искусственном интеллекте.
- Milvus: векторная база данных с открытым исходным кодом для приложений на базе искусственного интеллекта.
- Сосновая шишка: бессерверная векторная база данных, оптимизированная для рабочих процессов машинного обучения.
- Oracle AI Vector Search: интегрирует возможности векторного поиска в базе данных Oracle для семантических запросов на основе векторных вложений.
Расширения реляционных баз данных:
- Pgvector: расширение с открытым исходным кодом для поиска по сходству векторов в PostgreSQL.
Другие системы баз данных:
- Azure Cosmos DB: глобально распределенная многомодельная служба базы данных со встроенным векторным поиском.
- Couchbase: распределенная облачная база данных NoSQL.
- Lantern: персональная поисковая система с учетом конфиденциальности.
- LlamaIndex: использует простое векторное хранилище в памяти для быстрого экспериментирования.
- Neo4j: Система управления графовыми базами данных.
- Qdrant: векторная база данных с открытым исходным кодом, предназначенная для поиска по сходству.
- Redis Stack: хранилище структур данных в памяти, используемое в качестве базы данных, кеша и брокера сообщений.
- SurrealDB: масштабируемая многомодельная база данных, оптимизированная для данных временных рядов.
- Weaviate: облачная поисковая система векторов с открытым исходным кодом.
Библиотеки и инструменты векторного поиска:
- FAISS: библиотека для эффективного поиска по сходству и кластеризации плотных векторов, предназначенная для обработки крупномасштабных наборов данных и оптимизированная для быстрого поиска ближайших соседей.