Обновить

Комментарии 47

Интересная статья, попробую применить на практике, спасибо!

Спасибо! Надеюсь, материал пригодится. Тут всё равно лучше тестировать связку под свои задачи, тем более что модели сейчас меняются очень быстро.

Из маленьких моделек ещё хороша Qwen3 4B 2507, до неё использовал Phi-4 (обе не рассуждающие)

Спасибо за рекомендацию. Qwen3 4B 2507 ещё не пробовал, Phi-4 рассматривал, но надо потестировать. Хочется найти что-то достаточно быстрое, пусть и не самое умное, потому что иногда именно скорость важнее. Думаю, под разные задачи действительно могут лучше подходить разные модели.

Не понял, что за проблема с индексацией заметок. Любую заметку же нужно только при создании/обновлении индексировать.

Т.е. один раз хранилище проиндексировали целиком, а после этого - только изменения. Это даже на CPU быстро происходит.

Да, так и есть, достаточно один раз проиндексировать базу, а дальше обновлять изменения. У меня же проблема была в том, что эмбеддинги через Ollama (пробовал nomic-embed-text, bge-m3 и другие) даже на небольшой базе считались очень долго и иногда зависали, плюс в Copilot возникали ошибки при индексации.

Ollama режет скорость генерации же, по сравнению с llama.cpp примерно в 1.5 раза на одной и той же модели. Это прям непозволительное расточительство в условиях запуска локальной модели.

именно, а ещё есть форки с турбоквантом, и не знаю как там с выбором квантования моделей в олламе, но в llama.cpp просто скачиваю модели с нужным квантованием, чаще всего q4_k_m они заметно меньше весят и качество приемлемое, у меня qwen3.5 9b c 256к контекста занимает 10gb vram на вин 11

В ollama как раз q4_k_m по умолчанию используется в большинстве случаев.

возможно, я и писал что не знаю, но как по мне лучше выбирать самому под конкретное железо

Я в основном использовал Ollama как удобный интерфейс, в llama.cpp не углублялся.

Правильно ли понимаю, что вы имеете в виду запуск llama.cpp в режиме сервера с OpenAI-compatible API?. В Infio Copilot можно указать кастомный base URL, так что теоретически это должно подключиться. Если да, то интересно попробовать как более быстрый вариант.

Думаю имеется в виду либо использование оригинального ./server от llama.cpp, который вроде как, надо собрать самостоятельно, либо использование llama-cpp-python из Python.

Спасибо, попробую.

так он в офф репозитории собранный сразу, но пока ещё без поддержки турбокванта который есть в форках, да пришлось собирать самому и даже куда тулкит для этого нужен, но с нейронками это не сложно, хотя думаю можно и вулкан версию собрать

А чем объясняться такое поведение? Что за баг такой?

Я собирал комп больше для работы. Поэтому стоит хороший проц с озу. Но видюха почти затычка.

Поэтояму для начала стал использовать gpt4all. Модели там все работают на процессоре. Саму модель подбираю под задачу. Очень удобно в самой проге индексировать файлы. Работает ожидаемо медленно.

В будущем хочу попробовать связку из lm studio с mcp протоколом. Что бы он мог помогать мне в написании самих заметок.

Либо полностью что бы мог заметки писать, но уже не для себя

Спасибо за интересный комментарий. Про GPT4All и LM Studio не углублялся, возьму на заметку, попробую.

Да, согласен, следующий шаг вперед – он уже в сторону агентного поведения или более сложных задач. В моём случае, текущий стек скорее как базовый уровень. Это работа с заметками через rag, но без полной автоматизации.

Хороший задел для создания методологии по обработке личной базы знаний. Я тоже несколько раз начинал с obsidian. Ваша статья показала новые перспективы. Сейчас пишу систему из базы в md файлов и телеграм бота для запросов к нему.

Спасибо за отзыв. Да, это как раз то направление, которое сам хотел попробовать в дальнейшем. Хочу попробовать сделать AI-агента, которому можно ставить задачи через мессенджер.

