Головна / Статті

Розуміння пам’яті ШІ: пояснення контексту, ембеддингів, RAG та ваг моделей

У цій статті детально пояснюється, як системи ШІ насправді зберігають інформацію, розглядаючи такі аспекти, як вікна контексту, ембеддинги, векторні бази даних, RAG та параметри моделей.

14 хв читання3212 слів

Зображення спілкування з ШІ сьогодні:

"Я працюю над проектом машинного навчання."

Потім, наступного дня, ви пишете знову:

"Що мені варто покращити у своєму проекті?"

Чи припускаєте ви, що ШІ згадає те, що ви йому раніше сказали?

Іноді так і є.

Іноді — ні.

А іноді воно пам’ятає частину розмови, але зовсім забуває іншу.

Це піднімає цікаве запитання:

Що насправді дозволяє системі ШІ щось пам’ятати?

Справжня відповідь є більш складною, ніж просте твердження:

"У ШІ є пам’ять."

Сучасні системи ШІ спираються на кілька різних механізмів для зберігання інформації, таких як вікна контексту, стан розмови, зовнішня пам’ять, системи пошуку, бази даних та власні параметри моделі.

Розуміння цих механізмів допомагає з’ясувати, що робить сучасні ШІ здатними, та де насправді лежать їхні обмеження.

1. Перше здивування: LLM не пам’ятає все автоматично

Розмова з мовною моделлю може створити враження, ніби ви спілкуєтесь з кимось, хто постійно пам’ятає про вас.

Наприклад:

You:
My project is about crop disease detection.
AI:
That's interesting. You can use computer vision...

Пізніше:

You:
What model should I use?
AI:
For crop disease images, a vision model could be appropriate.

Здається, що ШІ фіксувало все, що ви сказали.

Але що насправді відбувається за кулісами?

Пояснення залежить від того, звідки насправді походить ця інформація.

Це може бути:

  • досі знаходиться в контексті активної розмови
  • зберігається у спеціалізованій системі пам’яті
  • отримується з зовнішнього джерела
  • опосередковано вбудовується у навчені параметри моделі
  • знову вводиться користувачем без вашого усвідомлення

Це принципово різні механізми, хоча кінцевий результат може виглядати ідентично.

2. Пам’ять — це не те саме, що знання

Це розрізнення має велике значення.

Модель може знати відповідь на:

"Що таке CNN?"

Але це не гарантує, що вона згадає:

"Ви використали CNN у своєму проекті минулого тижня."

Розгляньмо це розділення так:

KNOWLEDGE
"What is a CNN?"
       ↓
Learned during training
MEMORY
"The user is working on a CNN project."
       ↓
Stored/retrieved from context or memory system

Знання відображають те, що модель засвоїла під час навчання.

Пам’ять відображає ту інформацію, яка наразі є для неї доступною щодо певного користувача, завдання, середовища чи поточної взаємодії.

3. Найпростіша форма пам’яті ШІ: контекст

Найбазовішим видом „пам’яті“ під час однієї розмови є контекст.

Розгляньмо таку переписку:

User:
My dataset has 10,000 images.
AI:
Okay.User:
Should I use CNN?AI:
For 10,000 images, CNN could be...

Як ШІ знає, на що посилаються „10 000 зображень“?

Тому що попередні повідомлення можна передати назад у модель разом із новим.

Концептуально це виглядає так:

Previous messages
       +
Current message
       ↓
     Context
       ↓
      LLM
       ↓
    Response

Модель працює з тим контекстом, який їй був наданий, під час формування своєї відповіді.

4. Але у контексту є обмеження

Саме тут справи ускладнюються.

Модель не може обробити нескінченний обсяг тексту в одному запиті.

Існує певний ліміт, який називається:

Вікно контексту

Уявіть собі це як загальну кількість інформації, яку модель може обробляти одночасно.

Концептуально:

┌───────────────────────────────┐
│        CONTEXT WINDOW         │
│                               │
│ Previous messages             │
│ Documents                     │
│ Instructions                  │
│ Current question              │
│ Tool results                  │
│                               │
└───────────────────────────────┘

