Агенты Bedrock: падсумаванне памяці, версіі абмежаванняў і база ведаў
Кіраванне агентам Bedrock праз Terraform: памяць сесіі з уласным промптам падсумавання, версійныя guardrails з паступовым пераходам ад выяўлення да блакавання і RAG на S3.
Крыніцы: 6A. Building Chat Agent with AWS Bedrock and Terraform: Summary, Knowledge Base, and Guardrails
Працэзломы, якія не ствараюць шуму
У сістэме агента на базе ШЫ можа выйсці багато проблем, пры чым найгоршыя працэзломы не ствараюць жадных памылак і не спрыяюць выдачы апавяшэнняў. Якасць проста падупае. Памяць сесіі заполняецца шумамі заместо справядлівых сігналоў, правілы безпекі знаходзяцца парадульна да сістэмы кантролю версій, а агент выкарыстоўвае інструменты для обработкі контэнту, які могла бы безпосерэдна запростаць база знанняў.
У Amazon Bedrock існуе тры рэшэнні для эйтых проблем: перадзначэнне MEMORY_SUMMARIZATION, якое дазволяе зберагаць значымыя сігналы корыстувальніка між сесіямі, версія Bedrock Guardrail, створаная за дапамою Terraform, і неабяжнае рашэнне у вобразе базы знанняў, якая падтрымваная S3.
Тэхніка стварэння запытоў не можа вучыцца на сабе весь тыягот. Рэальныя сістэмы патрабуюць кантролю ў трох аспектах:
- Якасць памяці сесіі. Апісанні павінны зберагаць правыя сігналы корыстувальніка.
- Кантроль безпекі. Правілы безпекі павінны быць чыста адзначаныя і маты версіі.
Без іх сістэма часта выглядае стабільной у дэмантах, але пасля таго, як прыходзіць рэальны, разнараджаны трафік, яе функцыянаванне паслабляецца.
Як працюе памяц сесіі
Сумарызацыя памяці дазволяе зберагчы історыю карыстальніка між сесіямі, таму старыя паведамленні не трэба зноў выкарыстоўваць і перапрацоўваць у рэальны час. У Classic Agents Bedrock аддае базовую форму за дапамогою enabled_memory_types = ["SESSION_SUMMARY"] у aws_bedrockagent_agent, а GetAgentMemory у Agent Runtime чытае тое, што збераглена.
Калі памяць увімкнута, праца асынхронна і выканаліваецца пасля закрыцьця сесіі. Bedrock стварае падсумак завершанай беседы, зберагае яго і вводзіць у пазнейшыя сесіі, якія выкарыстоўваюць той самы memoryId, пры чым гэта не спамошчае адпаведзь карыстальніка.
Bedrock прыносіць стандартны запрос, які візначае, як будзе выканана стварэнне падсумку:
{
"messages": [
{
"role" : "user",
"content" : "We will be given a conversation between a user and an AI
assistant.
When available, in order to have more context, we will also be given
summaries we previously generated.
Our goal is to summarize the input conversation.
When we generate summaries we ALWAYS follow the below guidelines:
<guidelines>
- Each summary MUST be formatted in XML format.
- Each summary must contain at least the following topics: 'user
goals', 'assistant actions'.
- Each summary, whenever applicable, MUST cover every topic and be
placed between <topic name='$TOPIC_NAME'></topic>.
- We ALWAYS output all applicable topics within <summary></summary>
- If nothing about a topic is mentioned, DO NOT produce a summary
for that topic.
- We summarize in <topic name='user goals'></topic> ONLY what is
related to the user, e.g., user goals.
- We summarize in <topic name='assistant actions'></topic> ONLY what
is related to the assistant, e.g., assistant actions.
- NEVER start with phrases like 'Here's the summary...', provide
directly the summary in the format described below.
</guidelines>The XML format of each summary is as follows:
<summary>
<topic name='$TOPIC_NAME'>
...
</topic>
...
</summary>
Here is the list of summaries we previously generated.
<previous_summaries>
$past_conversation_summary$
</previous_summaries>
And here is the current conversation session between a user and an AI
assistant:
<conversation>
$conversation$
</conversation>
Please summarize the input conversation following the above guidelines
plus the below additional guidelines:
<additional_guidelines>
- ALWAYS strictly follow the above XML schema and ALWAYS generate
well-formatted XML.
- NEVER forget any detail from the input conversation.
- We also ALWAYS follow the below special guidelines for some of the topics.
<special_guidelines>
<user_goals>
- We ALWAYS report in <topic name='user goals'></topic> all details the user
provided in formulating their request.
</user_goals>
<assistant_actions>
- We ALWAYS report in <topic name='assistant actions'></topic> all details
about actions taken by the assistant, e.g., parameters used to invoke actions.
</assistant_actions>
</special_guidelines>
</additional_guidelines>"
}
]
}
Інструкцыі здзейчываюцца пераважна ў раздзеле <guidelines/>, які прыказвае агенту вярнуць свой рэзультат унутрь тага <summary/>. Разлік ведаецца па тэматыкі: усе, што стосуецца цялей карыстальніка, пакладаецца пад тэму пад назвай user goals, а сабе дзеянні агента — пад assistant actions; кожная тэма выкорыстоўвае обгортку <topic name='$TOPIC_NAME'></topic>. Апэктыўны выхід выглядае так:
<summary>
<topic name='$TOPIC_NAME'>
...
</topic>
...
</summary>
Bedrock запоўняе <previous_summaries/> попераднімі статыстыкамі за дапамою зменнай $past_conversation_summary$, а жывая розмова прадаўаецца ўнутрь <conversation>$conversationlt;/conversation>. Ішчы два раздэлы, <additional_guidelines/> і <special_guidelines/>, дазваляюць дадаць дэталі да стратэгіі стварэння статыстык.
Цыкл жыцця выглядае так:
- Функцыя памяці актывацыйцца ў налаштаваннях агента за дапамою
memory_configurationіenabled_memory_types = ["SESSION_SUMMARY"]. - Званае аб’екта вызывае агента з стабільным
memoryIdдля кожнага корыстувальця. - Сесія завершаецца або за дапамою
endSession = true, або праз таймаут. - Bedrock стварае статыстыку на фоне.
memoryId Bedrock размешчае кантэкст памяці ў месцах для аранжавання, такіх як $memory_content$.Гэта прыводзіць да двух наследкав. Апৱядкі не падаюць мгновэна і можу з’явіцца часаў пасля заканчэння сесіі. А калі memoryId зменяецца з запіта на запыт, працэзаступнасць знікае.
Адзвега: Нестабільныя значэння
memoryId, такія як ідэнтыфікаторы з’язкаў, да якіх належаць ідэнтыфікаторы выкарыстоўнача, нарабляюць перыв у працэзаступнасці памяці. Ожывайце ідэнтыфікатор, які застаецца стабільным для кожнага выкарыстоўнача або ентытэта размовы.
Робленае апৱядкаванне корыстным
Стандартнае апৱядкаванне — гэта загальны падсумак. Гэта добра для шырокага асістанта, але часта занадто многа інфармацыі для спецыялізаванага. Для малога новасны асістанта хорашае апৱядкаванне мусi включаць:
- паўтараючыяся тэмы, такія як новасці пра AI, клімат або геапалітыку;
Без такой структуры запам’ятовваецца больш, а рэлевантнасць зніжаецца.
Ёё актывацыя пачынаецца з рэсурса агента ў Terraform:
resource "aws_bedrockagent_agent" "agent" {
# ... existing code above ...
memory_configuration {
enabled_memory_types = ["SESSION_SUMMARY"]
storage_days = 30
session_summary_configuration {
max_recent_sessions = 5
}
}
# ... existing code below ...
}
У агентах Bedrock тут прымаецца толькі тып SESSION_SUMMARY. AgentCore дагае больш: ён выкарыстоўвае падсумкі, прыяжанні корыстувальца, семантычныя факты і спецыяльныя стратэгіі памяці. Параметр storage_days задае, як дзёўга будуць зберагвацца падсумкі, а max_recent_sessions кантролюе, сколькі няўжоўных сесый будуць падсумаваны.
Кожны вызов павінен мець параметр memoryId, тут user_id, каб размовы былі прыўязаны да адной і той жа ентытэ:
# Invoke with stable memoryId and explicit session end
resp = bedrock_agent_runtime.invoke_agent(
agentId=agent_id,
agentAliasId=alias_id,
sessionId=conversation_id,
memoryId=user_id, # stable per user
inputText=message_text,
endSession=is_last_turn
)
Для адаптавання выкарыстоўваецца той самы memoryId:
# Retrieve summaries later (classic Agents API)
memory = bedrock_agent_runtime.get_agent_memory(
agentId=agent_id,
agentAliasId=alias_id,
memoryId=user_id,
memoryType="SESSION_SUMMARY"
)
Замена запросу на стварэнне падзытака
Калі ўвён памяць, Bedrock дазваляе запросу заменіць етап MEMORY_SUMMARIZATION: prompt_type = "MEMORY_SUMMARIZATION" на prompt_creation_mode = "OVERRIDDEN". Класычныя агенты выкарыстоўваюць два спецыяльных месца для падставлення: $past_conversation_summary$ для зберажаных падзытакоў, асоўваных з той самым ідэнтыфікатаром памяці, і $conversation$ для тэксту тэкушчай сесіі. У шаблонах оркестрацыі кантэкст памяці выражаецца праз $memory_guideline$ для стратэгіі, $memory_content$ для зберагчання і $memory_action_guideline$ для запросаў сістэмы.
Спецыяльная версія стандартнага запросу чытальна паказвае, што агент павінен зафіксаваць і шта ігнараваць, такім чынам застаюцься толькі корысныя дэталі:
prompt_override_configuration {
prompt_configurations = [{
prompt_type = "MEMORY_SUMMARIZATION"
prompt_state = "ENABLED"
prompt_creation_mode = "OVERRIDDEN"
parser_mode = "DEFAULT"
base_prompt_template = <<-JSON
{
"system": "
We are summarizing a news research conversation for future sessions.
Capture:
- recurring topics,
- region focus,
- entities and stories the user tracks,
- explicit dislikes.
Ignore:
- greetings and small talk,
- implementation questions about the assistant itself.
Past summaries:
<previous_summaries>
$past_conversation_summary$
</previous_summaries>
Current session:
<conversation>
$conversation$
</conversation>
Return concise bullet points focused on user signal.",
"messages": [
{
"role": "user",
"content": [{ "text": "Generate a focused memory summary for personalization." }]
}
]
}
JSON
inference_configuration = [{
temperature = 0.2
top_k = 64
top_p = 0.9
max_length = 512
stop_sequences = []
}]
# ... existing code below ...
}
]
}
Зменіце стадыю, калі загальныя падсумкі не павышаюць якасць пазнейшых адказоў, калі падсумкам трэба высокы спявазанне сігналу да шуму, або калі бюджэт токенав памяці должны застацца строгімі і прыгляднымі. Якшчуна, калі асістэнт ёсць загальным і не выкарыстоўвае персаналізацыю, стандартны варыянт падходзіць.
Тыповыя памылкі включаюць:
- нестабільныя значэння
memoryId, напрыклад, калі ідэнтыфікаторы з’яўлення выступаюць у ролі ідэнтыфікатораў корыстувальца; - сесіі, якія ніколі не заканчваюцца, таму падсумак так і не ствараецца;
- дзялковыя запіты на падсумак, якія перзначаюць тое, што практычна ўжо ёсць цэлы транскрыпт;
- спалучэнне целей падсумака з целямі фарматавання, прызначанымі для пасляобработкі.
Рэгламенты: правіла, якія запіты не можаць адбавіць
Іншыя корыстувальнікі іноды бываюць грубыяя, неправямы спосабом выкарыстоўваюць асістэнта або прасябяюць пра внутршні дакументы, секрэты і персональныя даны іншых людзей. Сістэма захоўнічых мераў карыстуецца для рашэння такіх сітуацыяў. Прынцып просты: підказкі керуюць паведаннем, а захоўнічыя меры адбавляюцься да выпалнення правілаў. Карыстаюцца підказкамі для прымецяў і фарматавання, а захоўнічымі мерамі — для абмежэнняў безпекі контэнту як у вхідных даных корыстувальніка, так і у выходных даных асістэнта.
Партнеры: Перад выкарыстоўванням функцыі BLOCK спробуйце захоўнічыя меры ў рэжыме DETECT. Аўдыт таго, што могла бы быць заблокавана, не паўлівае на тэставальнікаў.
Bedrock уключае калькі захоўнічых мераў, якія не трэба настаўляць додаткова, достатньва ўключыць іх у спіс:
- Фільтры контэнту контролююць ненавісць, образы, насілле, сексуальны контэнт, неналежнае паведанне і атакі на підказкі, пры чым врачоўваюць сілу вхідных і выходных даных або прымецяў. Яны падходзяць для стаўкі базовай безпекі для звычайнага трафіку корыстувальнікаў.
Большасць команд лепей усе рэалізуюць паэтапна: спачатку фільтры кантэнту і чутлівых дакументаў, пасля — фільтры тэм і слоў, а потым працэсы падтрымкі і логічных выводаў, калі правілы аднаходжэння інфармацыі будуць готавыя.
Парахоўкі ацэнкі
Сістэмы захавання пераконтроююць як у напрамку вводу, так і ў напрамку выходу:
- Ввод. Спачатку ацэнюецца запіт ад корыстніка, пры чым усе настроеныя правілы працуюць паралельна. Блок змушвае Bedrock вернуць ваш
blocked_input_messagingі прыпініць выводы. - Выход. Калі ввод працэсуе, мадэль дае адказ, і яго выход пераконтроюецца. Блок можа заменіць адказ на
blocked_outputs_messagingабо замаскуваць яго, калі настроеныя фільтры чутлівых дакументаў.
Парадокс мае значэнне для косту. Заблаканы вхідны даны коштаюць толькі за ацэнку захоўнага механізма, а не за інферэнцію мадэлі.
Кожны фільтр кантэнту мае два незалежных настройкі. Сілу (inputStrength і outputStrength) можна задаць як NONE, LOW, MEDIUM чы HIGH; гэта кантролюе, насколькі агрэсыўна будуць выявляліся нарышчанні. Дзеянне (inputAction і outputAction) можа быць BLOCK — тады кантэнт блакуецца і заменяецца заблаканым тэкстам, альбо NONE — тады нічога не рабіцца, але выявленні фіксуюцца ў адпаведных рэспансах, што фактычна ўскладнюе толькі выявленне нарышчання.
Разумная стандартная стратэгія:
- Для катэгорыяў з высокім рызыкам, такіх як ненавіснае сяброўства, насілля і неналежнае паведанне, як для вхідных, так і для выходных дадзеных, пачніце з
MEDIUM; - Пад час тэставання або прыпоймовага етапу пачніце з
outputAction = "NONE", ўпэўнівшыся, што можна будзе пісаць ложныя позытыўныя рэзультаты; - Перэйдзіце на
BLOCKтолькі пасля таго, як рэзультаты тэставання і аналізу будуць прыемнымі; - Катэгорыяў з нізкім рызыкам залейце на рэжым
LOWабоMEDIUM, і не ставіце все на рэжымHIGHз самага пачатку.
Фільтры кантэнту таксама бяруць два рывня захоплення. CLASSIC — гэта базовы фільтрацыйны рэжым, тады як STANDARD забезпечвае сільнейшую захопленасць завдака аналізу коду і падтрымкі катэгорыяў атак. Асістэнт, які працуе з запітамі, фрагментамі коду чы рознымі тэкстамі і кодам у стыле распрацоўшчыка, зазвычай будзе безпечней у рэжыме Standard.
Версіяванне
Змены ў настройках захоўнай рампы павінны быць чыткімі і незменнымі, а кожна змена правіл павінна стаць новай версіяй. aws_bedrock_guardrail_version падтрымляе гэта: ствараецца версія, якая прыўязуецца да aws_bedrock_guardrail праз guardrail_configuration.
resource "aws_bedrock_guardrail" "guardrail" {
name = "${var.environment}-news-guardrail"
description = "Safety policies for news assistant"
blocked_input_messaging = "Your request violates our usage policy."
blocked_outputs_messaging = "This response was blocked by our safety policy."
content_policy_config {
filters_config {
type = "HATE"
input_strength = "MEDIUM"
output_strength = "MEDIUM"
}
filters_config {
type = "VIOLENCE"
input_strength = "MEDIUM"
output_strength = "MEDIUM"
}
filters_config {
type = "MISCONDUCT"
input_strength = "MEDIUM"
output_strength = "MEDIUM"
}
}
}
resource "aws_bedrock_guardrail_version" "guardrail_version" {
guardrail_arn = aws_bedrock_guardrail.guardrail.guardrail_arn
description = "release-${substr(sha256(var.guardrail_policy_fingerprint), 0, 12)}"
skip_destroy = true
}
resource "aws_bedrockagent_agent" "news_agent" {
# ... instruction, model, prompt overrides ...
guardrail_configuration {
guardrail_identifier = aws_bedrock_guardrail.guardrail.guardrail_id
guardrail_version = aws_bedrock_guardrail_version.guardrail_version.version
}
# ... existing code below ...
}
Гэты роздыл дозволяе здыйсніты чысце скасування змін. Поперэджэння залішаюцца без змін, а версія з охороннімі заходамі актывуецца лішэ тоды, колі потрыбна налаштування політыкі.
База знань для унутранага кантэнту
Прыпустымо, што агент мае відповідаты на запітання на основі корпоратывніх правіл чы знань, накопічэніх з часом, унікаючы непотрыбніх вікліків інструментаў. Bedrock вікорыстовуе прыеднану базу знань для генераціі адказаў на основі отрыманіх дакументаў; яна актывована за замовчуванням пасля налаштувань. Гэта дозволяе агентам безпечно підключатыся до прыватніх корпоратывніх даных, шчоб мадэлі моглі надаваты більш рэлевантні, точні і індывідуалізовані адказы за допомогою тэхналогіі Retrieval Augmented Generation (RAG).
Гэты підхід підходыць, колі джэрэлом інформацыі ёсць внутрышні чы складэні документы, колі не потрыбна міттэва актуальнісць, або колі необхідні достовірні адказы з можлівісцю вказування джэрэл.
Прытамлена: Для рэальнага часу, інформацыі з зовнішняго індэксу лепей падходзяць інструменты API.
Bedrock Knowledge Base працуе як кераваныя праграмныя раштры для RAG на вашай сабе інфармацыі. У замяне самастаўлення інфраструктуры для пошуку вы дазволяеце Bedrock прыймаць даны з канектара, аналізаваць і раздзеляць дакументы на часткі, ствараць эмбеддынгі, зберагаць вектары ў падтрымванай базе даных і запрашваць неабходныя часткі, калі прыходзіць запіт. У перыяд KNOWLEDGE_BASE_RESPONSE_GENERATION гэтыя часткі служаю для стварэння адпаведных адказоў.
Участвуюць два працэсы. Прыем дадзейна выконваецца афалайн або пад час сінхронізацыі: дакументы аналізуюцца, дзельняцца на часткі па стратэгіі дзельнення, перакладаюцца у векторы за дапамою модэлі embedding і запісваюцца ў індэкс вектораў разам з карточкамі метаданых. Адзыскваванне пад час выканання выконваецца за кожны запіт: запыт перакладаецца у вектор, хранальнік вектораў вярта семантычна значымыя часткі, Bedrock дадае іх у кантэкст модэлі, а на стадыі генеравання вырабляецца рэзультат, або ж проста вяртаюцца рэзультаты адзысквавання ў рэжыме толькі адзысквавання.
Дзельнення мае практычны значэнь, таму што нізкая якосць адзысквавання часта ёсць проблемай прыему дадзейна або дзельнення, а не проблемай запыту.
Нічога не «вставляецца як радок», як у кэшы SQL. Вы дадаеце або апдэйтуеце файлы, або джэрэла, падтрымваныя канектарамі, а потым запускаеце сінхронізацыю.
Апавяжанне: Сінхронізацыя не адбываецца автаматычна. Пасля дадзення дакументаў у S3 яе трэба выклікваць явна, перш чым агент зможа іх запрацаваць.
Контроль пад час выканання
numberOfResultsзадае, сколькі элементаў даходзіць назад (стандартна колькасць — да 5, дыяпазон — ад 1 да 100).overrideSearchTypeвыбіраеSEMANTICдля пошуку толькі на адной основе вектараў абоHYBRIDдля пошуку як на адной, так і на основе сырога тэксту; гэта падтрымвана толькі на сумесных хранілішчах і індэксах. Калі не задаць, Bedrock сам выберэ.- Метаданы
filterі логічныя групы (andAll,orAll) дазволяюць адбаваць точнасць запрашання. - Неабяжны перыяркаванне пакрашчае фінальную аранжавку элементаў.
За дапамогою іерархічнага разбівання на часткі колькасць рэзультатаў можа быць меншай, чым запрашана, адтолькі як дзецявыя часткі могу быць замененыя ўзрослымі часткамі пад час адпаведзі.
Чанкаванне
Чанкаванне сільна ўплывае на якасць адзыскання інфармацыі. Bedrock праставляе стандартнае чанкаванне па межах рэчэнак, якое складаеся з прыблізна 300 токенав, чанкаванне фіксаванага размеру з явным размерам токенав і ступенем перакрыцця, іерархічныя чанкі-бацькі і-дзецкія для большай точнасці і шырэй кантэксту, семантычнае чанкаванне з межамі, заданнымі модэлем, а таксама варыянт без чанкавання, калі кожны дакумент спрэтліваецца як адна чанка, што большасцю падходзіць для ўжо раздзеленага на частыні кантэнту.
Разумны падход: пачніце з стандартнага або фіксаванага чанкавання, адколі ён просты. Перэйдзіце на іерархічнае чанкаванне, калі для адпаведных адказоў патрэбны большы кантэкст, і на семантычнае, калі пасля налаштавання параметраў точнасць не падыходзіць. Пораўняйце рэзультаты з наборам дадзеных для адзыскання як да, так і пасля кожных змян.
Хранілішчы вектараў
Базы знань працуюць з кількома векторнімі серверамі, такімі як OpenSearch Serverless або керованій клустэр, суместны з стандартом Aurora PostgreSQL, Pinecone, Redis Enterprise Cloud, MongoDB Atlas і Neptune Analytics — залежно ад підтрымкі, якая доступна відповідного постачальніка на час розгляду. Вібір вплівае на тыя, чы існуе гібрыдній пошук, які можліві фільтры метаданіх і наскладнісць іх рэалізаціі. OpenSearch Serverless зазвічай ёсць найшвідшым способом початку працы. Прыклад налаштування Terraform наведэно ніжчэ:
resource "aws_bedrockagent_knowledge_base" "news_kb" {
name = "${var.environment}-news-kb"
role_arn = aws_iam_role.bedrock_execution_role.arn
knowledge_base_configuration {
type = "VECTOR"
vector_knowledge_base_configuration {
embedding_model_arn = "arn:aws:bedrock:${data.aws_region.current.name}::foundation-model/amazon.titan-embed-text-v2:0"
}
}
storage_configuration {
type = "OPENSEARCH_SERVERLESS"
opensearch_serverless_configuration {
collection_arn = aws_opensearchserverless_collection.kb.arn
vector_index_name = "news-kb-index"
field_mapping {
vector_field = "vector"
text_field = "text"
metadata_field = "metadata"
}
}
}
# ... existing code below ...
}
resource "aws_bedrockagent_data_source" "news_docs" {
knowledge_base_id = aws_bedrockagent_knowledge_base.news_kb.id
name = "${var.environment}-news-docs"
data_source_configuration {
type = "S3"
s3_configuration {
bucket_arn = aws_s3_bucket.news_docs.arn
}
}
# ... existing code below ...
}
resource "aws_bedrockagent_agent_knowledge_base_association" "news_agent_kb" {
agent_id = aws_bedrockagent_agent.agent[0].agent_id
agent_version = "DRAFT"
knowledge_base_id = aws_bedrockagent_knowledge_base.news_kb.id
description = "Internal news assistant knowledge base for curated context and editorial guidelines"
knowledge_base_state = "ENABLED"
# ... existing code below ...
}
Маршрутызацыя между базай знанняў і інструментамі
Адключэнне базы знанняў дае агенту другі шлях для выкарыстоўвання інформацыі. Ёжчы абмовкі, правілы маршрутызацыі для базы знанняў проты інструмента API трэба паклаць у запрос на оркестрацыю, заставіць контракт POST_PROCESSING аднаковым незалежна ад таго, які джэрэла даў адказ, і пазначыць, калі агенту трэба задаваць уточнюючыя запыткі, калі доверлівасць выкарыстоўвання інформацыі нізкая.
Практычная палітыка для такой наладкі: выкарыстоўваць базу знанняў для внутрашняга, статычнага кантэксту, такога як дакументы правілаў, стандарты рэдагавання і історычныя зьязнікі; выкарыстоўваць групу дзеянняў для жывых, зовнішніх дадзенняі; і не вызываць аба істочнікі заодно, як толькі запытка сапраўды не вымагае пераканальнай перাপравы.
Рэгулярныя правілы таксама прымаюцца пад час аперацый выкарыстоўвання і стварэння контэнту, што мае значэнне, таму ўжо сама процедура выкарыстоўвання базы дадзенаў не пазбавляе рызіка для безпекі. Часта рэкамендуецца спачатку пераканацца ў правільнасці шляху да базы дадзенаў за дапамогою рэгулярных правіл у рэжыме адказвання, пасля чаго скорэктаваць ложныя позытыўныя і негатыўныя рэзультаты на адпаведных дастатках, а потым перэйсці да блакування чы скарыткавання контэнту ў рэжыме працы.
Увядзенне контэнту
- Пачатковы корпус: для адноразовага завантажэння правіл, часта задаваемых запытаў і керавання стылем, трэба завантажыць файлы ў кантэйнер S3, які падключэны да джэрэла дадзенаў, і запусціць сінхронізацыю.
- Постаўлянне актуальных дадзенаў: калі тэкст продукту чы юрыдычных дакументаў змінюецца за пазначаным графікам, ночны працэс можа завантажыць новыя файлы ў S3 і запусціць
StartIngestionJobдля джэрэла дадзенаў, але можна таксама выкарыстоўваць автаматычную сінхронізацыю, калі ёна увімкнутая.
kb/topics/eu-ai-act-overview.md, тады межы частакоў паспаўна сустрэчаюцца з тэматыкамі, а цытаты ўсё ясней, чым у адном вялікім PDF.StartIngestionJob, ў рэзультаце чаго база знанняяў прыймае новыя об’екты.Проблемы
- Адносленне да базы знанняяў як да рэальнага стрыму. Яна ёсць настолькі свежая, насколькі гэта дазволяе расклад сінхронізацыі.
- Частковая сінхронізацыя занадта велікай або занадто маленькай колькасці частакоў, што пагражае точнасцю.
- Некачэвыя метаданы, якія робяць фільтры бесполезнымі.
- Адзінавэнне задач выкарыстоўвання і фарматавання дакументаў у аднам жэсце запіту.
- Падзея, што перапісваў запіты можа вываліць на допамогу слабкі індэкс выкарыстоўвання дакументаў.
Што гэта дае ў суме
Апісанні працуюць наякша, калі яны адпаведна налаштованы для конкрэтнай галіны, а не застаюцца загальнамі падсумкамі. Запіты і правілы функцыонуюць на разных роўнях, таму іх трэба версіяваць окрэма. База знанняяў — гэта адна з можлівасцей выкарыстоўвання дакументаў і не заменяе API, якія працуюць у рэальны час, таму запіты павінны чытна зазначаць, калі інструмент забезпечвае актуальную інфармацыю, а калі база знанняяў — структураваны кантэкст.
Разам этыя элементы ствараюць внутрэшнія механізмы агента: запрос MEMORY_SUMMARIZATION, які складае дзяўныя супылкі ў можна выкарыстовацьы падсумкі, сістэма Bedrock Guardrail, якая блакуе катэгорыяў шкодзіцельнага контэнту, а таксама база знаёмых на джэрэле дадзенаў S3 для генераціі з падтрымкай выкарыстоўвання інформацыі з базы.