Техника и модели, конечно, интересны. Спасибо и за наводку на Infio Copilot. Но можно ли еще вопросы позадавать?

Как вы со всем этим работаете? Как собираете данные?

Например: "С помощью Obsidian Clipper сохранил кусочек в Vault/Clippings; накидал какую то идею кратенько в режиме потока сознания. Потом запустил команду, ИИ сам понял, о чем там речь, переформатировал, структурировал идею, перенес эти сырые заметки в нужные папки".

Может есть какие-то хитрости по frontmatter. Заметки clipping уже метаданные содержат, может просите ИИ их добавлять и к собственным "сырым". Теги какие-нибудь...Может разделение по доменам (Дом/Работа), чтобы потом искать только в части базы.

Насчет "есть куча чатов с ИИ" - это правда, хотелось бы некоторые сохранять. Попросить прямо в чате сделать выжимку в формате markdown, чтобы именно ее переложить в Obsidian можно, конечно. Но иногда хочется сохранить прямо вот всю историю чата, с логами, которые ему скармливал. Пример: разбирался, почему у меня в WSL2 nvidia-smi норм показывает, но запущенные процессы ее аппаратное ускорение не используют. Полечилось установкой переменных окружения, но попутно еще кучу команд для диагностки узнал :)

Ваш Infio Copilot может упорядочивать заметки? Или только чатиться по ним?

Скажем. Copilot Logan Yang, что вы тоже упоминали, в бесплатной версии только отвечает и предлагает скопировать свой текст в заметкку. Агентный режим вроде только в платной версии есть.

Поэтому "Scan all files in raw/, classify them by content, move them to the appropriate wiki/ subdirectory, and apply light formatting where needed...." в qwen code (claude code, что угодно).

Я вижу, что Infio может редактировать in-place, но насчет пройтись по вложенным папкам и переместить по правилам - не уверен.

Спасибо за подробный комментарий.

Если честно, у меня пока всё довольно просто. В основном чаты с ИИ сокращаю в формате markdown в виде контекста переписки и сохраняю. Вручную пишу часть новых заметок. До сценария, где ИИ сам всё разбирает и раскладывает по папкам, я пока не дошёл. Плагины, описанные в статье, сами не создают структуру папок и не раскладывают заметки по ним. По-крайней мере, я о таком функционале у них не слышал, но может где-то в них есть.

С чатами отдельная история. Важно и то, что писал сам, и то, что отвечала модель. Сейчас сохраняю в основном выжимки, но в начале сохраняли и полностью диалоги "вопрос-ответ".
Возможно, потом напишу про это в отдельной статье.

Теги только начинаю пробовать, хочу сделать минимальную систему и не перегружать. Пока больше опираюсь на папки, в них сделал разделение по проектам и направлениям.

Infio Copilot, насколько я понял, больше про чат и редактирование заметок, а не про автоматическую сортировку всей базы. То, что вы описываете с разбором raw и раскладкой по wiki, это уже следующий шаг, ближе к агентам и более мощным инструментам.

Стек, описанный в статье – это не “второй мозг на автомате”, а просто первый рабочий уровень, где уже можно нормально пробовать "разговаривать" со своей базой. И как минимум начать собирать датасет и контексты. А также понять для себя, какой функционал и зачем мне нужен в платных решениях.

У меня база пока небольшая: около 150 заметок разной длины, суммарно примерно 70 МБ markdown-файлов.

Это примерно 512кб на заметку? 512кб - это примерно 250-300 страниц A4. На полноценный роман тянет.

Скорее всего много изображений и может быть даже видеофайлов.

Да, тут я немного некорректно сформулировал. 70 МБ — это размер всего хранилища с raw-материалами (статьи, вложения, дубли, исходники и т.д.), а не только чистых заметок.

Если брать именно обработанные контексты/markdown-заметки, то там около 4 МБ. И в среднем заметка совсем небольшая — это не «роман», а скорее короткие фрагменты, выдержки и структурированные мысли.

