Комментарии 25
Так ничего не изменилось, чат все также кушает по 10000 символов за запрос, просто разбивает на запросы он сам
Увы, с текстовым файлом работает гораздо хуже, особенно вот это разбиение на блоки (то есть такие же тесты он не проходит также хорошо).
Плюс таким образом текст весит в 2 раза меньше - тоже определённая экономия.
Так что, даже если удастся то же самое провернуть с текстовым файлом, выгода всё же имеется. Но у меня не получилось добиться такой же точности с txt к сожалению :(
Помню на реддите это давно обсуждалось, под капотом они просто разбивают pdf на блоки которые отправляют в векторное хранилище, и подгружают релевантные к запросу части.
У sillytavern есть плагин который делает тоже самое, но локально и без pdf.
А можно ссылки на эти примеры?
Их можно "прикрутить" к ChatGPT?
Я находил только видео трехмесячной давности на ютубе по расширению памяти с использованием pdf, но там просто говорилось про текст с pdf, не было описания и разработки такого скрипта и запроса.
Нагугленное описание процесса https://www.reddit.com/r/ChatGPTPro/comments/145yi21/comment/jno6uyy/ (оригинальный источник на openai не доступен в РФ)
В SillyTavern реализовано плагином через chromadb https://github.com/SillyTavern/SillyTavern-Extras/blob/08a18dc506d8d73685de5c4d28980fa544e258e0/server.py#L863 и да это будет работать с любым бэкендом, как локальным, так и chatgpt.
PDF - это векторный формат
Если векторный то причем тут пиксели вообще?
Ни при чём. Автор почему-то упорно считает, что текст распознается с помощью OCR, хотя PDF прекрасно позволяет хранить текст именно как текст. Именно так он и хранился у автора, иначе, файл на 1,5 млн символов весил бы куда больше (в векторе или читаемом растре). Зачем были нужны эксперименты со шрифтами, попытками все уместить в одну страничку - совершенно непонятны.
Каким образом текст может храниться в растре здесь?
Вы читали код проекта?
Там используется drawString, которая "рисует" на canvas, это никакой не "текст в виде текста".
Посмотрите библиотеку, которая работает здесь с pdf.
Если здесь текст хранится в растре, покажите мне, каким образом в одном пикселе вы можете уместить 4 буквы?))
Конечно же здесь именно OCR, причем, я проводил тесты и с другими шрифтами, и с картинками в том же самом PDF.
То, что вы пишете - неверно, здесь именно вектор и OCR.
И что вообще значит "текст в виде текста"?)
Не представляю как вы вместили 1 435 545 символов в 1 239 201 байт, если бы это был просто текстовик, это было бы возможно с сжатием, если файл хранится в векторном формате (как svg к примеру), то в OCR небыло бы смысла, если как утверждает автор символы именно рисуются, тогда или каждый символ был бы не читаем, или файл занимал больше места
Так об этом и статья: я придумал как это сделать и подробно описал, включая весь исходный код, чтобы любой, кто читает, мог бы это повторить у себя.
Насчёт OCR: насколько я понимаю, в PDF буквы рисуются векторно, поэтому и получается уместить такое количество (и это не предел, если аппроксимировать, то получится в файл 20 мб должно влезать больше миллиарда символов, а это уже небольшая библиотека ?), а проверки, которые показывают, что ChatGPT действительно способен всё это прочесть, также описаны в статье.
Ещё одну проверку я не стал описывать, но проводил: я просил чат прочитать файл PDF и перевести его в текст, разделяя на блоки по 10000, и он эту проверку прошёл, выдав в ответ текстовый файл с точным содержанием текста из pdf.
Смысл способа как раз в комбинации OCR+вектор.
Конечно же здесь именно OCR,
Прежде чем громко говорить о чужих ошибках, хорошо бы проверять утверждения.

