Pull to refresh
8K+
39
Борис Николаев@devmark

Backend developer

12
Rating
18
Subscribers
Send message

Потому что я отталкивался от Котлин. Но можно перечислить.

На бекенде он тоже используется. Когда только Котлин появился, он закрыл прям заметные проблемы java. Сейчас в java появились аналогичные фичи и в этом немалая заслуга Котлин) а вообще наряду с контролем за null я бы отметил ещё разделение коллекций на изменяемые и неизменяемые.

Да, концептуально это тоже заметный плюс, но по факту это не синтаксис, а стандартная библиотека.

В java да, будет npe

Да, существенных недостатков по большому счету нет)

Согласен, это тоже можно было бы добавить, но я хотел прежде всего сравнивать с аналогами в java.

Так же как и с Java. GigaIDE, openIDE, community edition.

Скорее на PHP стали писать как на Java))

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

с вавилонской башней всё плохо кончилось как раз потому, что тогда у строителей не оказалось переводчиков)

Согласен. Но mvp без правильного маркетинга и раньше было обречено на провал.

Ревьюить будет разработчик. Пока что ещё рано из этой цепочки исключать человека, ведь только он знает, что именно нужно делать. А разработчик ещё примерно понимает, как это сделать.

Вообще защита чувствительных данных - это немного другое. MCP - это по сути универсальный протокол интеграции.

Если взять конкретно ваш пример, чтобы напоминания не создавались другому пользователю - это легко обеспечить. Достаточно передавать в метод идентификатор пользователя (чем более сложный, тем лучше). Например, uid. LLM не сможет "выдумать" такой uid. Она должна будет его как-то получить или запросить. А если попытается передать какой-то левый - MCP-сервер просто вернёт ошибку и напоминание не создаст.

Да, порядок в явном виде никак не определяется и отдаётся на откуп модели. Всегда когда мы работаем с LLM, то оперируем некоторой вероятностью. Если тулы будут иметь похожие описания, тогда да, велика вероятность вызова не того метода.

Поэтому я ещё раз хочу подчеркнуть, что описания инструментов MCP - чуть ли не самое главное, на что нужно сделать упор.

Но если описания более-менее подробные, то и 1000 вызовов будут выполнены корректно.

Кстати, сейчас подумал, что если нужно обеспечить 100% последовательность, то можно создать некий прокси MCP-метод, внутри которого этот порядок будет зашит. Тогда и контекст уменьшим. Эдакий паттерн "Фасад" в нейросетях)

50-100 тысяч документов в час... тут явно ведь не про базу знаний речь идёт?)

Проверка быстродействия RAG на объёмах 50-100 тысяч документов - эта тема заслуживает отдельной статьи! Но мне кажется если мы говорим в основном про поиск документов, то RAG действительно не самое оптимальное и далеко не дешёвое решение.

Вы верно подметили про RAG и чат-ботов, потому что порой интересно даже не поиск информации "как есть" в документе, а вывод из существующей информации новых фактов.

Например, где-то среди тысяч документов в описании конкретного процесса всего 1 раз упоминается, что "... согласованием занимается Иванов (начальник отдела документооборота)...", чат-бот нам сможет ответить и кто такой Иванов (в контексте именно данной компании), и кто является начальником отдела документооборота.

В данной статье я делал упор не столько на вопросы производительности и выбор наиболее быстрого векторного хранилища, сколько на то, что Spring AI позволяет нам уже здесь и сейчас с минимальным количеством кода использовать RAG. Поэтому взял pgVector, т.к. большинство проектов на Spring-стеке использует postgres.

Касательно того, что документ может не влезть в контекст, в Spring AI есть такой класс как TokenTextSplitter. Он позволяет разбивать исходный документ на несколько частей. Параметры такого разбиения можно гибко настраивать.

А вы какое векторное хранилище предпочитаете использовать?

Microsoft исторически всегда пытается свои стандарты сделать стандартами индустрии. Иногда ей это удаётся. Иногда - не очень. Захотели свою Java - сделали C#. Захотели свой Flash - сделали Silverlight. Ещё сходу вспоминается обратный слеш в пути до файлов, /r/n вместо /n для перевода строк и кодировка 1251)

"Microsoft" и "стандарт" в одном предложении?)

👋 Привет! Хочу поделиться своим pet-проектом для изучения английского — https://wordcards.ru

Это онлайн-словарь для запоминания слов методом интервальных повторений. Добавлять слова для изучения можно либо через поиск на странице конкретного слова, либо через тематические наборы слов https://wordcards.ru/wordsets. Есть возможность указывать конкретную часть речи при добавлении (например "orange" можно изучать или как существительное "апельсин", или как прилагательное "оранжевый"). Затем сервис автоматически будет напоминать о необходимости повторить то или иное слово.

Помимо обучающей функции есть также утилита для подбора слов по буквам или по шаблону (для игр типа Wordle) - https://wordcards.ru/wordle

Проект полностью некоммерческий и без рекламы, но буду рад, если окажется полезным и для кого-то ещё 😊

Information

Rating
657-th
Location
Москва, Москва и Московская обл., Россия
Works in
Registered
Activity