В настройках для rag добавлял raw файлы переписок и материалов в exclude, чтобы индексация шла быстрее и не засорялась база.

Я думаю это с картинками, про которые автор упоминал, но они не умеют в этих моделях индексации, то есть бесполезный балласт, выходит?…

Можно еще на папку с файлами obsidian натравить claude\opencode с локальной моделью. Удобно структурировать заметки.

Да, у меня тоже на каком-то этапе появилось желание, чтобы ии структурировал папки, дописывал что-то в заметки, расставлял теги. Это уже агентное поведение и следующий шаг.

И да, к сожалению, в более-менее удобном и стабильном виде это сейчас чаще всего упирается либо в платные решения, либо через платное подключение через API.

Вообще, теоретически, раз вы с векторизацией справились, то и расстановка тэгов должна быть где то поблизости

Мне понравилось использовать плагин Gemini Scribe и Gemini Flash Lite последней версии через API, работает быстро и хорошо. Правда в моем случае это Paid Tier 1, поэтому небесплатно.

Тоже пробовал подключать Gemini через Google API. Но видимо, не заработало нормально из-за ограничений на аккаунт/регион (с РФ-аккаунтами видимо api google не работает).

Зато через OpenRouter пробовал подключить gemini через бесплатный tier. И там да, по скорости прямо летает и качестве ответов очень высокое. Но это уже облачное решение, не локально. Ну и в основном платно.

Спасибо за статью, возможно получиться наконец все запустить. Как раз в поиске такого решения.

Рад, что материал пригодился.

Спасибо за актуальную информацию. Если есть опыт испольщования ИИ именно в строительной сфере - было бы тоже интересно почииать. Хочу внедрять в ПТОшной работе

Есть несколько идей по этому поводу. В целом, любой RAG, в который вы сможете вставить файлы нормативной базы и данных о проекте - уже может облегчить работу ПТО отдела или отдельного инженера. Но если говорить уже не только о получении ответов на текстовые запросы, но и об анализе чертежей, генерации таблиц – тут уже нужен не только RAG, но и взаимодействие между модулями вашей системы. Я думаю, отдельные части этой системы уже можно построить для себя - опять же могут подсказать клод, гпт и другие. Можно пробовать делать прототипы сначала для решения небольших задач, а потом пробовать их интегрировать друг в друга. Но это путь разработки инструментов для себя – это сложно, когда параллельно есть реальная работа на производстве.

Одно из главных вопросов по статье — это можно ли задавать общие вопросы по всей базе? Можно ли спрашивать и задавать вопросы по картинкам? А зная, что есть плагины типа омнисерч, что с помощью OCR добавляет грубый поиск по картинкам, от сюда выходит,что и из картинок теории можно вытащить эмбендинги, а дальше их добавить в RAG-систему

Да, можно задавать вопросы по общей базе, так как база файлов проиндексирована. По картинкам попробовал - если сбросить ей изображение, то может его описать, но искать по ней похожие изображения не может. Но если сбросить скриншот текста - распознает общую тематику и ищет по базе. Возможно можно наладить процесс, но пока не копал в этом направлении.

Не страшновато такое ставить и пользоваться?

Этот плагин может внезапно начать отправлять в Китай все ваши собранные в Obsidian данные, которые вы по какой-то причине, - не решились доверить публичным чатам в облаках. Причем, его даже обновлять не придется, так как он уже подкачиает свежий код WASM при загрузке, в котором чуть позже может оказаться все что угодно.

Результаты поверхностного ревью:

В плагин встроена телеметрия, которая сообщает о событиях взаимодействия с пользователем на https://hubs.infio.app/api/event, в том числе: когда плагин загружается, когда происходит отправка в чат onEnt('chat-submit'), когда запускается встроенное редактирование-отправка onEnt('inline-edit-submit') и когда пользователь переключает вкладки onEnt(switch_tab/${tab}в пользовательском интерфейсе, и т.п. Причем это хардкод, не выключить в настройках или переменной.