Вот код с вашей же библиотекой, и вашей же функцией. И pdf открытый в редакторе в котором впомине нет никакого OCR - прекрасно редактируется.
Потому что, как я и сказал, текст хранится "в виде текста" - т.е. в виде набора кодов символов, а не в виде растрового изображения всех знаков или их векторного описания.
Именно "текстовое" содержимое позволяет файлу иметь размер в байтах сравнимый с числом символов в тексте.
PDF документ может хранить и вектор и растр, и даже для текста сохраняет векторные описания, по одному для каждого из используемых глифов (для гарантии, что документ будет выглядеть аналогично на компьютере без нужных шрифтов).
Но ваш случай не имеет к этому функционалу отношения. Нет никакого OCR. И совершенно по барабану какие шрифты вы используете, хоть вообще без русских глифов. Если текстовую строку удастся извлечь из - он ее увидит.
Ну вот для примера я закрою кусок текста картинкой, и...

ChatGPT прекрасно видит текст даже сквозь нее...
Пойдет дальше - заменим шрифт в pdf документе не такой где вообще нет латиницы, и даже число знаков не совпадает с числом символов, и...

И, о чудо, опять ChatGPT справился с "распознаванием" несуществующего текста)))
Так, а почему вы считаете, что OCR нет?
Вот в ваших же примерах по OCR и распознаёт ChatGPT - почему его нет?
Да, кстати, размер-то как раз кратно меньше аналогичному в txt с тем же количеством символов
Upd:
залил в репо (ссылка в статье) пример генерируемого PDF с 1400000+ символов - посмотрите, он у вас при открытии тоже редактируется как текст или это все-таки растр?
Вот "пруфы" от чата и доков библы:
https://ibb.co/wNsKGfp
https://ibb.co/HGbcM7Q
Конечно редактируется, как иначе.

Да даже Acrobat Reader позволяет в вашем файле текст выделять и копировать, какой уж тут растр)))
Так, а почему вы считаете, что OCR нет?
Вы определение OCR читали?
Вот в ваших же примерах по OCR и распознаёт ChatGPT - почему его нет?
Посмотрите внимательно картинки. Что в PDF и что он "распознает".
Да, кстати, размер-то как раз кратно меньше аналогичному в txt с тем же количеством символов
Конечно меньше, потому что в pdf есть сжатие, а в txt - нет :)
Я, вроде бы, нигде не давал оценку степени серьёзности проблем и не сравнивал их по этому критерию.
Можно узнать, на основании чего вы решили, что так считаю?
А вопрос не совсем понятен - что значит "как"?
В текущей формулировке он звучит слишком широко, и, разумеется, ответ на такой вопрос и близко не уместится в текст комментария)
Это тема для будущих статей.
Так что вы уточните, пожалуйста.
Я занимался программированием роботов и МК, работал с роботами, собирал роботов, поэтому, в целом, не вижу особой сложности прикрутить LLM к телу.
Это будет "существо" с большим количеством сенсоров, гармоничной синхронизацией сигналов от них и системой интерпретации этих сигналов (тут и вступает LLM)
Конечно, я планирую сеть из LLM, что-то похожее на AutoGPT в итоге сделать.
На одном из следующих этапов (до создания тела) планируется усложнение структуры. Пока я ещё думаю над тем, какие именно блоки там будут.
Например, в сети из ChatGPT один из них хранит сам диалог, второй хранит в себе эмоциональные окрасы его фраз, третий - связи между частями диалога, четвертый отвечает за чистку - убирает повторы, воду, и т.д.
Пока что финального списка блоков нет, это открытый вопрос, по мере разработки проекта он будет переформироваться, скорее всего, ещё не раз.
Вот, например, ваш вариант - блок оценки критичности суждений - возьму на заметку, хорошая идея, спасибо )
Пишите ещё! Буду следить за вашими проектом)
Я тоже думал на этот счёт. Создание памяти которая касается только меня. Но у меня идея была такой. Каждый диалого ,также экспортировать, средствами chatgpt, выцеплять суть, давать тэги и это все сохранять в бд. Ну вот я подумал что лучше это хранить в бд. Потом после начала следующего диалога бегать в бд делать поиск по тегу и вычитывать о чем был разговор.
Много нюансов но идея была такой)
Какой-то мистицизм в статье с ритуалами по архивации текста в торсионные pdf для большей благосклонности богов мудрости
Сильный ИИ. Элира1. Увеличение памяти ChatGPT