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

Пашыраны RAG у прадакшне: архітэктура, інструменты і кампрамісы

Агляд прадакшн-RAG: загрузка, парсінг, разбіўка, эмбедынгі, вектарныя сховішчы, гібрыдны пошук, пераранжаванне, ацэнка і бяспека — з кампрамісамі кожнага этапу.

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

Крыніцы: **Advanced RAG: Production-Ready Architecture, Technologies, Key Features & Limitations**

Retrieval-Augmented Generation спаўнае крок пошуку з мовным мадэлю. Дакументы прадаўна запрацоўваны і індэксаваны, калі прыходзіць запіт, выкарыстоўваюцца адпаведныя фрагменты, а мадэль піша свой адказ на адважанні тых дакументаў. Аднак у практычных застосоўчых сістэмах RAG рэдка ёсць проста векторныя базы дадзенаў плюс LLM. Рэальныя сістэмы дадаюць структураваную парсацію дакументаў, часткавэ раздзеленне з урахоўваннем структуры, адыскаванне па ўсіх элементах і ключоўых словах, пераранжаванне, стварэнне кантэксту, а таксама механізмы ацэнкі і назірання за працай сістэмы.

У наступным апісанні будуць рассмотрваны інструменты, якія шырока выкарыстоўваны ў рэальных сістэмах, а эксперыментальныя методы будуць праігнораваны.

Аптотэкст сістэмы

Практычны прамысловы працэс начынаецца з абрабатавання, парсінгу і чысткі, пасля чаго следуе разбіўка на часткі, працэварабатаванне метаданных, стварэння эмбедынгаў і індэксаванне. У момент запіту выконваецца розумеенне запіта, гібрыдны пошук, сынтэз і пераранжаванне рэзультаатаў, пасля чаго — стысненне кантэкста, генераванне тэксту з цітатамі, і нарэшце — ацэнка і стварэнне можлівасцяў для адзору. Точны набор засобаў завісіць ад тыпаў дакументаў, масштабу, целевых показнікаў затрымкі, правілаў прыватнасці, бюджэту і стандартаў якасці.

Абрабатавання дакументаў

Локальныя файлы. Python з бібліятэкамі pathlib, PyPDF, python-docx, openpyxl і pandas дазволяе недорага абрабатаваць PDF-файлы, дакументы Word, таблічныя канцэнтрацыі, CSV-файлы і просты тэкст, і легка падходзіць для батч-заданняў. Аднак кожны фармат выклікае патрэбу ў сваём парсеры, сканаваныя і сложныя PDF-файлы трэбуюць спецыяльнага выкарыстоўвання для адчынення інфармацыі, а велікія задання — паралельнага працэсавання і поступовай апрацоўкі.

Хранэнне об’ектаў. Amazon S3, Google Cloud Storage і Azure Blob Storage забезпечваюць надзеяныя, масштабаваныя умовы для большых калекцый і легка сумешчаюцца з асінхронным запоўненням данымаў. Вы плаціце за налажванне сэрвісаў у воблаку, кантроль даступу, а таксама за хранэнне і перадачу даных, якія зрастаюць пры адбыванні масштабавання.

Веб- і API-крыніцы. інструменты такія як requests або httpx, BeautifulSoup, Playwright і Firecrawl падтрымліваюць актуальнасць базы знанняяў паштоўкай дадзеных з веб-сайтаў, API і дынамічных сторанак. Веб-сайты зменяюць свою структуру, сторанкі з велікай колькасцю JavaScript выказваюць патрэбу ў автаматызацыі браузера, а краблінг прыводзіць да лімітаў частоты запытоў, дуплікатных сторанак і неравнамернай якосці кантэнту.

Аналіз і выкарыстоўванне дадзеных

Unstructured прымае PDF-файлы, документы у фармаце Word, HTML, PowerPoint, з’явы і іншы фарматы, а таксама выдэляе такія элементы, як загаловкі, абзацы і табліцы, што робіць яго хорашым інструментам для загальных цэлей. Ён працюе повольна паўстаноўна, чым простая экстракція тэксту, а з сложнымі документамі можа знадобіцца індывідуальна обработка.

