Chroma Context-1: пошукавы субагент на 20B для таннейшага і дакладнейшага агентнага RAG
Chroma Context-1 — пошукавы субагент на 20B для агентнага RAG, які сам абразае свой кантэкст. Як яго навучалі, што яму трэба ад абвязкі і якія ў яго межы.
Крыніцы: Replace Your RAG Agent’s Brain With a 20B Model. It Got Smarter.
У большасці сістэм RAG апранацыя дакументаў ёсць слабым ланкам. Можна выкорыстаць GPT-4, Claude, Gemini або будзь-яю іншую сучасную мадэль, але калі крок пошуку дае некальканосныя рэзультаты, мадэль все рава будзе даваць впэўненыя, адкалікаваныя, але некарэктныя адпаведзі.
Разглядзім пошук у правовых дакументах, дзе адпаведзь на запытанне розпадзіцца між трыма дакументамі, і агенту трэба знайсці ўсе тры. Звычайны падход — выкорыстоўваць сучасную мадэль у цыкле ReAct з інструментамі векторнага пошуку. Гэта працюе, але за цэну адпаведна $0,12 і па панздзесят секунд на запыт, гэта толькі дэманстрацыя, а не функцыя продукту. Chroma’s Context-1 спрамованы самэўсёлкі на рашэнне проблемы такой вартоўкі і затрымкі.
Што такое Context-1
Context-1 — гэта мовная мадэль з 20 мільярда параметраў, створаная для аднаго завадзя: апранацыі дакументаў. Яна не генеруе фінальныя адпаведзі і не выконвае загальнага расумавання. Яна толькі шукае.
У тыповай наладзе агентнага RAG адна мадэль выконвае ўсё: яна плануе, што шукаць, адбывае пошук, выявляе, чырэзна ўсёга, і піша адпаведзь. Гэта як найняць нейрохірурга, каб ён таксама робіў пакупкі. У сваю чаргу Context-1 выступае як спецыяльны падагент для пошуку дакументаў, а аднае іншая мадэль займаецца логікай і напісаннем адпаведзі. Гэта ўскладненне задач у архітэктураы ШЫ.
Мадэль пабудавана на gpt-oss-20B — аднай адкрытай базовай модэлі, і яна навучана за дапамою кераванага фін-цюнінгу, пасля чаго выкорыстоўваецца метод расшырэнага навучэння Chroma’s CISPO (Clipped Importance-Sampled Policy Optimization). Рэзультатам являецца малая мадэль, якая па крытэрыях адзыскві дакументаў парадзіць многім большым мадэлям за сваю габарытнасць.
Чаму звычны агентны RAG не падходзіць
Класычны пайплайн выконваець адзін крок: задаецца запіт, вяртаюцца топ-К фрагментаў, а LLM пішае адпаведзь.
User Query → Embedding Search → Top-K Chunks → LLM → Response
У гэтага спосабу ёсць вядомыя проблемы. Вы отрымляеце толькі фрагменты, а не цэлыя дакументы, таму глобальны кантэкст губіцца. Однаго праходжэння недаст можлівасці з’яўіць зв’язак між фактамі, распаўзлымі па калькі дакументаў. А семантычная супаданнасць не ўзроўневана з рэлевантнасцю, адтолькі фрагмент можа маць спакойнае словаўнік з запытам, але ўсё равна не адпаведаць на яго.
Апгрэйд у фармаце агентаў заключае гэта ў цікл ReAct, дзе мадэль плануе, шукае, аналізуе рэзультаты і вырашае, чы робіць шуканне знову.
User Query → Plan → Search → Observe → Need more info? → Search again → Generate
Лепша версія, але ёсць адзін недзея. Той самы большы модэль фронтэйн выканае кожны крок: планаванне, вызов інструментаў, ацэнка рэзультатаў і адсечка нерэлевантных частак, усё за цэнамі фронтэйн. Меньшыя модэлі не можуць заменіць яго, таму што самы прыказ сістэмы і апісанні інструментаў вялі яны ў плутанне, і яны не можуць надзеяна следаваць цыклу. У канцыку вы плаціце высокія тарыфы за работу, якой не патрэбна высокая інтэлігэнція.
Як гэта працуе
Chroma не проста налаштавала модэль. Яна стварыла каркас агента і навучыла модэль у ям, так што модэль і яе інструменты прыходзяць як пара. У навучэнні беруць удзел чатыры інструменты:
search_corpusвыканае гібрыдны пошук, спалучаючы падбіранне ключоўых слоў BM25 з інтэнсіўным векторным пошукам за дапамогою фюзыі взаімных рангаў, таму вы отрымліе точныя падабенства і сэмантычнае разумеўненне адночасна.grep_corpusвыконвае падзею адпатавання рэгулярных выразаў у всім корпусе і вяртае да пяці частак, якія падходзяць, што ўжоць практычна для пашуку па конкрэтной даце, імені чыя то номеры спрабы.read_documentзапрашоўвае цэлы дакумент па ID, калі якая-небудзь частка здаецца перспектывной.prune_chunksдазволяе модэлю выдаліць частакі з сябея кантэкста, калі ён вырашае, што яны неякія. Гэта яго галоўная перадоўга.
След выказвае патэрн. У першым кроце модэль шукае ўсё, што супадае з такімі тэрмінамі, як штрафы за злічыненне чы адкупленне, і вяртаецца восьмі частакі, тады калькулятор токенаў паказвае 8,432 з 32,768. У другім кроце ён чытае цэлы дакумент і зноў шукае, а потым выдаліць тое, што не было корыстным, тым самым зваліваючы месца для дальнейшага пошуку.
Turn 1: search_corpus("merger acquisition penalties 2024")
→ Retrieves 8 chunks [Token usage: 8,432/32,768]
Turn 2: read_document("doc_14") + search_corpus("SEC filing penalties")
→ Retrieves 4 more chunks [Token usage: 18,203/32,768]
Turn 3: prune_chunks(["chunk_3", "chunk_7", "chunk_9", "chunk_11"])
→ Removes 4 irrelevant chunks [Token usage: 14,203/32,768]
Turn 4: search_corpus("specific penalty amounts regulatory action")
→ Retrieves 3 final chunks [Token usage: 21,847/32,768]
→ Returns ranked supporting documents to the reasoning model
Сэрвэль-эдытаны рэкст
У большасці практычных рэштрыктаванняя ёсць традыцыя браць групу фрагментаў, падставляць іх у запіт і пакладацца на мадэль, каб тая ігноравала тыя, якія не маюць значэння. Доследжэнні паказваюць, што мадэлі не проста ігнаруюць шум, але і плутаюцца з яго, што называецца эфектам «ротацыі рэксту». Context-1 раскідваецца з гэтым прыбліжна. Яго вікна рэксту складае 32 000 токэнаў, а прыстрой для керавання стэжы за ўжыццём ў момент выканання:
- Пасля кожнага вызову інструмента мадэль бачыць сваё тэкушчае ужыццё у фармаце
[Token usage: 14,203/32,768]. - Калі колькасць токэнаў падыходзіць да 24 000, прыстрой дае сігнал пра неабходнасць адсічэння часткі матэрыялу або завершэння працы.
- Калі колькасць токэнаў перасягае настаўлены жорсткі ліміт, мадэль можа толькі адсіць часткі матэрыялу або завершыць працу, не можа больш выкарыстоваць рэкст, што запобегае неконтрольаванаму зростанню рэксту.
Точнасць выдалення непатрэбных фрагментаў досягае 0,941, што вышэй за 0,824 у базовай модэлі, таму яна выяўляе нерэлевантныя фрагменты прыблізна у 94% случаў. Гэта лепшая, чым у Provence ад Naver Labs, якая выкарыстоўвала спецыяльную модэль для выдалення рэчэнак. У даным случае агент для пошуку выдаляе непатрэбныя фрагменты як частку свайго звычайнага працэса работы, без дадатковай модэлі.
Тры рэвэры
Chroma падкрэсляе, і гэта правыя парады, што Context-1 трэба выкарыстоўваць толькі для адзысквання дадзенняў, а не для ўтварэння новых тэкстаў. Архітэктура складаецца з трохоў рэвэраў: слоя дадзенняў, падагента для пошуку Context-1 і верхньяго модэля для логічных выводам. Такое раздзеленне прыносіць практычныя выгоды чатырма спосабамі:
- Кожную частку можна паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабаваць паспрабавац
- Дорагі мадэлі бачаюць толькі чысты, апрануты кантэкст, а не неапранутыя выходы з пошуку.
- Context-1 генеруе 400–500 токенав за секунду на працоўніку Nvidia B200, што ўскорае багатоэтапны пошук.
- Механізм аналізу отрымае сфармаваны матэрыял і стварае лепшыя адпаведзі.
Гэта знову прынцып мікросэрвісаў: не заставляйце адну мадэль робіць усё.
Як яе трэнавалі
Контролаваная дапрацоўка. «Вучыльнікам» была Kimi K2.5 — большая мадэль. Команда стварыла траекторыі пошуку з ўжыткам гэтай мадэлі ў чатырохінструментовым комплексе, фільтрувала іх па рэзультатах і трэнавала Context-1, каб тая імітавала як успешныя, так і неуспешныя запускі. Неуспешныя запускі заставаліся навмысна, таму што нават пошукі з нізкім рэзультатам маюць правільна сформаваныя вызовы інструментам, дэкомпозіцію запітаў і выборы для ўскаржэння. Учнік вучыцца механізмам пошуку з тых запускаў, якія не далі рэзультатаў.
Навчанне за допамінгам з CISPO. Кожны крок навчання выкарыстоўваў 128 запытанняў, кожна з якіх мела 8 варыянтаў, тэму 1,024 траекторыі, за 5 эпох, якія сяглі стабільнасі прыблізна на 230-му кроцы. Кожны токен спадчынае ў процэсе навчання, укладаючы ў сябе нават рэдкія, але важлівыя элементы, такія як рашэнні пра адсечэнне. Награда складаецца з калькуляцыі кількох паракаментаў:
Reward = F1_score (recall-weighted)
+ trajectory_recall_bonus
+ final_answer_bonus (+1.0)
- repeated_pruning_penalty (0.1 per excess)
- turn_count_penalty
Адаптаванне таксама выконвалася па дваэтапнай схеме. Спачатку выкорыстоўваліся простыя задачы з аднаго крока, у якіх важынь памяці была 16 разоў вышэй за важынь тачнасці, што спрыяе агрэсіўнам адкрыццю новых варыянтаў. Пазней перайшлі да сложнейшых задач з калькольніка крокаў, у якіх важынь была 4 разы вышэй, што спрыяе выбірачнасці. Гэта супамінае адучэнне шукача-сабакі: спачатку знайсці будзь-які запах, а потым конкрэтны.
Трубопрацес дадзеных
Аднам з найкорыстнейшых элементаў, якія выпусціла Chroma, можа быць ўсунуты трубопрацес генеравання сінтэтычных дадзеных, які ўвесь час ў доступе на GitHub, і які служыць планам для стварэння дадзеных для адучэння сістэмы пошуку ў будзь-якай галіні. Ён выконваецца па прынцыпе: адкрыцце, перакананне, пашырэнне.
Seed Topic → Explore Web → Extract Verifiable Facts → Generate Tasks
↓
Add Distractors → Chain Into Multi-Hop → Verify Answers
- Экспанаванне. Начынаком выступае які-небудзь тэматычны элемент, напрыклад, адзін з тытулоў Вікіпедыі, пасля чаго агент пераглядае інтэрнэт і сабірае дакументы з унікальнымі, пераканальнымі фактамі.
- Стварэнне задач. Дакументы ператвараюцца на падказкі і запытанні, якія выклікаюць неабяжліваяе багатаэтапнае разумаванне, а не простае пошукаванне інфармацыі.
- Адвалеры. У працэсе апрацоўкі дадзеных ствараюцца абражкі, якія супадаюць з правам адказам, але спрамоўваюць на іншыя рашэнні, імітуючы рэальныя перакашанні пад час пошуку.
- Спаяванне. Задачы, якія можна рашыць за адні крок, спаяваюцца за дапамою аднаго адказу для ставлення наступнага запытання, чым ствараюцца задачы з колькасцю крокаў ад аднаго да чатырох.
Ён з самага пачатку падтрымлівае чатыры домены: веб, дакументы SEC для фінансавых цялей, патэнты USPTO для прававых задач і электронную пошту, выкарыстоўваючы наборы дадзеных у стылі Enron. Доверлівасць да дадзеных апэкуюцца верыфікацыяю на аднойчыннай адгэтуванні, пры якой алгорытмы LLM выкарыстоўваюць цітаты з дакументаў і адпаведныя падказкі, нормалізуюць іх і паўтараюць, чы ўсё тэкста адпавядае рэальнасці. Точнасць адпаведнасці перавышае 80% у кожным домене, а пераказ чалавекам скарочваецца з чытання цэлых дакументаў да паўтарэння пар цітатаў.
Пробаваеце яго сёньдзе
Існуе тры спосабы.
Хоставаная API — гэта самы просты варыянт, адколькі всю налагодку адбываецца за вас, хоць яна знаходзіцца ў чакальнай лісты.
Вагі знаходзяцца на Hugging Face пад ліцэнзай Apache 2.0:
from transformers import AutoModelForCausalLM, AutoTokenizer
model = AutoModelForCausalLM.from_pretrained(
"chromadb/context-1",
torch_dtype="auto",
device_map="auto"
)
tokenizer = AutoTokenizer.from_pretrained("chromadb/context-1")
Галоўныя прычыны абавянення — гэта тое, што сам прыстрой, тыя бачынкі, якія включаюць выкананне інструментаў, кантроль бюджэта токенав, адсортаванне і усуненне дуплікацый кантэксту, яшчэ не ўвесь час ёсць публічным. Без яго немагчыма відтворыць рэзультаты тэхнічнага апаведамлення. Такі падход вядомы з кодуючых агентаў: той самы мадэль ведае сабе аблічна ў розныя інструменты, таму што сам прыстрой стварае разлік. Context-1 без яго — гэта двыгун Формулы-1 без автомабіля. Chroma заявляе, што плануе опублікаваць прыстрой і код для ацэнкі.
Трэці варыянт — стварыць свой прыстрой на адной з чатырох задокументаваных інструментаў. Шырма-код даўа уявленне пра прынцып, але не будзе адпавядаць версіі, якая вікорыстоўваецца у Chroma:
# Pseudocode for a basic Context-1 harness
tools = {
"search_corpus": hybrid_bm25_vector_search, # BM25 + dense vector via RRF
"grep_corpus": regex_pattern_search, # Regex matching, max 5 chunks
"read_document": full_document_retrieval, # Full doc by ID
"prune_chunks": context_pruner # Remove chunks from context
}
context_budget = 32_768 # tokens
soft_threshold = 24_000
current_usage = 0
while not done:
# Get model's next action
response = model.generate(conversation_history)
# Execute tool calls (model may call multiple in parallel)
for tool_call in response.tool_calls:
result = tools[tool_call.name](**tool_call.args)
conversation_history.append(result)
current_usage = count_tokens(conversation_history)
# Enforce context budget
if current_usage > soft_threshold:
# Suggest pruning or concluding
conversation_history.append(
f"[Token usage: {current_usage}/{context_budget}] "
"Consider pruning irrelevant chunks or concluding search."
)
Чырвоныя межы
- Ён адаптаваны для аналізу глыбіні, для пошуку конкрэтных элементаў. Запыты, якія павінны знайсці ўсі дакументы, якія падпадаюць пад певны крэтэрый, не ў ўсіх аспектах ў яго сіле.
- Ён не пішае коду, таму не можа стварыць SQL-запыты для аналізу структураваных дадзеных. Ён шукае толькі ў дакументах.
- Ён не вучыцца структуры вашых дадзеных чы метададзэных, таму аналіз схемы залежыць ад вашай інфраструктуры.
- Без офіцыяльнага інструментарыя немагчыма досягнуць адзіваных рэзультатаў, што наразе перакрывае можлівасці багато команд.
- Вікна памяці 32K, нават з можлівасцю самастойнага рэдагавання, можа быць недастатнім для віканання дзеякых задач.
Што ён прымыкае
Кантэкст-1 мае значэнне не толькі для Chroma. За апошнія два гады стала практыка выбіраць самую моцную мадэль, якая падпадае пад ваш бюджэт, і даваць яй распрацоўваць усі крокі. Кантэкст-1 паказвае, што маленькія спецыялізаваныя мадэлі можу зроўнявацца з найсучаснейшымі мадэлямі па выпанню вузькаясаблівых задач, а сумешчанне спецыялістаў, такіх як знаходзільнік даных, механізм аналізу і генератор коду, дае сістэму, якая працуе быстрэй і коштуе менш, і часта дае лепшыя рэзультаты, чым адна монолітная мадэль. Програмнае забезпечэнне таксама прыйшло да таго ж пераходу, калі велікія монолітныя прыкладнікі былі раздзелены на мікросервісы. Моноліты все ўсё працавалі нормальна. Маленькія, сфокусаваныя на конкрэтных задачах компоненты проста легча масштабаваліся.
Для тых, хто стварае RAG у 2026 годзе, практычны вопыт змяніўся. Не трэба больш спытвацца, які мадэль высокага рангу павінна обрабоцваць усё, а трэба спытвацца, які спецыяліст падходзіць для кожнага этапу. Мадэль на 20 мільярдаў параметраў, якая можа конкуруваць з GPT-5.4 і Opus-4.5 у задачах адзысквання інформацыі, ставяе пад сумнев ідэю, што большыя мадэлі завжды лепшыя, якую прымушвае прыймаць маркетынг.
Спадневаная літэратура
- Stateful RAG на Databricks: Мнагакратная памяць з Lakebase і LangGraph — Надаюце агенту RAG у Databricks справжню памяць для дыялога: парсуеце PDF-файлы, ствараеце сістэму вектарнага пошуку, зберагаеце ход дыялога ў Lakebase Postgres, а потым развяртаеце ўсё праз MLflow і Model Serving.