Якщо розмова триває достатньо довго, ранні частини можуть бути пропущені, скорочені або зроблені менш доступними, залежно від того, як система справляється з переповненням.

Це виявляє першу значну обмеженість пам’яті ШІ:

Контекст справді корисний, але він не є нескінченним.

5. Чи вважається контекст справжньою пам’яттю?

Не зовсім.

Та сама логіка застосовується тут:

Context
=
Information currently available to the model

Натомість постійна пам’ять працює більш-менш так:

Memory
=
Information stored for possible future retrieval

Ця різниця має велике значення, як тільки ви почнете створювати штучних інтелектуальних агентів.

6. Короткострокова пам’ять

Штучний інтелектуальний агент може зберігати інформацію, яка є корисною для виконання поточного завдання.

Візьмемо цю інструкцію як приклад:

„Завантажте набір даних, очистіть його, проаналізуйте та створіть звіт.“

Під час виконання завдання агент може відстежувати свій прогрес ось так:

Task:
Create dataset report
Completed:
✓ Downloaded dataset
✓ Removed duplicates
✓ Calculated statisticsRemaining:
□ Create graphs
□ Write report

Це схоже на короткострокову робочу пам’ять у людей. Агент не намагається зберігати все назавжди — йому потрібні лише ті деталі, які є важливими для завершення поточного завдання.

7. Довгострокова пам’ять

Тепер розгляньмо ситуацію, коли агенту потрібно зберігати щось, що буде актуальним після завершення поточного завдання.

Наприклад:

"Я віддаю перевагу Python для аналізу даних."

Система пам’яті може зберігати такі деталі, щоб вони були доступні пізніше. Приблизно:

Conversation
     ↓
Important Information
     ↓
Memory Store
     ↓
Future Conversation
     ↓
Retrieve Relevant Memory
     ↓
AI

Ключове слово тут —:

Релевантний.

Добре спроєктована система пам’яті не повинна завантажувати все, що вона зберігає. Вона має показувати лише те, що корисне для поточного завдання.

8. Як система обирає правильну пам’ять?

Саме тут справи починають ставати справді цікавими.

Припустимо, сховище пам’яті містить записи на кшталт:

Memory 1:
User likes Python.
Memory 2:
User is working on computer vision.Memory 3:
User built a website.Memory 4:
User is learning distributed systems.Memory 5:
User prefers dark UI designs.

Тоді користувач запитує:

"Яку модель мені використовувати для свого проекту з зображеннями?"

Завантажувати всю збережену пам’ять було б марнотратно та зайво. Система повинна визначити, які з них насправді підходять.

Саме такі проблеми і призначені для вирішення ембеддинги та векторний пошук.

9. Що саме таке ембеддинг?

Ембеддинг перетворює фрагмент інформації на числовий вектор.

Концептуально:

"My project uses image classification"
                ↓
          Embedding Model
                ↓
[0.12, -0.73, 0.44, ...]

Окремий фрагмент тексту може пройти через ту саму процедуру:

"Which model should I use for images?"
                ↓
          Embedding Model
                ↓
[0.15, -0.69, 0.41, ...]

Якщо отримані вектори виявляються достатньо близькими за допомогою будь-якого методу визначення схожості, система може розглядати їх як пов’язані поняття.

Це дозволяє знаходити інформацію на основі семантичної схожості, замість того щоб покладатися на точну збігання ключових слів.

10. Бази даних векторів

Коли у вас є велика кількість ембеддингів, їм потрібне місце для зберігання — зазвичай це база даних, створена спеціально для векторного пошуку.

Концептуально:

MEMORY
                   │
                   ↓
              Embeddings
                   │
                   ↓
            Vector Database
                   │
                   ↑
              User Query
                   │
                   ↓
              Query Embedding
                   │
                   ↓
           Similar Memories

Система пошуку може потім шукати записи, чиї ембеддинги знаходяться близько один від одного у цьому векторному просторі.

Цей механізм є основою для створення сучасних систем RAG та архітектур пам’яті.

