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

🧠 Устранение неполадок RAG (Генерация с использованием поиска)

Генерация с использованием поиска (Retrieval-Augmented Generation, RAG) позволяет языковым моделям работать с внешним контентом — документами, базами знаний и другими источниками — путем извлечения релевантной информации и передачи её модели. Но когда что-то не работает, как ожидалось (например, модель "галлюцинирует" или пропускает релевантную информацию), это часто происходит не из-за модели, а из-за проблемы с контекстом.

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

Общие проблемы RAG и как их устранить 🛠️​

1. Модель "не видит" ваш контент 👁️❌​

Это наиболее распространённая проблема — и она обычно вызвана проблемами в процессе извлечения контента. Модель не «галлюцинирует», потому что она ошибается, а потому что ей изначально не был предоставлен правильный контент.

✅ Решение: Проверьте настройки извлечения контента

  • Перейдите в: Настройки администратора > Документы.
  • Убедитесь, что вы используете надёжный механизм извлечения контента, такой как:
    • Apache Tika
    • Docling
    • Пользовательские извлекатели (в зависимости от типов ваших документов)

📌 Совет: Попробуйте загрузить документ и просмотреть извлечённый контент. Если он пустой или отсутствуют ключевые разделы, вам необходимо настроить параметры извлечения или использовать другой механизм.


2. Используется только малая часть документа 📄➡️✂️​

Open WebUI разработан для работы с моделями, которые по умолчанию имеют ограниченные окна контекста. Например, многие локальные модели (например, стандартные модели Ollama) ограничены 2048 токенами. Из-за этого Open WebUI агрессивно сокращает извлечённый контент, чтобы уместить его в доступное пространство.

✅ Решения:

  • Перейдите в Настройки администратора > Документы
  • Либо:
    • 💡 Включите «Пропустить встраивание и поиск» — это отправляет полный контент напрямую без строгих фильтров поиска.
    • 🔍 Переключитесь на «Режим полного контекста» — это включает более обширный контент в запрос модели.

📌 Предупреждение: Учитывайте ограничения контекста — если ваша модель не может обработать больше токенов, её всё равно обрежет.


3. Слишком короткий лимит токенов ⏳​

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

По умолчанию многие модели (особенно LLM, размещённые в Ollama) ограничены окном контекста в 2048 токенов. Это значит, что только часть извлечённой информации будет реально использована.

✅ Решения:

  • 🛠️ Увеличьте длину контекста модели:
    • Перейдите в Редактор модели или управление чатом
    • Измените длину контекста (например, увеличьте до 8192+ токенов, если поддерживается)

ℹ️ Примечание: Ограничение в 2048 токенов — это серьёзное ограничение. Для лучших результатов RAG рекомендуем использовать модели с более длинными окнами контекста.

✅ Альтернатива: Использовать внешнюю LLM с большей ёмкостью контекста

  • Попробуйте GPT-4, GPT-4o, Claude 3, Gemini 1.5 или Mixtral с контекстом от 8k+
  • Сравните производительность с Ollama — обратите внимание на разницу в точности при добавлении большего объёма контента!

📌 Совет: Используйте внешние модели для лучшей производительности RAG в производственных сценариях.


4. Низкое качество или несоответствие модели для встраивания 📉🧠​

Плохие встраивания = плохой поиск. Если векторное представление вашего контента слабое, то ретривер не извлечёт правильный контент — независимо от мощности вашей LLM.

✅ Решение:

  • Переключитесь на высококачественную модель для встраивания (например, all-MiniLM-L6-v2, Instructor X или OpenAI embeddings)
  • Перейдите в: Настройки администратора > Документы
  • После смены модели обязательно:
    • ⏳ Переиндексируйте все существующие документы, чтобы новое встраивание вступило в силу.

📌 Помните: Качество встраиваний напрямую влияет на то, какой контент будет извлечён.


5. ❌ 400: NoneType object has no attribute encode​

Эта ошибка указывает на неправильно настроенную или отсутствующую модель для встраивания. Когда Open WebUI пытается создать встраивания, но подходящая модель не загружена, текст обработать невозможно, что вызывает эту непонятную ошибку.

💥 Причина:

  • Ваша модель для встраивания настроена неправильно.
  • Она могла быть загружена не полностью.
  • Или если вы используете внешнюю модель для встраивания, она может быть недоступна.

✅ Решение:

  • Перейдите в: Настройки администратора > Документы > Модель для встраивания
  • Сохраните модель для встраивания ещё раз — даже если она уже выбрана. Это принудительно запускает повторную проверку/загрузку.
  • Если вы используете удалённый/внешний инструмент для встраивания, убедитесь, что он запущен и доступен для Open WebUI.

📌 Совет: После исправления конфигурации попробуйте повторно встроить документ и убедитесь, что в логах нет ошибок.


🧪 Совет: протестируйте с GPT-4o или GPT-4​

Если вы не уверены, связана ли проблема с поиском, ограничениями токенов или встраиванием, попробуйте временно использовать GPT-4o (например, через OpenAI API). Если результаты внезапно станут точнее, это сильный сигнал о том, что местная модель ограничивается длиной контекста (2048 по умолчанию в Ollama).

  • GPT-4o обрабатывает большие входные данные (128k токенов!)
  • Предоставляет отличный эталон для оценки надёжности вашей системы RAG

Итоговый контрольный список ✅​

ПроблемаИсправление
🤔 Модель не «видит» содержимоеПроверьте настройки документа экстрактора
🧹 Используется только часть содержимогоВключите режим полного контекста или обойдите встраивание
⏱ Ограничение в 2048 токеновУвеличьте длину контекста модели или используйте LLM с большим контекстом
📉 Неверное получение данныхПереключитесь на лучшую модель встраивания, затем переиндексируйте
Все еще есть вопросы?Протестируйте с GPT-4o и сравните результаты

Оптимизировав эти области — извлечение, встраивание, получение и контекст модели — вы сможете существенно улучшить точность работы вашей LLM с документами. Не позволяйте «окну» в 2048 токенов или слабой системе получения данных ограничивать возможности вашего ИИ 🎯.