Доработка rag, удаление скриптов моделей, актуализация README
This commit is contained in:
174
rag/README.md
174
rag/README.md
@@ -7,10 +7,10 @@
|
||||
```bash
|
||||
cd ..; ./up; cd -
|
||||
python3 -m venv .venv
|
||||
source ./venv/bin/activate
|
||||
pip install beautifulsoup4 markdownify sentence-transformers qdrant-client langchain transformers hashlib
|
||||
source .venv/bin/activate
|
||||
pip install beautifulsoup4 markdownify sentence-transformers qdrant-client langchain transformers
|
||||
pip install torch torchvision --index-url https://download.pytorch.org/whl/cpu
|
||||
./download.sh 123456789
|
||||
./download.sh 123456789 # <<== pageId страницы в Confluence
|
||||
python3 convert.py
|
||||
python3 vectorize.py
|
||||
python3 rag.py --interactive
|
||||
@@ -153,10 +153,6 @@ python3 vectorize.py
|
||||
- молниеносный поиск по индексу чанков (частям документов);
|
||||
- корректное насыщение контекста для генеративной модели.
|
||||
|
||||
Впоследствии embedding-модель будет встраивать эти данные в диалог с генеративной моделью.
|
||||
Каждый запрос сначала будет обрабатывать именно она, находя подходящие по векторам документы, и подставлять их в контекст генеративной модели.
|
||||
Последняя будет всего лишь генерировать ответ, опираясь на предоставленные из документов данные, ссылаясь на них в ответе.
|
||||
|
||||
Для получения справки по скрипту выполни команду:
|
||||
|
||||
```
|
||||
@@ -192,41 +188,167 @@ python3 rag.py --help
|
||||
|
||||
### Кастомный системный промпт
|
||||
|
||||
Если хочется уточнить роль генеративной модели, можно создать файл `sys_prompt.txt` и прописать туда всё необходимое, учитывая следующие правила:
|
||||
Если хочется уточнить роль генеративной модели, можно создать текстовый файл и прописать туда всё необходимое, учитывая следующие правила:
|
||||
|
||||
1. Шаблон `{{sources}}` будет заменён на цитаты документов, найденные в qdrant
|
||||
1. Шаблон `{{sources}}` будет заменён на цитаты документов, найденных в qdrant
|
||||
2. Шаблон `{{query}}` будет заменён на запрос пользователя
|
||||
3. Если этих двух шаблонов не будет в промпте, результаты будут непредсказуемыми
|
||||
4. Каждая цитата в списке цитат формируется в формате:
|
||||
```
|
||||
--- Source X ---
|
||||
```xml
|
||||
<source id="Z">
|
||||
Lorem ipsum dolor sit amet
|
||||
<пустая строка>
|
||||
</source>
|
||||
```
|
||||
5. Если в этой директории нет файла `sys_prompt.txt`, то будет применён промпт по умолчанию (см. функцию `generate_answer()`).
|
||||
5. При вызове `rag.py` указать путь к файлу промпта, используя аргумент `--sys-prompt $путь_к_файлу`
|
||||
6. Если указанного файла не существует, то будет применён промпт по умолчанию.
|
||||
|
||||
Посмотреть полный промпт можно указав аргумент `--show_prompt` при вызове `rag.py`.
|
||||
|
||||
### Неплохие лёгкие модели
|
||||
### Неплохие модели для экспериментов
|
||||
|
||||
Для эмбеддинга:
|
||||
Обозначения:
|
||||
* ☑️ — по умолчанию
|
||||
* 🧠 — размышляющая
|
||||
* 🏋️ — требуются ресурсы
|
||||
|
||||
- `sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2` (по умолчанию, хорошо адаптирована под русский язык)
|
||||
- `nomad-embed-text` (популярная)
|
||||
#### Эмбеддинг
|
||||
|
||||
- [`sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2`](https://hf.co/sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2) ☑️
|
||||
- [`nomad-embed-text`](https://ollama.com/library/nomad-embed-text)
|
||||
- ...
|
||||
|
||||
Для генерации ответов:
|
||||
#### Ранжирование
|
||||
|
||||
- `qwen2.5:3b` (по умолчанию)
|
||||
- `qwen3:8b`
|
||||
- `gemma3n:e2b`
|
||||
- `phi4-mini:3.8b`
|
||||
- `qwen2.5:1.5b`
|
||||
- [`cross-encoder/ms-marco-MMarco-mMiniLMv2-L12-V1`](https://hf.co/cross-encoder/ms-marco-MMarco-mMiniLMv2-L12-V1) ☑️
|
||||
- `cross-encoder/ms-marco-MiniLM-L-6-v2`
|
||||
- `cross-encoder/ms-marco-TinyBERT-L-2-v2`
|
||||
- ...
|
||||
|
||||
> [!NOTE]
|
||||
> Чем меньше млрд параметров (b, billion), тем меньше вероятности получить корректный ответ на не-английском языке.
|
||||
> Такие модели работают быстро, но качество ответов низкое.
|
||||
> Чем больше параметров, тем лучше и медленее ответы.
|
||||
> Другие можно найти здесь: https://github.com/AlexeyMalafeev/ruformers
|
||||
|
||||
#### Генеративные
|
||||
|
||||
Перечислен список: по убыванию качества ответов и размера модели, по возрастанию скорости ответов на обычном домашнем ПК.
|
||||
|
||||
- [`deepseek-r1:8b`](https://ollama.com/library/deepseek-r1) 🏋️🧠
|
||||
- [`qwen3:8b`](https://ollama.com/library/qwen3) 🏋️🧠
|
||||
- [`dolphin3:8b`](https://ollama.com/library/dolphin3)🏋️
|
||||
- [`cogito:8b`](https://ollama.com/library/cogito)🏋️
|
||||
- [`openchat:7b`](https://ollama.com/library/openchat) 🏋️☑️
|
||||
- [`phi4-mini:3.8b`](https://ollama.com/library/phi4-mini)
|
||||
- [`gemma3:4b`](https://ollama.com/library/gemma3)
|
||||
- [`gemma3n:e4b`](https://ollama.com/library/gemma3n)
|
||||
- [`gemma3n:e2b`](https://ollama.com/library/gemma3n)
|
||||
|
||||
<details>
|
||||
<summary>Полный список лёгких и средних моделей, которые можно использовать не только в RAG</summary>
|
||||
|
||||
```
|
||||
codegemma:2b
|
||||
codegemma:7b
|
||||
codellama:7b
|
||||
codellama:13b
|
||||
codellama:34b
|
||||
codeqwen:1.5b
|
||||
codeqwen:7b
|
||||
codestral:22b
|
||||
deepcoder:1.5b
|
||||
deepcoder:14b
|
||||
deepseek-coder:1.3b
|
||||
deepseek-coder:6.7b
|
||||
deepseek-coder:33b
|
||||
deepseek-coder-v2:16b
|
||||
deepseek-r1:1.5b
|
||||
deepseek-r1:7b
|
||||
deepseek-r1:8b
|
||||
deepseek-r1:14b
|
||||
deepseek-r1:32b
|
||||
devstral:24b
|
||||
dolphin3:8b
|
||||
gemma:2b
|
||||
gemma:7b
|
||||
gemma3:1b
|
||||
gemma3:4b
|
||||
gemma3:12b
|
||||
gemma3:27b
|
||||
gemma3:270m
|
||||
gemma3n:e2b
|
||||
gemma3n:e4b
|
||||
gpt-oss:20b
|
||||
granite-code:3b
|
||||
granite-code:8b
|
||||
granite-code:20b
|
||||
granite-code:34b
|
||||
llama2:7b
|
||||
llama2:13b
|
||||
llama3:8b
|
||||
llama3.1:8b
|
||||
llama3.2:1b
|
||||
llama3.2:3b
|
||||
llava-llama3:8b
|
||||
magistral:24b
|
||||
mistral:7b
|
||||
mistral-nemo:12b
|
||||
mistral-small:22b
|
||||
mistral-small:24b
|
||||
mixtral:8x7b
|
||||
mxbai-embed-large:latest
|
||||
nomic-embed-text:latest
|
||||
openthinker:7b
|
||||
openthinker:32b
|
||||
phi:2.7b
|
||||
phi3:3.8b
|
||||
phi3:14b
|
||||
phi3:instruct
|
||||
phi3:medium
|
||||
phi3:mini
|
||||
phi3.5:3.8b
|
||||
phi4:14b
|
||||
phi4-mini-reasoning:3.8b
|
||||
phi4-mini:3.8b
|
||||
phi4-reasoning:14b
|
||||
qwen:0.5b
|
||||
qwen:1.8b
|
||||
qwen:4b
|
||||
qwen:7b
|
||||
qwen:14b
|
||||
qwen:32b
|
||||
qwen2:0.5b
|
||||
qwen2:1.5b
|
||||
qwen2:7b
|
||||
qwen2.5:0.5b
|
||||
qwen2.5:1.5b
|
||||
qwen2.5:3b
|
||||
qwen2.5:7b
|
||||
qwen2.5:14b
|
||||
qwen2.5:32b
|
||||
qwen2.5-coder:0.5b
|
||||
qwen2.5-coder:1.5b
|
||||
qwen2.5-coder:3b
|
||||
qwen2.5-coder:7b
|
||||
qwen2.5-coder:14b
|
||||
qwen2.5-coder:32b
|
||||
qwen3:0.6b
|
||||
qwen3:1.7b
|
||||
qwen3:4b
|
||||
qwen3:8b
|
||||
qwen3:14b
|
||||
qwen3:30b
|
||||
qwen3:32b
|
||||
qwen3-coder:30b
|
||||
qwq:32b
|
||||
smollm2:1.7m
|
||||
smollm2:135m
|
||||
smollm2:360m
|
||||
stable-code:3b
|
||||
stable-code:instruct
|
||||
starcoder2:3b
|
||||
starcoder2:7b
|
||||
starcoder2:15b
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
## Дисклеймер
|
||||
|
||||
|
||||
Reference in New Issue
Block a user