11. RAG — це також своєрідна зовнішня пам’ять

Було б нерозумно вбудовувати кожен з цих документів безпосередньо до параметрів моделі, особливо оскільки їхній зміст постійно змінюється.

Натомість документи проходять етап підготовки:

Documents
    ↓
Chunking
    ↓
Embeddings
    ↓
Vector Database

І щоразу, коли надходить запит, система виконує крок пошуку перед тим, як генерувати відповідь:

Question
   ↓
Embedding
   ↓
Search
   ↓
Relevant Documents
   ↓
LLM
   ↓
Answer

Цю схему називають Retrieval-Augmented Generation, або RAG.

Замість того, щоб запам’ятовувати всю колекцію документів, модель отримує ту інформацію, яка є актуальною у момент її потреби.

12. Параметри моделі — це інший вид пам’яті

Існує ще один спосіб мислити про „пам’ять“ у системі ШІ:

Ваги моделі.

Під час навчання нейронної мережі вона постійно налаштовує мільйони або навіть мільярди числових параметрів.

Опосередковано кажучи:

Training Data
     ↓
Neural Network
     ↓
Parameter Updates
     ↓
Learned Weights

Ці ваги у кінцевому підсумку кодують закономірності, засвоєні під час навчання.

Проте це не те саме, що мати пошуковий архів окремих фактів.

Зазвичай ви не можете запитати модель щось на кшталт:

"Покажіть мені точне речення, яке ви дізналися про тему X."

Усе, що вона знає, розподілене між навченими параметрами, а не зберігається у вигляді доступного запису.

13. Три різні речі, які ми часто називаємо „пам’яттю“

На цьому етапі варто розрізнити три окремі концепції:

1. Знання моделі

Зберігаються опосередковано всередині параметрів моделі.

Training
 ↓
Weights
 ↓
Learned capabilities

2. Контекст

Будь-яка інформація, яка наразі надається моделі.

Conversation
 ↓
Context Window
 ↓
LLM

3. Зовнішня пам’ять

Інформація, яка зберігається повністю поза моделлю.

Database
Vector Store
Files
Documents
User Memory
     ↓
Retrieval
     ↓
LLM

Розділення цих трьох елементів допомагає зрозуміти багато аспектів поведінки ШІ, які інакше здаються заплутаними.

14. Чому ШІ може „забувати“?

Уявімо, що ви кажете системі ШІ:

„Моя улюблена мова програмування — Python.“

Після тривалої розмови вона більше ніколи не згадує про цю уподобання.

Що сталося?

Існує кілька можливих пояснень:

Information no longer in active context
            OR
Memory wasn't persisted
            OR
Memory wasn't retrieved
            OR
System chose not to use it
            OR
The model misunderstood the reference

Тож коли ШІ, здається, забуває, це не обов’язково означає, що він поводиться як людина, яка забуває.

Справжньою причиною може бути збій у:

зберіганні, отриманні інформації, наявності контексту чи поведінці моделі.

15. ШІ-агентам потрібна пам’ять ще більше

Згадайте попередню дискусію про ШІ-агентів.

Агент зазвичай виконує кроки наступним чином:

Plan
 ↓
Action
 ↓
Observation
 ↓
Action
 ↓
Observation

Без якоїсь форми стабільного стану завдання, які вимагають кількох кроків, стають дуже складними для керування.

Уявіть собі агента, який працює над проектом з програмування.

Йому потрібно вести облік таких речей, як:

Which files changed?
What tests failed?
What has been completed?
What remains?
What errors occurred?
What decisions were made?

Ось чому конфігурація пам’яті агента часто виглядає приблизно так:

AI AGENT
                     │
          ┌──────────┼──────────┐
          ↓          ↓          ↓
       Context     State     Long-Term
                    Memory      Memory
          │          │            │
          └──────────┼────────────┘
                     ↓
                  Actions

16. Пам’ять не обов’язково має залишатися неструктурованою

Не все, що варто запам’ятати, мусить ісувати у вигляді вільного тексту.

Агент може замість цього зберігати структуровані записи, щось на кшталт:

