133 lines
5.3 KiB
Plaintext
133 lines
5.3 KiB
Plaintext
@startmindmap RAG
|
||
title Mindmap по построению RAG
|
||
header
|
||
https://git.axenov.dev/anthony/ollama
|
||
endheader
|
||
|
||
* RAG
|
||
|
||
** Подготовка сырых данных
|
||
*** Количество
|
||
****_ Больше => сложнее
|
||
*** Формат
|
||
**** HTML
|
||
*****_ Очистка
|
||
**** Markdown
|
||
**** JSON
|
||
**** PDF
|
||
***** OCR
|
||
****** Проблема плохого текста\n(сканы, картинки, фото)
|
||
****** Проблема разметки текста\n(колонки, обтекание картинок)
|
||
**** Проблема наличия таблиц
|
||
*****_ Оставить
|
||
*****_ Удалить
|
||
*****_ Конвертировать
|
||
******_ Markdown
|
||
*******_ Таблица
|
||
*******_ Список
|
||
******_ CSV
|
||
*** Качество
|
||
**** Очистка
|
||
*****_ Картинки
|
||
*****_ Бессмысленный текст
|
||
*****_ Разметка HTML, XML, ...
|
||
**** Метаданные
|
||
*****_ Название
|
||
*****_ Ссылка
|
||
*****_ Дата
|
||
*****_ Автор
|
||
*****_ ...
|
||
**** Семантика и смысл текстов
|
||
***** Разделение на осмысленные наборы
|
||
|
||
** Встраивание данных
|
||
*** Векторизация
|
||
**** Подбор модели эмбеддинга *
|
||
***** Проблема русского языка
|
||
**** Подбор способа разделения
|
||
***** Fixed-length chunking\n(строго по символам)
|
||
******_ самый простой и быстрый
|
||
******_ хорош для длинных текстов
|
||
******_ рвёт тексты с потерей связи
|
||
***** Semantic chunking\n(по смысловым блокам)
|
||
******_ посложнее
|
||
******_ сохраняет логику, даёт больше смысла
|
||
******_ лучше поиск
|
||
******_ чанки могут быть разных размеров
|
||
***** Structural chunking\n(по структуре текстов)
|
||
******_ самый сложный и медленный
|
||
******_ сохраняет контекст
|
||
******_ хорош для сложных и технических текстов
|
||
******_ требует структурированные входные данные
|
||
**** Подбор размера чанка
|
||
*****_ уменьшение
|
||
******_ меньше смысла
|
||
******_ больше нерелевантных результатов и галлюцинаций
|
||
******_ быстрее поиск
|
||
******_ хуже ответ
|
||
*****_ увеличение
|
||
******_ больше смысла
|
||
******_ больше размер контекста
|
||
******_ медленнее поиск
|
||
******_ хуже ответ
|
||
**** Подбор перекрытия чанков
|
||
*****_ уменьшение
|
||
******_ хуже смысловая связь документов
|
||
******_ более уникальные чанки
|
||
*****_ увеличение
|
||
******_ лучше смысловая связь документов
|
||
******_ сильнее дублирование частей чанков
|
||
*** Индексация
|
||
**** Метод хранения чанков
|
||
*****_ chromadb (примитивно на базе sqlite, но медленно)
|
||
*****_ qdrant (быстро, но немного усложняет деплой)
|
||
*****_ postgres + pgvector (сложнее)
|
||
*****_ ...
|
||
|
||
** Классификация\n(Classification)
|
||
*** Подбор модели классификации
|
||
**** Проблема русского языка
|
||
|
||
** Поиск и встраивание\n(Embedding)
|
||
***: Подбор модели эмбеддинга *
|
||
<i>та же, что на этапе векторизации</i>;
|
||
***: Подбор top_k
|
||
<i>количество чанков для поиска</i>;
|
||
|
||
** Ранжирование\n(Re-ranking)
|
||
*** Подбор модели реранкинга
|
||
' **** Проблема русского языка
|
||
***: Подбор top_n
|
||
<i>количество лучших чанков после реранка</i>;
|
||
|
||
** Генерация ответа
|
||
*** Подбор модели генерации
|
||
**** Проблема размера модели\n(млрд параметров)
|
||
*****_ меньше
|
||
******_ требует меньше ресурсов (RAM, CPU, GPU)
|
||
******_ выше скорость ответа (TPS)
|
||
******_ ниже качество (мешанина токенов, путает язык, игнорирует инструкции)
|
||
*****_ больше
|
||
******_ требует больше ресурсов (RAM, CPU, GPU)
|
||
******_ ниже скорость ответа (TPS)
|
||
******_ выше качество, но может быть избыточно, в зависимости от домена
|
||
*** Подбор системного промпта
|
||
**** Проблема русского языка
|
||
*****_ модель может его не понимать/генерировать
|
||
*****_ язык сложнее, занимает больше токенов в контексте
|
||
**** Проблема размера контекста
|
||
*****: Проблема Lost-in-the-middle
|
||
----
|
||
Исследование:
|
||
* коротко https://huggingface.co/papers/2307.03172
|
||
* целиком https://arxiv.org/abs/2307.03172
|
||
;
|
||
******_ ...
|
||
*****_ Сдвиг контекстного окна
|
||
*****_ Сжатие контекста
|
||
*** Подбор настроек генерации
|
||
****_ temperature
|
||
****_ top_p?
|
||
****_ ...
|
||
@endmindmap
|