Галоўная / Артыкулы

Віртуальная файлавая сістэма на MongoDB для LangChain Deep Agents

Віртуальная файлавая сістэма для LangChain Deep Agents на MongoDB: байты ў аб’ектным сховішчы, пошук у Atlas з гібрыдным grep, зліццё рэйтынгаў, разбіўка на фрагменты і сінхранізацыя.

Выдавец: REACTAPP.TOP8 хв чытання1896 слоў

Крыніцы: 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.

    Калі ствараецца об’ект бэкенду, ініцыялізацыя продовжваецца на фоне. Стварэнне індэксаў, першая сінхронізацыя і запуск механізмаў назірання адбываюцца на нітках дэмона. Операцыі з файламі працуюць негайна, тады як операцыі пошуку чакаюць, пакуль не будзе завершана пачатковая сінхронізацыя. Працэс прыемкі дадзенаў выглядае так:

    1. Спісаваць об’екты пад настаўленым баксам S3 і прыфіксам.
    2. З’явіце кожны падпадаючы на крэтыты крэтэр об’ект.
    3. Выкарыстаўчы парсер для данага фармата, выкарыстаце яго для выявлення тэксту.
    4. Раздзеліце тэкст на часткі, якія маюць метаданы па пазіцыі.
    5. Створыце эмбедынгі.
    6. Занесіце часткі і метаданы ў Atlas.
    7. Наладзіце або пераканацеся ў правільнасці індэксаў пошуку і вектарнага пошуку.

    Часткі складаюцца з 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 ператварае іх у шар, які можна шукаты за дапамогою метаданых, повнатэкстовага аналізу, вектарных методаў і гібрыдных способаў ранжыравання, а шар сінхронізацыі прабачае, каб знаходжэнне дакументаў было адпаведнае рэальнаму корпусу даных.