Віртуальная файлавая сістэма на MongoDB для LangChain Deep Agents
Віртуальная файлавая сістэма для LangChain Deep Agents на MongoDB: байты ў аб’ектным сховішчы, пошук у Atlas з гібрыдным grep, зліццё рэйтынгаў, разбіўка на фрагменты і сінхранізацыя.
Крыніцы: MongoDB VFS for LangChain Deep Agents: A Searchable Filesystem for Agents
Адзыяванні да агентаў AI перасяглі простае адпаведанне на запытанні. Ад іх чакаюць, што яны будуць выкананыць цэлыя заведаменні: ствараць багатыяпрыемны план, аналізаваць выхідныя файлы, ствараць проміжныя матэрыялы і перадаваць часткі задачы іншым агентам, чым ператвараючы тое, што раней займало дні, на калікі гадзін. Такая швальдзіна можа працаваць толькі тады, калі агент можа з адпаведным адказам перамешчацца ў сваёй файловай сістэме, шукаць, чытаць і адкладзіць змяны ў файлах падчас работы. Вярчынная файловая сістэма MongoDB (VFS) для LangChain Deep Agents задовольняе гэтыя патрабаванні. Яна спрыяе з’ўязку з вядомай візуальнаее файловай сістэмай з MongoDB Atlas і аб’ектным хранілішчам пад ёю, напрыклад, саквояжам S3, тады агенты маюць працоўны прастор, які застаецца актуальным пасля завершэння сесій, развяртанняў і падагентаў. Распрацоўшчыкі Deep Agents можу выкарыстоўваць Atlas як платформу для зберагання дадзэнняў своіх агентаў, калі ў ўпрынцы ёсць можлівасць пошуку за цэлым тэкстам і вектарамі.
У наступных раздзелах апяшнююцца два панянні, паказана, як працюе бэкэнд MongoDB унутрь аплікацыі-агента, і адзначана, дзе гэты падход падходзіць для корпаратыўных сістэм.
Глыбокія агенты і іх інструменты файловай сістэмы
Глыбокія агенты ўтвараюць каркас на базе LangChain і LangGraph, створаны для складных, багатоэтапных задач. Планаванне, падагенты і інструменты у стылі файловай сістэмы ўключаны ў структуру, што дазволяе агенту раздзеліць большую задачу на маленькія дзеянні замест таго, каб усё паклаціць у адну вікно кантэксту. Уключаныя операцыі ўключаюць:
lsпаказвае каталогі, ўжо таму агент можа бачыць, як усё распаложанаglobпадбірае файлы за шаблонам пацыgrepаналізуе змест файлаўreadвяртае змест файлаwriteіeditствараюць або меняюць дакументы
upload_files і download_files адмініструюць масовую перадачу файлаўЭтыя інструменты працуюць за дапамою контракта на бэкэндзе. Агенту не патрэбна інфармацыя пра тое, чы розташаваны файлы на локальным дыску, у сховішчы LangGraph, у сховішчы об’ектаў чы ў іншым слоі прызначанага для зберагання дадзенняў. Ён выклікае той самы інтэрфейс файловай сістэмы, і дадзеныя надае той бэкэнд, які налаштаваны.
Што додае віртуальная файловая сістэма
Віртуальная файловая сістэма прадстаўляе дадзеныя як логічныя шляхі, ховаючы месца ўсёрэшты ў якім яны зберагаюцца. Агент можа бачыць такія каталогі, як docs/, reports/ чы projects/customer-a/, хоча рэальныя байты знаходзяцца у сховішчы об’ектаў, а версія, якая можна шукаты, — у базе дадзенняў.
Навігацыя па файлавай сістэме выконвалася па маленькіх кроках, і гэта падходзіць агентам. Не выканаўшы запіт на обработку всего корпусу, агент перыявляе каталог, сузае выбор па шаблону назвы файла, шукае паводле певнай канцэпцыі, атвараяя адпаведны файл, і фіксуе свае нараджэнні як новы артыфакт. Кожны крок прыносіць толькі тое, што неабходна, таму агент застаецца ў межах кантэксту і вітрачае менш рэсурсаў. У гэтым светле віртуальная файлавая сістэма ёсць інструментам для керавання кантэкстам пад час работы агента, а не проста шарам для зберагання.
Пакет і спосаб яго функцыонавання
Пакет langchain-mongodb-deepagents-vfs рэалізуе BackendProtocol Deep Agents як можна простае рашэнне. Корпус, які зберагаецца ў об’ектнай базе дадзеных, для агента выглядае як файлавая сістэма, а кожны запыт направляецца да сістэмы, якая можа яго найкрашча обработаць:
- Операцыі, спрамованыя на пошук (
grep,glob,ls), выконваюцца ў MongoDB Atlas. - Операцыі з байтамі файлаў (
read,write,edit,upload_files,download_files) адбываюцца безпасяроджу ў храніцу об’ектаў. - Слой фонавай сінхронізаціі падтрымлівае адпаведнасць між рэпрэзентацыяй дадзеных для пошуку і храніцай об’ектаў.
Гэта забезпечвае чыстыя межы між асалодным джэрэлам дадзеных і індэксам для пошуку. Храніца об’ектаў зберагае асалодныя дакументы, а Atlas — часткі дадзеных, якія можна шукаты, іх эмбеддынгі oraz метаданы пацек, якія дапамагаюць аднаходзіць дакументы ў корпусе.
Можна запытацца, чаму пошук павінен выконвацца ў окрэмай сістэме, а не на платформе, сумесной з S3, якая адначас паўтарае пошук у тэкстовым, вектарным і гібрыдным фарматах над тымі ж дадзеннямі. Такое рашэнне ёсць намеральным. Сховішча об’ектаў адзінакаваюцца стойкімі, недорогімі і давгавечнымі файламі, але яны не створаны для таго, каб адночасна підтрымліваць актуальныя індэксы, ранжаваць гібрыдныя запіты і здаваць рэзультаты пошуку структурованых метададзей з мінімальным звылікам. Atlas — гэта оператыўная база дадзеных, дзе пошук, вектарны пошук і гібрыдная ранжавання з самага пачатку ўважаюцца індэксаванымі функцыямі. Таму механізм пошуку працюе на програмнаму забезпечэнні, створанам спецыяльна для гэтай ролі, а сховішча об’ектаў продовжае выконваць своі основныя функцыі.
Гібрыдны пошук за допамогою grep
За grep пакет сумешчае MongoDB Search з MongoDB Vector Search. Пошук за дапамою полнага тэксту ідэальна для точных тэрмінаў, ідэнтыфікатораў, імен файлаў і рэдкіх страк, тады калі вектары падходзяць для парафраз і запытанняў на натуральнай мове. Сумешчанне іх дазволяе агенту шукаць літэралы, такія як MAX_RETRIES, або запытацца, дзе насталяваны прабавы, усё гэта праз адну інтэрфейс.
Два співвітчызніка рэзультатаа з’еднаюцца за дапомогою этапы агрэгацыі $rankFusion у MongoDB. Пакалькі ранкінг застаецца ў самай базе дадзеных, не патрэбны якія-небудзь прыстроі для пераранкінгу на баке кліента, і знікае дапэўнае перадзванне агента, якое была б патрэбна. Хоць і тут існуе шырэйшы компрэс. На платформе, сумесной з S3, для атрымання ранкінгу на аднойчынны тэкст, вектарны і гібрыдны зазвычай патрэбна сумація калькольных спецыялізаваных сістэм: аднаго двіжка для тэксту, адной вектарной базы дадзеных для эмбедынгу і шару для пераранкінгу, каб з’еднаць іх, пры чым кожны з іх мае практыку індэксавання, якая павінна сочыць за выхіднымі дадзенымі. У Atlas адны двіжак пакрывае ўсе тры, а $rankFusion з’еднае іх у аднай натыўнай запытцы.
Чанкаванне, фарматы і эмбедынг
Функцыя разбівання на часткі врачоўвае токены. Падтрымваныя фарматы вхідных дадзеных — гэта звычны тэкст, Markdown, PDF, DOCX, XLSX, XLS, PPTX і PPT. Кожная частка зберагае метаданы пазычнай пазыцыі, а самэтна — шлях да выхіднага файла, номер стороніцы, офсэты сімвалоў і інфармацыю пра радкі, што дазволяе рэзультаты выходзіць у фармаце, які чакаюць Deep Agents.
Поштучныя прэдставленні (embeddings) за замовчаннем выкарыстоўваюць Amazon Bedrock; таксама існуе апцыя OpenAI праз пакет extras, а прыкладнэ програма можа безпасабічна включыць будзь-яе рэалізаванне embeddings, сумеснае з LangChain. Тыповая наладка выглядае так:
from deepagents import create_deep_agent
from langchain_mongodb_deepagents_vfs import MongoFilesystemBackend
backend = MongoFilesystemBackend(
s3_bucket_name="acme-docs",
mongodb_connection_string="mongodb+srv://<user>:<password>@<cluster>/",
)
agent = create_deep_agent(
tools=[],
instructions="You are a research assistant over the ACME documents corpus.",
backend=backend,
)
Пасля чаго агент выкарыстоўвае свае звычайныя інструменты файловай сістэмы, без якіх-лібо спецыяльных інструментаў MongoDB чы S3 у сваём цыкле вырашэння.
Архітэктура двух планаў
Уявіце сягу як два планы. Храненне об’ектаў — гэта план дадзенаў, які зберагае байты файлаў, а MongoDB Atlas — план кантролю і пошуку, які адпавядае за метаданы, часткі дадзенаў і індэксы для ўзнавамлення.
На рысунку паказана, як бэкенд адправляе байты файлаў праз храненне об’ектаў, а операцыі пошуку — праз Atlas.
Калі ствараецца об’ект бэкенду, ініцыялізацыя продовжваецца на фоне. Стварэнне індэксаў, першая сінхронізацыя і запуск механізмаў назірання адбываюцца на нітках дэмона. Операцыі з файламі працуюць негайна, тады як операцыі пошуку чакаюць, пакуль не будзе завершана пачатковая сінхронізацыя. Працэс прыемкі дадзенаў выглядае так:
- Спісаваць об’екты пад настаўленым баксам S3 і прыфіксам.
- З’явіце кожны падпадаючы на крэтыты крэтэр об’ект.
- Выкарыстаўчы парсер для данага фармата, выкарыстаце яго для выявлення тэксту.
- Раздзеліце тэкст на часткі, якія маюць метаданы па пазіцыі.
- Створыце эмбедынгі.
- Занесіце часткі і метаданы ў Atlas.
- Наладзіце або пераканацеся ў правільнасці індэксаў пошуку і вектарнага пошуку.
Часткі складаюцца з 512 токэнаў, пры чым існуе перакрыцце на 64 токэнаў. ETags дазволяюць здзейсніць пачатковую сінхронізацію і прыйманне дадзеных так, што незмененыя об’екты праходзяць без увагі, і яны не завантажаюцца і не ператвараюцца ў эмбедынгі знову.
Ёсць тое, што робіць кожны вызов. ls запытае Atlas пра метаданы шляху і групавае іх у запісы каталогаў. glob выкарыстоўвае стандартныя правілы шаблонаў шляхоў, каб знайсці адпаведныя файлы. grep прымае дапамогу Atlas, якая спалохвае пошук па цэлым тэксту і векторны пошук у корпусе дадзеных, і вяртае рангаваныя рэзультаты. read запоўнюе тэкстуальныя даны з хранілішча об’ектаў, а не з індэкса, і гэта мае значэнне, адколькі рэзультаты пошуку служыць для аднаработкі інформацыі, а чытанне — для отрымання самога аднаго дакумента.
Існуе два рэжымы назірання. Стэжыль на аснове польсів перыядычна пераглядае хранілішча об’ектаў і не патрабуе дадатковай інфраструктуры AWS для абработкі запоўнення. Стэжыль на аснове SQS перэмоўляе паведамленні пра запоўнення S3 праз Amazon SQS і падходзіць для сінхронізаціі з меньшым затрымленнем у працоўным сераўеры.
Евентуальная консыстэнція для пошуку
Пошук ўмышлена ўтвараець стан, які ёсць стабільным за час. Запіс спачатку успішна выконваецца ў S3, пасля чаго сістэма фіксуе змяну, аб’ект знову роздзеляецца на часткі і вбудовуецца, а індэксы апдэююцца. Таму запыты на чытанне негайна паказваюць стан S3, тады як grep, glob і ls можаць паказваць застарэлы стан пакі ўсе не будзе сінхронізавана і завершана праця з індэксамі.
Для спільнай працы існуюць калькольныя правілы: калі даныя актуальныя і спільныя, чытайце іх безпосерэдна; для оптымістычнай канкурэнціі над спільнымі файламі вікорыстоўвайце edit; а для пошуку інформацыі, калі корпус стае стабільным. Надаючы кожнам агенту свой прастор выходных дадзеных, напрыклад shared/outputs/, можна ўсё больш зменшыць суперсечанні між паралельнымі працоўнікамі.
Дзе падходзіць гэты патэрн
Экспанаванне коду. У зменшыню да таго, каб агент з кодаванняятрэбаваў вялікі набор коду, ён можа прайсці па вялікай базе дадзеных: апісаць структуру, знайсці файлы за дапамою glob, запрацаваць гібрыдны grep для пошуку певнай ідэі або ідэнтыфікатора, прачытаць конкрэтны файл і здзейсніць змяну пад захадом ETag. Тыповыя прыклады выкарыстоўвання — адкулькі ўвайшчыць у базу дадзеных, расследаванне інцыдэтаў, аналіз залежнасцяў і налашчэнняў, пошук тэстаў з мэтавымі выправленнямі, а таксама стварэнне дакументацыі з коду.
Корпусы дакументаў. Палітыкі, контракты, процедуры, інструкцыі, дакументы продуктаў і файлы кліяў часта накапліваюцца ў сховішчах дадзеных, а бэкенд апранае агента спосабам, сэродзеўным файловай сістэме, для працы з імі. Агент для дакументаў можа шукаць палітыку вярнення грошаў, прызначаную для корпаратыўных кліяў, выявляць фрагменты, напісаныя іншым спосабам, ачыняць орыгінальныя файлы PDF або DOCX і пісаць статысцыю з цітатамі да іншага месца. Гэта падходзіць для генеравання з падтрымкай пошуку, калі патрэбна навігацыя, а не проста адзін пошук.
Команды з мнагах агентаў. Коордынатор можа прадаць спецыялізаваныя заведамыя спецыялістам-падагентам на адной спяльнай базе дадзэнняў. Агент безпекі шукае рызыкаваныя шаблоны коду, агент дакументацыі сабіра крокі развяртання і канфігурацыйныя прамяні, агент тэставання знаходзіць актуальныя файлы для тэставання і пішае прыметкі пра ступень пакрыцці, а агент сынтэзы чытае все і складае атлас. Усе яны выкарыстоўваюць адну і тую ж назву прастору, пры чым Atlas выступае як шар для адкрыцця інфармацыі.
Хранэнне жывых дакументаў. Контэнт падпрыемства постаўляецца ў стані постацейных змян: прыходзяць атласы, зміняюцца правілы, пераглядаюцца аперацыйныя дакументы. Паколькі прыстрой для назірання падтрымлівае супараднасць Atlas з хранэльнікам об’ектаў, агент, які запускаецца пазней, шукае актуальны контэнт без неабяжнага стварэння індэкса ў кожны раз. Гэта дапамагае асістэнтам з інструкцыямі, аддзелам контролю са адпаведнасцю і правілам, доследнікам працаваць з постацейна апдэйтаванымі дадзеннямі, агентам падтрымкі з дакументамі пра продукт і адлагоджэнне проблем, а таксама асістэнтам партнераў, якія працуюць з спакушанымі матэрыяламі рэалізацыі.
Стойкія рабочыя прасторы. Агенты Deep Agents можаць зберагаць планы, нотаткі, падсумкі і гэтавыя рэзультаты як файлы. Іх хранэнне ў хранэльніку об’ектаў і індэксаванне ў Atlas стварае рабочы прастор, які застаецца актуальным пасля перзапуску і які можа быць пераглянуты людзьмі чы іншымі агентамі.
Ліміты працы і точкі расшырэння
Для прыменення ў працэкты неабходнае адсутнасць кантролю доступу, ізоляцыя корыстаўцоў, правілы рэзідэнціі дадзеных, ўтрымання і аўдыт, якія павінны быць выкананы прыкладнам, настройкамі хранення і модэлем метададзэных. Сам пакет адпавядае за контракт файлавой сістэмы Deep Agents і за маршрут ад хранілні об’ектаў да пошуку ў Atlas.
Есць можлівасць яго расшырэння: дадатковыя хранілні об’ектаў, такія як Azure Blob Storage чы Google Cloud Storage, больш выпаведчыкаў для інтэграцыі і настраіваемых стратэгій, дадатковыя парсеры дакументаў і шырэйшы прыем дадзеных, болей надзейныя механізмы стазірання з апৱтаматычным заполненням і актуальнейшымі дадзенымі, павышаная якасць пошуку, фільтрацыя, ранжыраванне і метададзэных, а таксама болей дакладныя прыклады, крэндзі-тэсты і прадактыкі развяртання. Хорашым правілам ёсць трываць усё, што стосуецца спецыфікі хранення, за інтэрфейсам хранілні об’ектаў, такім чынам кэшэраўчык, выпаведчык, логіка сінхронізаціі і маршрутаўчык пошуку будуць працаваць толькі з маршрутамі, байтамі, метададзэных і пошукам, а не з API конкрэтнага выпаведчыка.
Адзыякраванне задач яўляецца ключовай ідэяй. Агенты бачаць адзін просты віртуальны файлавы сістэму, аплікацыі зберагаюць вялікія і разнарадныя дакументы ў сістэмах зберагача об’ектаў як аднаковы адказ на запыты пра даны, Atlas ператварае іх у шар, які можна шукаты за дапамогою метаданых, повнатэкстовага аналізу, вектарных методаў і гібрыдных способаў ранжыравання, а шар сінхронізацыі прабачае, каб знаходжэнне дакументаў было адпаведнае рэальнаму корпусу даных.