PyMuPDF швядко выдэляе тэкст і метаданы з PDF-файлоў, створаных на основе тэксту, і легка інтэгруецца ў код на Python. Ён не являеся цэлым сістэмам для розумеўня дакументаў, таму сканаваныя файлы патрабуюць аперацый OCR, а складныя макеты чы табліцы — дадатковай обработкі.

Apache Tika падтрымляе вельмі шырокі спектар фарматаў і мае розвітаныя інструменты для выдэлявання тэксту і метаданаў з сумешаных колекцыяй. Ён менш адпрацаваны для сучаснага розумеўня макетаў, таму складныя візуальныя структуры патрабуюць дадатковых інструментаў.

OCR і экстракцыя на адной засадзе візуальнага розпазнавання

Tesseract — адзін з апэнтных кодаў, работае локальна і добра справляецца з звычным друкаваным тэкстам. Рукапіс і складныя макеты зніжаюць точнасць, а неякісныя сканаванні вымагаюць прадзеяўкі.

PaddleOCR прысвячае большую увагу выкананню задачы адкрыціі тэксту і ўпізнавання яго на багацькох мовах, што падходзіць для сканаваных дакументаў і структураванага выкарыстоўвання інфармацыі. У складных дакументах можа знадобіцца даполнітэльная прадзеяўка макету, а для ўпрацоўкі можа знадобіцца додатковыя залежнасці модэляў.

Мадэлі візуальна-мовных тэхналогій, такія як мадэлі класу GPT-4, Gemini і семья Qwen-VL, розумеюць тэкст, зображэння, графікі і макет сторанкі, што дапамагае, калі сама тэхнологія OCR не можа захаваць візуальны кантэкст, і дазволяе выкарыстоўваць мультымадальныя падходы. Яны коштаюць дорожэ, чым класычныя OCR-мадэлі, робяць медленнейшыя адпаведзі і даюць недэтэрміністычныя рэзультаты, якія трэба пераканаць.

Разбіўка на часткі