const handleSubmit = async () => {
		setIsSubmitting(true);
		try {
			const { activeFile, editor, selection } = await getActiveContext();
			onEnt('inline-edit-submit')
			if (!activeFile || !editor || !selection) {
				console.error(t("inlineEdit.noActiveContext"));
				setIsSubmitting(false);
				return;
			}
...


При старте плагин также заходит на свою базу https://infio.dev и грузит скорее всего совсем не OpenSource WASM. Даже если сейчас он скачивает не опасный код и данные, то потом кто его знает....


const loadPGliteResources = async (): Promise<{
	fsBundle: Blob
	wasmModule: WebAssembly.Module
	vectorExtensionBundlePath: URL
}> => {
		const [wasmRes, dataRes, vectorRes] = await Promise.all([
			fetch('https://infio.dev/postgres.wasm', { cache: 'no-store' }),
			fetch('https://infio.dev/postgres.data', { cache: 'no-store' }),
			fetch('https://infio.dev/vector.tar.gz', { cache: 'no-store' }),
		])
...

И так как сайты Infio за Cloudflare CDN - не сразу разберетесь, что блокировать, куда бежать, если потекут ваши личные данные. И даже не всякие супер файрволы разберутся в утечке, так как вы их будете долго-долго варить как лягушку, на вашем трафике - привыкнут к телеметрии и обновлениям wasm при каждом рестарте. Хотя, если анонимный хозяин Infio захочет использовать ваш Obsidian как часть своего botnet, то хорошие файрволы скорее увидят много новых fetch из wasm.

Спасибо за комментарий, хорошее замечание. Добавил апдейт в конце статьи про безопасность и обозначил эти моменты.

Сейчас плагин можно и переписать с помощью ИИ

Тоже думал об этом. Видел, что уже некоторые делают свои плагины для Obsidian. Но это дополнительный уровень сложности входа для обычного пользователя.

Да я после работы с ИИ агентами также пришел к выводу что самым полезным применением сходу будет именно органайзер индивидуального контекста. Там где контекст ЛЛМ будет пересекатся с профф задачами и проектами может получится полноценный асистент. Чатгпт почему то посоветовал для этих целей не собирать костыли а сразу на питоне обвязывать агента под свои нужды и структуру контекста.

Да, тут пока нет какого-то единственного полноценного решения. У каждого будет своя структура хранения, свой набор программ. Возможно, в скором времени кто-то из техгигантов сделает какое-то коробочное решение, где все уже готово. Пока приходится искать для себя подходы, тестировать.

Да это понятно но меня искренне удивило когда ChatGPT мне написал "Братан ты вырос из этого OpenClaw" под твои задачи надо собирать своего агента. В интересное время живем вот сейчас вырисовывается реально мощный инструмент дополненной реальности который будет рисовать не покемонов по углам а вести детальную трассировку активности мозга в разных областях и подсвечивать действительно важные моменты....

попрубуйте lm studio как интерфейс к вашей обсидиан базе, там есть уже встроенный раг плагин от разработчиков

Спасибо за новодку! Попробую

Доброго здравия вам, в общем проблема у меня жесткая. Из-за перебоев инета в ollama pull gemma3:12b-it-qat для меня непостижимая задача, как и остальные.
Вопрос вот в чем. Без впн - модель не скачивается/падает, с впн скачивается медленно и в обоих вариантах ollama pull gemma3:12b-it-qat не может догрузиться даже до 40%,
от 5% до 30% (дальше не получалось) - просто завершает загрузку с ошибкой

Error

max retries exceeded: local error: tls: bad record MAC

До конца не понимаю точно ли проблема в интернете.

Похоже на сбой интернет-соеденинеия. Вероятно, Ollama не может нормально докачать модель.

Попробуйте скачать модель вручную с Hugging Face и подключить её локально. Это возможный путь в таких случаях. Если нужна пошаговая инструкция, можно уточнить у любой LLM, к какой у вас есть доступ (она подскажет под вашу систему и формат модели). Сам этот способ именно с gemma3 не пробовал, но по идее он должен работать.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации