Узровень за ўзроўнем: праектуем сапраўдны RAG-канвеер пошуку для AI-агентаў
Плануем RAG-канвеер з кантрактамі SourceDocument і DocumentChunk, разбіўкай, эмбедынгамі і ChromaDB, схаванымі за RetrievalService, які трымае агента стабільным.
Крыніцы: Building a Real RAG Retrieval Pipeline for an Enterprise Multi-Agent AI Platform
Замена агента для выкарыстоўвання іграшака на справжню парадогу RAG — гэта час спаможна зупініцца і пашагоўна адбавляць работу. У бізнес-платформе з калькольніка агентаў RetrievalAgent спачатку працаваў на намерна простай локальной рэалізацыі. Гэтага было дастаткова, каб падтвердзіць архітэктуру, але для практычнага выкарыстоўвання трэбуюць справжнія дакументы, эмбеддынгі, сховішча вектароў і семантычны пошук. Целевы прайсход працюе ад дакументаў праз ўвахоўванне, разбіўчы на часткі і стварэнне эмбеддынгаў у ChromaDB, а потым да семантычнага выкарыстоўвання, RetrievalAgent і шырэйшай платформы.
Уместа таго, каб стварыць усё за адну раз, план прыводзіць да дадаўання аднаго шару за раз, з тэстамі на кожным этапе і падтрымкай працяснага CI-прайсходу. Цілямі ёсць пастойныя дадаўання, эфектывае CI і надзейная архітэктура.
Элементы парадогу RAG
Полны ўзлёгкі аб’еднвае калькольніка незалежных інжынерных аспектаў, якія на дыяграме ніжчэй паказаны пачынаючы з адпаведных выхідных дакументаў.
Source Documents
↓
Document Ingestion
↓
Chunking
↓
Embeddings
↓
Vector Storage
↓
Semantic Search
↓
Retrieved Context
↓
Retrieval Agent
Магчымае будаваць кожны компанент адночасна, але гэта ускладнюе выявленне нештатных сітуацый. Калі якасць запрашоўвання дакумента нізкая, дзе сама прычына? Цэй можа быць парсінг дакумента, разбіўка на часткі, стварэнне эмбеддынгаў, хранення вектароў, логіка запрашоўвань, метаданные або інтэграцыя з агентамі. Якшто кожнаму слою надаць чыстае заведанне, контракт і межы тэставання, то такія пытанні стаюць адпаведнымі да адпаведзення. Рытм работы — будаваць, тэставаць, выкладзіць, пераканацца ў правільнасці ў CI, падтрымваць стан «зеленага» колеру, а потым продаважыць працю.
Пачніце з контракту дадзеных
Перш чым працаваць з эмбеддынгамі чы апаратам ChromaDB, першы крок — створэнне контракту дадзеных. У потоцы апрацоўкі неабходна розразліваць два паняйманні: SourceDocument і DocumentChunk.
A SourceDocument — гэта віхівна крыніцы інформацыі перад тым, як яна будзе роздлена. Зрэшэй можа буты PDF, файлом DOCX або TXT, внутрышньою документаціею, фінансовімі звітамі, політыкою підпрыплану, тэхнічнімі посібнікамі або змістом базі знань. Яго концептуальна форма віглядае так:
SourceDocument
├── document_id
├── content
├── source
└── metadata
Кожны даследнік дакладна атрыбуецца стабільным ідэнтыфікатаром у архітэктурао пошуку.
Дакладнікі велікіх падпрыемств зазвычай не трэба включаць як адзін вялікі блок тэксту. Іх неабходна разбіць на меншыя, значамыя елементы, і гэта ў завадзе DocumentChunk:
DocumentChunk
├── chunk_id
├── document_id
├── content
├── source
├── chunk_index
└── metadata
Связь між двума ёсць аддытывной:
SourceDocument
│
┌────────────┼────────────┐
▼ ▼ ▼
Chunk 0 Chunk 1 Chunk 2
│ │ │
└────────────┼────────────┘
↓
Same document_id
+ source metadata
Адзін істочнік можа даваць дзесяткі з’едзінакоў, а можа і сотні, але кожны з’едзінак прытрымваеся лінку да свайго пачатковага document_id і істочніка. Што толькі пачынаецца семантычнае адзыскванне, які вяртае окрэмыя фрагменты значна большых дакументаў, гэты лінк становіцца крытычным.
Чаму працэс відстэйкавання ўскладненняў ўжо з першага дзяна
Уявіце 50-сторонні фінансавы атлас. Сістэма можа раздзеліць яго на дзесяткі з’едзінакоў, а семантычны пошук можа вярнуць толькі трох. Сістэма все рава должна магчыма быць сказаць, з якога пачатковага дакумента поўзла інформацыя. Відновленне гэтых зв’язкаў пасля адзысквання ёсць нестабільным, таму гэтыя зв’язкі павінны быць захаваны на кожным кроку працэсу.
Original Document
↓
SourceDocument
↓
DocumentChunk
↓
Embedding
↓
Vector Record
↓
Semantic Search
↓
RetrievedDocument
↓
Original Source
Возможна атрыбуцыя ўскладненняў яе часткаю архітэктуры дадзеных з самага пачатку, а не чымсь, што думаюць пра ўсё пазней.
Тэставанне кантрактаў
Пасля таго, як апісаныя модэлі, автаматызаваныя тэсты пакрываюць як SourceDocument, так і DocumentChunk. Яны пераканальваюцца, што модэлі ствараюцца правільна і што ключовыя польны працуюць так, як і лічылася, уключаючы ID дакументаў, дэталі вучэльніка, змест і індэксы частак.
Гэта можа здавацца незначным крокам, але гэтыя модэлі будуць часткай всего працэса выкарыстоўвання дадзеных:
Document Models
↓
Chunking
↓
Embeddings
↓
ChromaDB
↓
Retrieval
↓
Agents
Зламаны контракт у пачатку гэтага ланцуга можа паўлічыць на усё, што знаходзіцца далей, таму база дадзэных захоўваная раней, чым будуе стварвацца ўсё больша інфраструктура.
Іншыя свядома прынятыя рашэнні — гэта падтрымкі цагу без зовнішняязалежнасцей. Ёсць тут ніякіх вызоў да OpenAI і ніякіх вызоў да ChromaDB, а тэсты пераканальваюць толькі контракты дакументаў. Таму сістэма шырокага інтэграцыйнага тэставання застаецца дэтэрміністычной.
Code Change
↓
Local Fast Tests
↓
Commit
↓
Push to GitHub
↓
GitHub Actions
↓
Clean CI Environment
↓
Fast Unit Tests
↓
CI PASSED ✅
Скорасцьвечаючыся набор прыладоў расце, тады як тэсты зовнішней інтэграцыі застаюцца ў сваёй окрэмай групе. Прычына гэтага — кожны новы шар прадаўаецца на платформу з автаматызаваным захадам.
Полны план развіцця
Контракт для дакументаў — гэта толькі першы шар. Ось весь план архітэктуры:
Enterprise Documents
│
▼
Ingestion
│
▼
Chunking
│
▼
Embeddings
│
▼
ChromaDB
Vector Storage
│
▼
Semantic Retrieval
│
▼
Retrieved Context
│
▼
RetrievalAgent
│
▼
Multi-Agent Platform
Кожны ўраг мае конкрэтную адпаведальнасць і павінен заставацца зрозумелым і прабавным сама по сабе.
Далей ідзе чанкаванне
Наступны элемент — Служба чанкавання, якая ператварае SourceDocument у калькі об’ектаў DocumentChunk.
SourceDocument
│
▼
ChunkingService
│
├── DocumentChunk 0
├── DocumentChunk 1
├── DocumentChunk 2
└── DocumentChunk N
З часам служба должна кераваць размерам частак і ўзаемным перакрыццем, праадаваць метаданы і дэталі выхаднага матэрыялу, прызначаць кожной частаке індэкс і ствараць стабільныя ідэнтыфікаторы. Адзін архітэктурны прынцып выдзеляецца: працэс разбівання на частакі не ўключаецца ў функцыі агента для выкарыстоўвання дакументаў. Агент вікорыстоўвае можлівасці для выкарыстоўвання дакументаў і не павінен таксама брасці на сябе адпаведальнасць за падготовку дакументаў.
Эмбеддынгі і зберагачча
Пасля таго, як працэс разбівання на частакі будзе рэалізаваны і працаваць на тэстах, наступны слой стварае векторныя эмбеддынгі.
DocumentChunk
↓
Embedding Service
↓
Embedding Model
↓
Vector Representation
Kожны элемент ператвараецца en вектар, які кодуе яго значэнне. Пазней гэтыя вектары парабялююцца з уключаным запітам карыстальніка, каб знайсці супаўзелажны матэрыял.
DocumentChunk
↓
EmbeddingService
↓
Embedding Provider
↓
Vector
Змена модэлю эмбедынгу пазней якраз не будзе парадоксальна для застатку дыялогу RAG.
Пасля эмбедынга выконваецца ўтрыманне вектароў у стацыонарным сховішчы. Для локальнай розработкі стацыонарны кліент ChromaDB можа зберагчы індэксаваныя ведамасці праз перзапускі прыемленае.
DocumentChunk
+
Embedding
+
Metadata
↓
ChromaDB
↓
Persistent Vector Collection
Збераганы рэкорд патрабуе не толькі вектар. У ём таксама ёсць достатнья інфармацыя, каб падтрымаць кантэкст і возможнасць трасування:
Vector Record
├── chunk_id
├── embedding
├── content
├── document_id
├── source
├── chunk_index
└── metadata
Гэта дазволяе пры выкарыстанні вярнуць значымы кантэкст дакумента, а не толькі схожыя вектары.
Запіты
Калі база дадзеных заполнена, сістэма можа выконваць сэмантычны пошук. Шлях запіта ёсць:
User Query
↓
Query Embedding
↓
ChromaDB Similarity Search
↓
Top-K Relevant Chunks
↓
Scores + Metadata
↓
Retrieved Context
У працы з сэмантычным адгукуваннем, у протывараце цэлкам апоўнай залежнасці ад тачных падбораў ключоўых слоў, выкарыстоўваюцца фрагменты, якія концэптуальна адносуюцца да запіту карыстальніка. Рэзультаты пасля чаго перакладаюцца у стандартызаваны фармат, які ужо выкарыстоўваецца платформай.
Паўтарны з’яеднанне агента
Толькі калі інфраструктура адгукування працюе, весь працэс знову підключаецца да RetrievalAgent. З точкі зору агента картынка застаецца простай:
AgentRequest
↓
RetrievalAgent
↓
RetrievalService
↓
Relevant Documents
↓
Structured RetrievalResult
За RetrievalService рэалізацыя становіцца значна болей складнай:
RetrievalService
↓
Query Embedding
↓
ChromaDB
↓
Semantic Search
↓
Ranking
↓
Retrieved Context
Разлік мае значэнне. Агент для выкарыстоўвання дадзеных павінен спрацовваць з выкарыстоўванням дадзеных як з адной з сваіх можлівасцей і не патрабуе ведаць пра базы вектарных дадзеных, створэнне эмбедынгаў, зберагаччы частак або прыем документаў.
Першыя агенты працавалі з локальнымі дадзенымі, і архітэктура выглядала прыблізна так:
RetrievalAgent
↓
RetrievalService
↓
Local Documents
Тэпер адкладанне можа развівацца ў баку з большымі можлівасцямі:
RetrievalAgent
↓
RetrievalService
↓
Semantic Retrieval
↓
ChromaDB
↓
Embedded Enterprise Documents
Зверніце увагу на тое, што застаецца незменным: лінк з RetrievalAgent на RetrievalService. Зменяецца толькі інфраструктура, якая стоіць за гэтым кантрактом, і самэе таму абстракцыя запошуку была створана раней, чым з’явілася вектарная база дадзеных. Інфраструктура павінна магчымаць евалюацію без неабяжнай перэработкі архітэктуры агента.
Інтэграцыя з платформай
Прыемплеў RAG не існуе сама по сабе. Яго мета — запастыць практычныя корпоратывныя знанні для большага багатоагентнага сістэмы.
User
│
▼
Supervisor Agent
│
▼
Planning Agent
│
▼
Execution Plan
│
▼
Agent Registry
│
┌────────────┼────────────┐
▼ ▼ ▼
RetrievalAgent ResearchAgent AnalysisAgent
│
▼
RetrievalService
│
▼
RAG Pipeline
│
▼
Relevant Context
│
▼
Downstream Agents
У тым зяве агент выкарыстоўваець спынку, дзе выкананыя калькі агентаў, з’ёднае з спынкай, якая храніць корпаратывныя знанні.
Адна важлівая наўкла гэтага падходу: RAG – гэта не проста „дадзець вектарную базу даных“. Адпаведная архітэктура выкарыстоўвання дакументаў абумовваецца багатымі рашэннямі:
- Укладанне дакументаў і ўваходжэнне іх у сістэму
- Разбіўка дакументаў на часткі і стварэнне вектарных прэдставленняў
- Хранэнне вектараў і метаданых
- Семантычнае выкарыстоўвання дакументаў і ўпорадкуванне ў рэнкінгу
- Возможнасць вярнага адстэплення да выхадных дакументаў
- Інтэграцыя агентаў
- Тэставанне і можлівасць стазіроўкі працы сістэмы
Вектарная база даных – гэта толькі адна з частак у значна большай сістэме выкарыстоўвання дакументаў.
Намерна павтаральны шаблон
Інжынерны цыкл для адпаведнага этапу ўмышленна павтаральны:
Build One Layer
↓
Add Unit Tests
↓
Run Fast Suite
↓
Push to GitHub
↓
CI Validates
↓
Keep Green
↓
Build Next Layer
Гэта дозволяе прынцыпоўна расліваць складнасць, пакуль застаецца адказнасць да існуючай сістэмы. Уместо таго, каб адразу дадаць пяць компанентоў і разам яныя дыбагаваць, кожная можнасць пераканальваецца прыемнаю раней, чым прыходзіць наступная.
Першы вектар рэальнай лініі працы завершаны: контракт SourceDocument, контракт DocumentChunk, тэсты для обох модэляў і успешны швыракі запуск CI. Наступны план:
1. Document Contract ✅ COMPLETE
↓
2. Chunking Service ← NEXT
↓
3. Embedding Service
↓
4. ChromaDB Integration
↓
5. Semantic Retrieval
↓
6. RetrievalAgent Integration
↓
7. End-to-End RAG Pipeline
Кожны слой адаптуюць і тэстуюць незалежная, прычымо да наступнага крока.
Чаму гэта важна
Першы агент для выкарыстоўвання дакументаў паказаў, што архітэктура агента працюе. Тэперыя цель — заменіць яго тымчасавае выкарыстоўвання дакументаў на справжню інфраструктуру, перэйшоўці ад локальнага выкарыстоўвання дакументаў да сістэмы апрацоўкі дакументаў, іх частковага разбівання, стварэння векторных прэдставленняў, хранення ў векторных базах дадзенаў, семантычнага пошуку, а ў канцы — да агента, які выкарыстоўвае тэхнологію RAG. Паколькі агент завісіць ад абстракцыі службы, а не безпосерэдна ад ChromaDB, усё гэта можа выконвацца без перэработкі платформы для калькуляцыі агентам.
Дзеяў шырэйшы прынцып: ствараць стабільныя контракты навакол тых складовых, якія, як ожыдваецца, будуць змінюваны. Мадэлі будуць змінюваны, векторныя базы дадзенаў могу быць заменены, стратэгіі частковага разбівання будуць развівацца, а алгорытмы выкарыстоўвання дакументаў будуць прагрэсаваць, але платформа, якая іх падтрымвае, не павінна перапісывацца ў кожны раз.
Стварыцца можлівасць адзыскання інфармацыі, якая ўскладневае корпоратыўскую платформу з калькуляцыяй колькіх агентаў, а не тымчасовая дэманстрацыя RAG. У такой платформе Супервізор керуе процэсам, Рэйстры рашае пытанні пра можлівасці, спецыялізаваныя агенты выкананяюць задачы, RAG сапраўджае наявнасць фактов, тэсты захоўваюць правільнае працаванне, CI сочыць за кожным змянам, а меры прозрачнасці контролююць працу сістэмы. Метод ніколі не зменшваецца: стварыць слой, працаваць з яным, запусціць, падтрымваць CI у стане «зеленага», а потым стварыць наступны слой.