Чанкаванне вялічынюе тое, што стае елементам, якія можна выкарыстоўваць. Некалькаспрэчнае чанкаванне раздзеляе значыцькова адносны мяркавыні або з’еднае неадносны матэрыял.

  • Рэкурсыўнае раздзелэнне сімвалаў (RecursiveCharacterTextSplitter з LangChain) — гэта надзеяны базовы метод, які стараецца сачаваць межы параграфаў і рэчэй, і які лёгка налаштаваць. Ён працуе з сынтаксам, а не з значэнням, і фіксаваная вялічына не падходзіць для кожнага дакумента.
  • Раздзелэнне на токены вялічына чанкаў выкладзець на адпаведныя токены модэлю, што дапамагае справіцца з лімітамі вікна кантэкста. Канцы токенаў не павінны прымусова супадаць з семантычнымі межамі.
  • Семантычнае чанкаванне шукае змены тэмы за дапамогою сяродзішча, таму цэлеспрабныя ідэі застаюцца разам лепшая, чым пры фіксаванай вялічыне. Ён выкарыстоўвае больш вычысловых рэсурсаў, патрабуе імбеддынгів і залежыць ад порога, які трэба выбраць.
  • Разбій на часткі «бацькоў-дзецей» выкарыстоўвае маленькія дзецявыя часткі, але расшырвае іх да большых «бацькіх» частак для кантэксту, палягчаючы такім чынам тачнасць без втраты абакану. Стварэнне індэксаў і адносы метадаў становяцца болей складнымі, а большы кантэкст падвайшвае вартасць токенаў.
  • Разбій з урахоўваннем структуры следуе за заголовкамі, раздзеламі, табліцамі і параграфамі, што ёсць корыстным для тэхнічных і корпаратыўных дакументаў. Ён залежыць ад надзеянага парсінгу, а разныя тыпы дакументаў выкарыстоўваюць разныя правілы.
  • Метадаў

    Тыповыя палаты включаюць ID дакумента, назву файлу, номер сторанкі, раздзел, аўтара, час зберагчыць, тып дакумента, арэндніка або корыстніка, правыя на доступ, вучальны URL і версію. Хорашыя метаданы дазволяюць фільтрацыю яшчэ до або пад час выкарыстоўвання, падтрымліваюць цытаты і кантроль доступу, а таксама падвышаюць точнасць. Аднак слабкія метаданы безпасебна зніжаюць якосьць выкарыстоўвання, а схемы стаюць сложнейшымі для падтрымкі ў разных вучальных джэрэлах.

    Эмбеддынгі

    Эмбеддынгі ператвараюць тэкст у векторы, якія фіксуюць значэнне.

    • Эмбеддынгі OpenAI ўправляюцца, маюць высокую якосьць і ўжоўтвараюцца проста, а таксама забезпечваюць эфектывнае выкарыстоўвання для загальных цэлей. Недакладнасці заключаюцца ў вартасці API, залежнасці ад постачальніка і тым, што выкліканне дадзеных можа не паслужыць для чутлівых срэдаў.
  • BGE — гэта моцная семья алгорытмав для пошуку на адкрытым кодам, якія можна самастацьлегва запускаць, з варыянтамі для інтэнсіўнага пошуку і перыяркту. Для самастацьлегвага запуску патрэбна інфраструктура, а выбор мадэлі і ўзмаўленасць вплываюць на запіс і затрымкі.
  • E5 — популярная семья алгорытмав на адкрытым кодзе з хорашымі можнасцямі для загальнага пошуку, а таксама з варыянтамі на базе інструкцый чы ўпрымку. Дзякуючы дзеяным варыянтам патрэбна астаточная фарматавання запыткаў і дакументаў, а самастацьлегвы запуск выклікае дадатковую працу.
  • Cohere Embed — гэта кераваны API з хорашымі можнасцямі для багатаязычнага і корпаратыўнага пошуку, залежна ад версіі мадэлі, і яго лёгка размясціць. Ён вялічыць косты API і стварае залежнасць ад зусільных сервісаў.
  • Jina embeddings — гэта алгорытмы, спрамованыя на пошук, дзеякія з яых падтрымліваюць дзейны кантэкст і калькі языкаў. Можнасці зменяюцца залежна ад версіі, а адкрытыя мадэлі патрэбную інфраструктуру для запуску.
  • Базы дадзэнайў вектараў

    • pgvector дадае можлівасць пошуку вектараў у PostgreSQL, адкладаючы рэляцыйныя даныя, метаданні і вектары ў адным месцы, што чырвоная пункт, калі працоўны кран вялікае ўжо выкорыстоўвае Postgres. Для вельмі большых навантажэнняў на вектары можа знадобіцца спецыялізаваныя сістэмы, а масштабаванне стае сложнейшым пры вялікай колькасці дадзэнайў.
    • Pinecone — гэта кераваная база дадзэнайў вектараў, якая масштабуецца без неабходнасці працы з інфраструктурой і апранае фільтрацыю, прыдатную для прыменняў у працоўным рэжыме. Вы плаціце за сервіс, завісіце ад постаўчыка і адмовляецеся ад часткі кантролю.
    • Qdrant доступны як пад адкрытым кодам, так і ў воблаку; яны эфектывна фільтруюць метаданні, падтрымляюць ўпорадкованы і гібрыдны пошук, а падходзяць для самастойнага размешчэння RAG. Самастойнае размешчэнне значыць неабходнасць вядзення операцыйных задач, а дыстрыбуіраваныя рашэнні выклікаюць патрэбу адзяйнае планавання ўместа.
  • Weaviate адказвае прыгожым выкарыстаннем дадзейнаў, гібрыдным пошукам і фільтрацыяй метадаў, у фармаце на хмарэй або самастойна. Большая колькасць функцый можа прынесці большую складнасць сістэмы, а вялікія навантажэння вымагаюць налагоджэння.
  • Chroma падходзіць для распрацоўшчыкаў і ёсць зручным для пратотыпаў і маленькіх прыладоў, з простым інтэграцыяй у Python. Яго зазвычай не выбіраюць для вельмі большых падпрыемственых рашэнняў, дзе важлівейшыя ўскорэнне і аператывнае кераванне.
  • FAISS — гэта вельмі популярная бібліятэка для шыранага пошуку сяроднечыняў і локальных эксперыментаў без зусільнае базы дадзейнаў. Цэя бібліятэка прызначаная для пошуку, а не для распадзеленай базы дадзейнаў, таму для пастановкі настойчывасці, фільтрацыі, падтрымкі калькуляцый для разных корыстувачаў і распадзелення дадзейнаў трэба додатковыя інжынерныя рашэння.
  • Выкарыстанне дадзейнаў

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

    BM25 — гэта сільны лексыкальны метод, чырплівы для точных тэрмінаў, імен, ID-ў і тэхнічных ключоўых словаў; ён просты і зрозумілы. Ён не розумее сэмантычнай падобнасці, таму сінанімы і парафразы застаюцца непазначанымі.

    Гібрыднае шуканне часта сумашчае BM25 з шуканнем за дапамою ўпакоўаных вектараў, спаўнаючы лексыкальную точнасць з сэмантычным дзіяннем для атрыбутабельнейшых рэзультатаў у разных тыпах запытанняў. Ён выклікае патрэбу у злучэнні рэйтынгаў або балаванняў, а таксама ў большай інфраструктурэ і налаштаваннях, чым просты метод адзыскання дадзенаў.

    Трансфармацыя запытання

    • Перапісвоўка запіту ператварае розмовны або нечыста сформульаваны вхідны тэкст у такі, які лёгка адшукаць, што дапамагае у ставленні наступных запытаў. Некалькаспрэчная перапісвоўка можа пазбавіць запыт ключовай інфармацыі, а таксама падвышыць затрымкі і вартасці працы LLM.
    • Адшукаць кальколькіх запытаў параджае модэлю стварыць кальколькі альтэрнатыўных запытаў і адшукаць інфармацыю для кожнага з яных, што павышае точнасьць адшукання і дапамагае разглядаць разныя формулюванні. Гэта абяўляе больш кальколькіх запытаў, больш затрымак і вартасці, а таксама часам несумяжныя рэзультаты адшукання.
    • HyDE (Hypothetical Document Embeddings) стварае вымышленую адпаведзь і вбудоввае яе для адшукання, што можа дапамогць у складных запытах або сітуаціях, калі лексыкапедыя запыта сільна адрозніцца ад лексыкапедыі дакументаў. Для гэтага трэба дадатковы вызов LLM, а паслаблены вымышлены дакумент можа спамтаць рэзультаты.

    Фюзыя

    Вярнавочная фузыя рангаў спаўнае разныя рангі з кальколяў дадзеных. Яна простая, надзеяная і добра работае з ўплотненымі дадзенымі і методам BM25; кроме таго, яй не трэба рангі з разных сістэм, каб іх можна было пораўняваць. Яна дадае ўтварэнне новага етапу ранжавання, пры чым застаюцься параметры для налаштавання.

    Фузыя з вагамі надае разную значымасць уплотненым, розрэдзітым чы іншым сігналам, што ўжыткова, калі кальколяў дадзеных маюць разную сілу. Шкалы рангоў павінны быць нормалізаваныя, а вагі залежаць ад обсягу работы.

    Пераранжаванне

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

    Крос-кодэры для перэранжування, такі як BGE Reranker, Cohere Rerank і Jina Reranker, спільно оцінююць кожну пару запіту-документа, зазвічай досягаючы крашчых рэзультатыв, ніж звічайне вбудовування інформацыі, і ефектывно працуюць у поеднанні з гібрыднім пошуком. Яны дорожчы за векторній пошук, тому іх слід вікорыстовуваты лішэ з обмежэнім спіском кандыдатыв.

    Перэранжування за допомогою LLM змушуе мадэль оцінюваты рэлевантнісць і можа враховуваты складні крытэрыі, проце гэты підхід повільній, вімагае багато рэсурсів і менш надыйній, ніж спеціалізовані інструменты для перэранжування.

    Максімальна маргінальна рэлевантнісць (MMR) забезпечуе баланс між рэлевантнісцю і рызноманітнісцю, усуваючы дублікаты серэд рэзультатыв з вісокім рэйтынгом. Яна додае параметр рызноманітносты, проце надмірна рызноманітнісць можа прызвесты до відалення рэлевантніх даных, які збігаюцца між собою.

    Компрэсія кантэксту

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

    Генераванне

    Паўзлівыя варыянты для практычнага выкарыстоўвання — гэта модулі OpenAI, Anthropic Claude, Google Gemini, Meta Llama і Qwen. Яны апяроцаваны за сільныя спромэны до рассуждэнія, а запыткі можна направляць на аднойчыннасці віцоў, затрымак і сложнасці задачы. Модулі API апяроцаваны за віцы і залежнасць ад постаўчыка, а відкрытыя модулі выкарыстоўваюць інфраструктуру; большыя модулі ж паўзлівыя збільшуюць затрымкі і віцы апрацоўкі.

    Фрэймворкі

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

    LlamaIndex сфокусаваны на прыеме дадзеных, іх індэксаванні і выкарыстоўванні, пры чым у яго ёсць корыстныя абстракціі для рэшэння задач, заснованых на дакументах. Ён падыходзіць да збільшэння складнасі фрэймворку, і дзеякі прыменныя сістэмы зрэшты пераходзяць на SDK-і ніжэйшага рангу.

    LangGraph падходзіць для працы з сістэмамі, якія маюць стан, розгалужэння і агенты, з можлівасцю павтаральнага выкарыстоўвання дадзеных і адклікання інструментаў. Ён ёсць болей складным за тое, што патрэбна простая сістэма пайплайну, і выклікае неабходнасць адзорнага керавання станам і сітуацыямі з бракамі.

    Развітыя патэрны

    • Corrective RAG аналізуе отрыманій кантэкст і можа ініціюваты додаткове пошукове запітування, віявляючы слабкі рэзультаты і дозволяючы вікорыстовуваты альтэрнатывні шляхі пошуку, проце гэта прызводыць до збільшэння затрымкі і складносты.
    • Self-RAG дозволяе мадэлі самостыйно вірышуваты, колі здыйснюваты пошук і як оцінюваты отрымані рэзультаты. Яна адаптуецца, шчоб унікаты зайвіх запітыв, проце логіка керування ёсць більш складною і вімагае рэтэльноі оцінкі і підтрымкі мадэлі.
    • Agentic RAG вікорыстовуе агента для планування пошуків, вікліку інструментаў, ітэратывного отрымання даных і іх перэвіркі, што дозволяе розв’язуваты складні багатокрокові задачы з кількох джэрэл. Гэты підхід супроводжуецца вішчою затрымкою і вітратамі, більшою колькасцю можлівіх помілок і складнішым віправленням проблем.
  • Graph RAG спаўнае граф знанняў з процэсам выкарыстоўвання інфармацыі, што дапамагае разумець адносы між ентытамі і адпавядаць на запіты, якія звычныя вектары не можуць рашыць. Створэнне такога графа ёсць даскладным, экстракцыя ентытамі часта прыводзіць да паклёскаў, а таксама трэба ўтрохці інфраструктуры.
  • Multimodal RAG выкарыстоўвае інфармацыю з тэкста, атракцыяў, табелей і дыяграм, што падходзіць для звёрнакоў, сканаў і схем, але выкарыстоўвае большыя рэсурсы для працэса практыкавання і індэксавання, а таксама мае вышэйшыя віткі на мадэлі для аналізу візуальных дадзеных.
  • Структураваныя дадзеныя

    Text-to-SQL дазволяе модэлю ператвараць запыты на нейтральнай мове на кэйсы для структураваных баз дадзеных, што чырпаецца для аналізу свежых дадзеных. Створаныя SQL-кэйсы могу быць некорэктнымі або небезпечнымі, таму трэба ўтрохці працэсы выкарыстоўвання схемы, ўпэўнення ў яе правільнасці і кантроль даступу.

    Гібрыдны тэкст і SQL RAG выкарыстоўвае вектарны або ключавы спосабы пошуку для неструктураваных дадзейнаў і SQL для структураваных фактов, адбіраючы інфармацыю з PDF-файлаў, дакументаў, CSV-файлаў і баз дадзенаў у ўнічожным рашэнні. Ён выклікае патрэбу у перэключэнні между рэжымамі, што ускладняе тэставанне і забезпечэнне безпекі.

    Ацэнка

    Сістэма для практычнага выкарыстоўвання трэбуе ацэнкі як на рэвэрсным, так і на генератыўнам уровнях.

    Паказнікі рэвэрснага пошуку (Recall@K, Precision@K, MRR, NDCG і hit rate) паказваюць, чы рэвэрсны механізм знайшоў правыя доказы. Паказнікі генератыўнага працэсу (вярнасць, рэлевантнасць адказа, правільнасць адказа, рэлевантнасць кантэксту, тачнасць кантэксту і Recall кантэксту) паказваюць, чы мадэль правільна выкарыстала тыя доказы.

    Ragas створаны для ацэнкі RAG, пакрываюць оба рэвэляванняі і ўжыткавыя для тэстав рэгрэсіі. Большасць ягох метрыкас апоўязаны на суддзях у вобразе LLM або эмбедынгаў, таму балы не можаць абсалютна заменіць людскую ацэнку, а мадэлі-суддзі можуць мець упэчатленасці. Людская ацэнка — гэта найкрашчы спосаб для ацэнкі якосці ў конкрэтных сферах і дапамагае выявіць тое, што працягваецца заўсёды аўтаматызаванымі метрыкамі, але гэта дорога, медленная процедура, якая вымагае адпаведных правілаў.

    Візуабельнасць

    LangSmith адмініструе ланцюгі зв’язку, запіты на отрымку дадзейнаў, прампты і рэзультаты ў выходзе, а таксама дапамага ў налагоджэнні пайплайнаў і пораўнанні эксперыментаў. Цэя платформа ёсць кераваная і врачоўвае аспекты цэны і прыватнасці. Langfuse аддае можлівасці трэйсінгу, керавання прамптамі і аналізу метрык, у фармаце відкрытага кода для самастойнага размешчэння або ў воблаку; пры чым самастойнае размешчэння ёсць вашай адпаведальнасцю і выклікае патрэбу ў спецыяльных інструментах. OpenTelemetry ёсць відкрытым стандартам для трэйсінгу, метрык і логаў, які дазволяе інтэграцыю RAG у існуючую інфраструктуру, але для чаго трэба больш працы з стваранням інжынерных рашэнняў, чым у платформах з готовым рашэнням.

    Кешаванне і выконвальная спроможнасць

    Семантычныя кэшы павтараюць выкарыстоўванне адпаведзенняў для падобных запыткаў, чым зменшаецца колькасць павтаральных вызывоў LLM, час адпаведзення і вітраты. Але падобныя запыткі могу захоць разнае адпаведзенне, калі змянююцца даны, а анулюванне такіх кэшоў ёсць складным. Кэшы эмбеджаў запобегаюць павтаральнам вычысленню вектораў для павтаральных тэкстоў — гэта простая перадчыннасць, якая павінна анулявацца ўсякі раз, калі змянюецца мадэль эмбеджаў. Асінхроннае і паралельнае выкарыстоўванне дазволяе запускаць незалежныя прыстроі выкарыстоўвання дакументаў адночасна, чым скорачаецца час адпаведзення, хоча карэнтнае керуванне памілкамі стае болей складным, а серверы павінны вытрымаць канкурэнтную навантажэння.

    Безпека

    • Штучнае введэнне інструкцый. Завярнутыя дакументы можу міць інструкцыі, прызначаныя для захоплення керування модэлем.
    • Выкарыстоўванне пад контролем даступу. Карыстальнікі павінны атрымваць толькі тыя дакументы, на яеяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяя
  • Работа з персональнымі данымі. Персональные даныя неабходна знайсці і замаскуваць, або іначы спакаваліваць, прычаму яны патрапляюць у індэкс.
  • Ізоляцыя корыстаўцаў. Калі ёсць калькі корыстаўцаў, запіты трэба фільтруваць за дапамогою метаданных, якія ведаюць пра кожнага корыстаўца, а сама база дадзеных патрабуе раздзелення.
  • Занэчысцэнне дадзеных. Дакументы з недазволеных істочнікаў можна запісаць з метой навмеснага падвохвання.
  • Жадна адна мера не рашае проблему безпекі. Неабходныя контралы трэба застосавіць на ўсіх этапах: пракуплэння, зберагчыце, выкарыстоўванне, автарызацыя, адкліканне і стварэнне інструментаў.

    Развёртыванне

    Тыповыя элементы такога сістэмы — FastAPI для шару API, Docker для пакавання, Kubernetes для керавання на вялікіх масштабах, Redis для кэшавання, PostgreSQL для стварэння рэляцыйных метадаў, S3, GCS або Azure Blob для зберагання об’ектаў, Prometheus для аналізу показнікаў, Grafana для стварэння дашбордаў, OpenTelemetry для трэйсінгу і MLflow для назірання за эксперыментамі. Мета — стварыць сістэму RAG, якая будзе відтворуемая, спостэрагаемая, масштабавальная і прыемная для адтульнення, а не тую, якая проста выглядае точнаю ў нотбуку.

    Практычны набор

    Моцны дзеянчык для шырокага вядароўства можа застацца дасыць простым. Дакументы праходзяць праз Unstructured, PyMuPDF або PaddleOCR, пасля чаго выканае структураванне або рэкурсыўнае раздзелэнне, пасля чаго выкарыстоўваюцца эмбеддынгі з OpenAI, BGE, E5 або Cohere, а потым pgvector, Qdrant або Pinecone. Адзысканне інфармацыі адбываеца за дапамою BM25 плюс ўжыццём методу ўшчэльненага пошуку, які спалучаны з RRF; рэзультаты пераранжуюцца за дапамою крос-кодэра, стылкуюцца і перэдаюцца LLM, пры чым даўаюцца цітаты для падтрымкі твэрджэнняў. Ragas і аналіз з боку людзей ацэнююць якасць, тым часам LangSmith, Langfuse або OpenTelemetry сочаць за часам выканання.

    Не кожная сістэма патрабуе кожнага компонента. Невялікая внутраняя база знаёмых можа функцыонаваць за дапамою PostgreSQL, pgvector, эмбеддынгів і LLM. Гібрыдны метод адзыскання, пераранжаванне рэзультатаў, агентныя цыклы, пошук у графах і мультымадальная апрацоўка дадзеных застаюцца неабходнымі толькі пасля таго, як адзынакаванне пакажае, што простэйшы дзеянчык не падходзіць.

    Выбор адпаведнага інструмента

    • Простыя PDF-тэксты: PyMuPDF. Сумешаныя тыпы дакументаў: неструктураваныя. Сканаванні: PaddleOCR. Візуальна складныя сторынкі: мадэль візуальных і мовных даных.
    • Базаваная разбівка на часткі: рэкурсыўны распадчык. Семантычныя межы: семантычная разбівка. Кантэкст абоццаў і дзецей: выкарыстанне адносаў абоццаў і дзецей.
    • Управляемыя эмбеддынгі: OpenAI або Cohere. Адкрытыя эмбеддынгі: BGE або E5.
    • Ужо ў PostgreSQL: pgvector. Управляемы хранілішча вектароў: Pinecone. Самастойнае хоставанне: Qdrant. Пратып: Chroma або FAISS.
    • Пошук на аднойчыні значэнняў: ўжо заполненыя вектары. Точныя ключавыя словы: BM25. Надзеянае пакрыцце: гібрыдны метод. Адзначэнне рангаў: RRF. Вышыя практычныя рэзультаты: крос-кодэр для пераранжавання. Менша колькасць дуплікатаў: MMR.
    • Складныя багатыясправныя запіты: агентны RAG. Адносы энтытаў: Graph RAG. Табелі і базы дакументаў: пераклад тэксту ў SQL.
  • Ацэнка: Ragas. Аналіз: LangSmith або Langfuse. Стандартная тэлеметрыя: OpenTelemetry. API высокага масштабу: FastAPI з Docker або Kubernetes.
  • Пачніце з малага

    Найбольшая архітэктурная памылка — спрыяць LLM як цэлай сістэме. Якасць вытвараецца ад запошуку да кантэкста, да генеравання, а потым праз ацэнку і стварэнне можлівасцяў назіркі. Большая мадэль не можа надзеяйна компенсаваць нехватку доказаў.

    Корыстны цыкл пасляўпрабавак ёсць: базовы стан, ацэнка, выявленне этапу з бягамі, змена аднаго компонента, паўторная ацэнка, развяртанне і монітарынг. Для большасці праўзводных сістэм пачніце з надзейнага парсавання і частковага разбівання з урахоўваннем структуры, хорашых эмбедынгаў, гібрыднага запошуку і рэранкера, а пасля дадзіце генераванне на аднойчынных падставах і ацэнку. Введзіце агентны запошук, Graph RAG, мультымадальныя пайплайны, корэктывныя цыклы або фін-цюнінг толькі тады, калі вімагання, якія можна змерыць, прабачаюць іх вартасць і складнасць.

    Хорашая інжынерыя RAG — гэта не столькаа сбор усіх тэхналогій, сколькі выбір самай простой архітэктуры, якая падтрымвае вашы цялі ў аспектах якосці, часу адпаведзьбы, косту, безпекі і працёйнасці.