🧠 Устранение неполадок 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 токенов или слабой системе получения данных ограничивать возможности вашего ИИ 🎯.