1
0
Files
ollama/rag/mindmap.puml

133 lines
5.3 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

@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