INTEGRITY Документация

Генерация с дополнением поиском (RAG)

Retrieval-Augmented Generation (RAG) представляет собой подход в обработке естественного языка, который сочетает механизмы поиска с генеративными моделями и повышает качество генерации текста.

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

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

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

Наполнение базы знаний

Рисунок 1: наполнение базы знаний
Рисунок 1: наполнение базы знаний
  1. Загрузка от клиента: Отправка POST-запроса с документами на конечную точку API.
  2. Обработка входных данных: Обработка входящего запроса с помощью Workers и отправлять сообщения в Queues для увеличения очереди обработки.
  3. Пакетная обработка: Используйте Queues чтобы инициировать потребитель которые обрабатывают входные документы пакетами, чтобы предотвратить перегрузку последующих этапов.
  4. Генерация эмбеддингов: Генерация векторов эмбеддингов через вызов Workers AI модели текстовых эмбеддингов для документов.
  5. Векторное хранилище: Добавление векторов эмбеддингов в Vectorize.
  6. Хранение документов: Добавление документов в D1 для постоянного хранения данных.
  7. Механизм Ack/Retry: Сигнализация об успехе или ошибке с помощью Queues Runtime API в потребителе для каждого документа. Queues при необходимости запланирует повторные попытки.

Запросы к базе знаний

Рисунок 2: запросы к базе знаний
Рисунок 2: запросы к базе знаний
  1. Клиентский запрос: Отправка GET-запроса с параметрами на конечную точку API.
  2. Генерация эмбеддингов: Генерация векторов эмбеддингов через вызов Workers AI модели текстовых эмбеддингов для входящего запроса.
  3. Векторный поиск: Запрос к Vectorize используя векторное представление запроса для получения связанных векторов.
  4. Поиск документов: Получение связанных документов из D1 на основе результатов поиска от Vectorize.
  5. Генерация текста: Передача исходного запроса и найденных документов в качестве контекста в Workers AI модели для генерации текста чтобы сгенерировать ответ.