diff --git a/rag/README.md b/rag/README.md index abf40df..3b48629 100644 --- a/rag/README.md +++ b/rag/README.md @@ -260,3 +260,9 @@ python3 rag.py --help Этот проект -- пазл, который позволяет пошагово, по косточкам понять и настроить работу RAG. Частично (в качестве агентов) в проекте участвовали модели семейств qwen, clause и chatgpt. + +## Дополнительные материалы + +* https://github.com/ollama/ollama/blob/main/docs/api.md +* https://habr.com/ru/articles/881268/ +* https://habr.com/ru/companies/oleg-bunin/articles/835910/ diff --git a/rag/mindmap.puml b/rag/mindmap.puml new file mode 100644 index 0000000..ff96900 --- /dev/null +++ b/rag/mindmap.puml @@ -0,0 +1,132 @@ +@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) +***: Подбор модели эмбеддинга * +та же, что на этапе векторизации; +***: Подбор top_k +количество чанков для поиска; + +** Ранжирование\n(Re-ranking) +*** Подбор модели реранкинга +' **** Проблема русского языка +***: Подбор top_n +количество лучших чанков после реранка; + +** Генерация ответа +*** Подбор модели генерации +**** Проблема размера модели\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