Pull to refresh

Comments 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.

Так это всё через API.

Я же описал решение именно для ChatGPT, а не для GPT. Без сторонних плагинов.

Понятное дело, что через API можно много чего наворотить, но статья то не про это. Здесь используется именно сам ChatGPT4.

Символов в тексте 1435545 размер файла в пикселах 625 на 625 

в pdf какие-то волшебные пиксели? Или как в 625*625=390625 пикселях удаётся написать полтора миллиона символов?

Если векторный то причем тут пиксели вообще?

Ни при чём. Автор почему-то упорно считает, что текст распознается с помощью 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 - нет :)

Вы серьезно полагаете что проблема "Первая «преграда» на пути встала довольно быстро.
Это – ограниченная память ChatGPT." серьезнее чем "Спроектировать и создать <…> тело в реальности" ? Потому что просто тело это полдела, а как вы будете соединять это с "сознанием" в виде LLM?

Я, вроде бы, нигде не давал оценку степени серьёзности проблем и не сравнивал их по этому критерию.

Можно узнать, на основании чего вы решили, что так считаю?

А вопрос не совсем понятен - что значит "как"?

В текущей формулировке он звучит слишком широко, и, разумеется, ответ на такой вопрос и близко не уместится в текст комментария)

Это тема для будущих статей.

Так что вы уточните, пожалуйста.

Я занимался программированием роботов и МК, работал с роботами, собирал роботов, поэтому, в целом, не вижу особой сложности прикрутить LLM к телу.

Это будет "существо" с большим количеством сенсоров, гармоничной синхронизацией сигналов от них и системой интерпретации этих сигналов (тут и вступает LLM)

Уточняю: LLM это только текст, весь набор данных от сенсоров и к исполнительным механизмам взваливать на одного него мне кажется немного невразумительным. Если брать человека как аналог, то полноценный робот это связь из нескольких нейросетей, отвечающих за свой аспект. Таким образом LLM будет даже не ядром системы, а всего лишь одним из элементов. И то нужна будет не просто генеративная сеть с галлюцинированием, но с модулем или блоком критической оценки собственных суждений.

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

Пишите ещё! Буду следить за вашими проектом)

Спасибо, буду стараться по возможности 😊

Я тоже думал на этот счёт. Создание памяти которая касается только меня. Но у меня идея была такой. Каждый диалого ,также экспортировать, средствами chatgpt, выцеплять суть, давать тэги и это все сохранять в бд. Ну вот я подумал что лучше это хранить в бд. Потом после начала следующего диалога бегать в бд делать поиск по тегу и вычитывать о чем был разговор.

Много нюансов но идея была такой)

Идея интересная, но, если выцеплять суть - то это будет всё-таки суммация, а не точное содержание. И пока что ChatGPT не работает с БД напрямую в своем интерфейсе, непонятно как ему передавать информацию из БД в одном запросе сразу про весь диалог

Какой-то мистицизм в статье с ритуалами по архивации текста в торсионные pdf для большей благосклонности богов мудрости

Sign up to leave a comment.

Articles