Project:
AirStore
Language:
PythonFramework:
FastAPIDatabase:
SQLiteCurrent Phase:
Storage NodeKnown Issue:
Heartbeat timeout

Дані, організовані таким чином, набагато легше знаходити та оновлювати пізніше, ніж перебирати великий блок необроблених розмов.

Саме тому реальні системи ШІ рідко покладаються лише на один механізм зберігання інформації. Натомість вони зазвичай поєднують кілька підходів одночасно:

  • бази даних
  • структуровані об’єкти стану
  • сховища векторів
  • історія необроблених розмов
  • створені узагальнення

17. Узагальнення як техніка зберігання інформації

Замість того, щоб вважати кожен рядок однаково важливим, система може стиснути цю переписку у узагальнення.

Long Conversation
       ↓
Summarization
       ↓
Compact Memory
       ↓
Future Context

Як приклад: замість того, щоб зберігати 20 окремих повідомлень про проект, система могла б просто зберігати щось на кшталт:

„Користувач працює над системою на базі Python та FastAPI для зберігання даних між від’єднаними вузлами офлайн, наразі зосереджуючись на тому, як вузли реєструються один з одним та копіюють дані.“

Це зменшує кількість інформації, яку потрібно передавати на кожному етапі.

Але стиснення має свої ризики:

Що станеться, якщо щось важливе загубиться по дорозі?

Через це вирішення питання про те, як відповідально стискувати пам’ять, саме по собі є складною інженерною проблемою.

18. У своїй суті пам’ять — це можливість отримання інформації

Одним із більш тонких аспектів тут є те, що пам’ять ШІ насправді не стосується:

Зберігати абсолютно все.

Йдеться про:

Зберігати те, що корисне, та отримувати потрібну інформацію у потрібний момент.

Простіший спосіб сформулювати це:

M* = argmax over m in M of S(m, q)

де:

  • M — це повний набір збережених записів
  • q — це поточне запитання
  • S(m, q) — це показник релевантності між записом та запитанням
  • M* — це запис (або записи), визнані найбільш релевантними

Простіше кажучи:

Millions of memories
       ↓
Current question
       ↓
Relevance calculation
       ↓
Top useful memories
       ↓
AI

19. Більше збережених записів — це не те саме, що бути розумнішим

Цей момент дуже важливий.

Припустимо, одна система ШІ зберігає:

10,000 irrelevant facts

тоді як інша зберігає лише:

3 relevant facts

Яка з них працює краще на практиці? Часто це друга.

Корисна пам’ять > Максимальна пам’ять

Метою не є максимізація обсягу збережених даних, а максимізація їхньої релевантності.

20. Запам’ятовування інформації викликає проблеми з конфіденційністю

Як тільки система стає здатною запам’ятовувати деталі про користувача, виникає нове питання:

Де саме знаходиться ця інформація?

Потенційно конфіденційні дані можуть опинитися розкиданими по:

Conversation history
Databases
Vector stores
Application logs
Files
Caches

Ця реальність супроводжується низкою інженерних вимог:

  • обмеження доступу
  • шифрування збережених даних
  • визначення термінів зберігання
  • створення механізмів видалення
  • підтримка журналів аудиту
  • мінімізація кількості даних, які збираються з самого початку
  • Без цих захисних заходів система, яка пам’ятає все про своїх користувачів, може стати справжньою проблемою з конфіденційністю.

    21. Використання пам’яті для персоналізації відповідей

    Саме пам’ять робить системи ШІ значно кориснішими.

    Припустимо, ШІ дізналося, що ви зазвичай віддаєте перевагу:

    Python
    Simple explanations
    Practical examples
    Technical diagrams
    

    Майбутні відповіді можна буде формувати з урахуванням цих уподобань.

    Це не означає, що сама основна модель стала розумнішою в цілому. Натомість:

    General AI
        +
    Relevant User Context
        ↓
    Personalized Interaction
    

    Саме ця відмінність є однією з основних причин, чому пам’ять стала такою важливою складовою проектування продуктів ШІ сьогодні.

    22. Що далі: ШІ, побудоване на кількох рівнях пам’яті

    Розвинений ШІ-агент з часом зможе використовувати комбінацію подібну до цієї:

    AI AGENT
                          │
            ┌─────────────┼─────────────┐
            ↓             ↓             ↓
       Working Memory  Long-Term     External
                       Memory        Knowledge
            ↓             ↓             ↓
        Current Task   Preferences   Documents
                       History       Databases
                       Projects      APIs
            └─────────────┼─────────────┘
                          ↓
                      Retrieval
                          ↓
                         LLM
                          ↓
                       Action
    

    Замість єдиної „коробки пам’яті“ це більше схоже на стос окремих шарів пам’яті, які працюють разом.

    23. Чому пам’ять ШІ не схожа на людську пам’ять

    Людська пам’ять є біологічною. Вона динамічна, асоціативна та формується під впливом сприйняття, емоцій, повторень та безлічі інших факторів, які взаємодіють способами, яких ми не до кінця розуміємо.

    Натомість пам’ять ШІ створюється за спеціальним проектуванням.

    Вона зазвичай ґрунтується на таких компонентах, як:

    Tokens
    Vectors
    Databases
    Indexes
    Parameters
    Summaries
    Retrieval algorithms
    

    Обидві форми пам’яті можуть давати зовні схожі результати, проте вони функціонують на зовсім різних принципах.

    Тож щоразу, коли хтось стверджує:

    "ШІ пам’ятає."

    варто зупинитися та запитати:

    Який механізм насправді надає цю інформацію?

    24. Об’єднання всього воєдино

    Сучасну систему ШІ можна уявити так:

    USER
                               │
                               ↓
                           QUESTION
                               │
                               ↓
                     ┌──────────────────┐
                     │   AI / LLM       │
                     └────────┬─────────┘
                              │
              ┌───────────────┼────────────────┐
              ↓               ↓                ↓
           Context         Memory           RAG/Search
              │               │                │
         Conversation     Vector DB        Documents
         Current Task     Database          Web/Data
              │               │                │
              └───────────────┼────────────────┘
                              ↓
                        Relevant Context
                              ↓
                             LLM
                              ↓
                           Response
    

    А коли до гри долучається агент, ця картина стає ще більш складною:

    Goal
     ↓
    Retrieve Memory
     ↓
    Plan
     ↓
    Choose Tool
     ↓
    Execute
     ↓
    Observe
     ↓
    Store Important Result
     ↓
    Plan Again
     ↓
    Finish
    

    Тут пам’ять перестає бути пасивним сховищем та стає активною частиною циклу прийняття рішень агентом.

    Заключні думки

    Кожного разу, коли хтось каже:

    „ШІ пам’ятає.“

    зазвичай не існує єдиної, „чарівної“ системи пам’яті, яка б за це відповідала.

    Натомість зазвичай працює кілька рівнів разом:

    Знання моделі + Контекст + Зовнішня пам’ять + Відтворення інформації

    Параметри моделі містять шаблони, навчені під час тренування. Вікно контексту надає моделі всю інформацію, яка є в її безпосередньому розпорядженні. Зовнішня пам’ять зберігає інформацію поза самою моделлю. Механізм пошуку вирішує, яка з цих збережених інформацій слід використати, коли вона дійсно потрібна.

    Це веде до цікавого висновку:

    Майбутнє пам’яті ШІ, ймовірно, не полягатиме у тому, щоб змусити моделі пам’ятати все.

    Швидше йдеться про те, щоб навчити їх зберігати те, що має значення, відкидати те, що ні, отримувати інформацію у правильний момент та обробляти її відповідально.

    ШІ, яка може зберігати необмежену кількість інформації, але погано її отримує, все одно буде складною у використанні. Та, що має ретельно спроектовану систему пам’яті, навіть меншу, може виявитися набагато кориснішою.

    Отже, справжнє питання не в тому:

    "Скільки може пам’ятати ШІ?"

    А в тому:

    "Чи може ШІ згадати правильну інформацію у правильний час?"