0Pricing
AI Agents · Урок

Семантическая память (векторизованные факты)

Храните отдельные факты, которые агент узнал о пользователе или мире, в векторном индексе.

«Семантическая память (векторизованные факты)» — бесплатный урок AI Agents на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения AI Agents, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс AI Agents содержит 4 уроков всего.

Части этого урока еще не переведены и отображаются на английском.

Что такое семантическая память

Семантическая память хранит отдельные факты, известные агенту, — о пользователе, мире или компании. В отличие от эпизодической памяти, здесь нет временной метки, связанной с конкретным событием.

Примеры:

  • «Пользователя зовут Алиса».
  • «Алиса предпочитает градусы Цельсия».
  • «Текущий тариф — Pro за 20 долларов в месяц».

Формат хранения

Векторное хранилище + структурированные метаданные:

CREATE TABLE semantic_facts (
    id UUID PRIMARY KEY,
    user_id TEXT NOT NULL,
    fact TEXT NOT NULL,
    embedding vector(1536),
    source TEXT,                    -- 'extracted' / 'user-stated' / 'system'
    confidence REAL DEFAULT 1.0,
    created_at TIMESTAMPTZ DEFAULT NOW()
);

Извлечение фактов из разговоров

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

extract_prompt = '''
From the conversation below, list any new facts about the user.
Return JSON: [{"fact": "...", "confidence": 0.0-1.0}]

Conversation:
{transcript}
'''
print(extract_prompt.strip())

Saving Extracted Facts

import uuid

for f in extracted:
    vec = embed(f['fact'])
    conn.execute('''
        INSERT INTO semantic_facts (id, user_id, fact, embedding, confidence, source)
        VALUES (%s, %s, %s, %s, %s, 'extracted')
    ''', (str(uuid.uuid4()), user_id, f['fact'], vec, f['confidence']))

Получение данных во время выполнения

Для каждого нового query извлекайте релевантные факты и добавляйте их в системный запрос:

def relevant_facts(user_id, query, k=5):
    qvec = embed(query)
    rows = conn.execute('''
        SELECT fact FROM semantic_facts
        WHERE user_id = %s
        ORDER BY embedding <=> %s LIMIT %s
    ''', (user_id, qvec, k))
    return [r[0] for r in rows]

facts = relevant_facts(user_id, user_question)
system = SYSTEM_PROMPT + '\n\nKnown facts:\n' + '\n'.join(facts)

Обновление фактов

Что делать, если факт изменился? «Алиса предпочитает градусы Цельсия» -> «Теперь Алиса предпочитает градусы Фаренгейта». Есть две стратегии:

  1. Пометить старый факт как устаревший (добавить дату обновления и выполнить мягкое удаление)
  2. Или хранить противоречия и устранять их при получении данных

Согласование фактов

При извлечении проверяйте наличие противоречий с существующими фактами:

def reconcile(user_id, new_fact):
    similar = relevant_facts(user_id, new_fact, k=3)
    response = llm.invoke(f'Is the new fact ({new_fact}) consistent with existing facts ({similar})? If contradicting, return the obsolete one.')
    if response.has_contradiction:
        mark_obsolete(response.obsolete_id)
    save_fact(new_fact)

Confidence-Weighted Retrieval

rows = conn.execute('''
    SELECT fact FROM semantic_facts
    WHERE user_id = %s AND confidence > 0.6
    ORDER BY embedding <=> %s LIMIT %s
''', ...)

Устаревание фактов

Некоторые факты устаревают («текущий проект — X»). Добавьте TTL или со временем снижайте степень достоверности:

UPDATE semantic_facts
SET confidence = confidence * 0.95
WHERE created_at < NOW() - INTERVAL '30 days';

Конфиденциальные факты

Шифруйте PII перед сохранением. Некоторые факты (о здоровье и финансах) требуют дополнительной защиты — храните их в отдельной таблице с более строгим контролем доступа.

Факты, редактируемые пользователем

Показывайте пользователям сохранённые о них факты и позволяйте редактировать или удалять их. Это укрепляет доверие и уменьшает неприятные ошибки памяти.

Память как инструмент

Предоставьте операции с памятью как инструменты, которые сам агент может вызывать:

tools = [
    {'name': 'remember_fact', 'description': 'Save a new fact about the user'},
    {'name': 'forget_fact', 'description': 'Remove a stored fact'},
    {'name': 'recall_facts', 'description': 'Search relevant facts for a query'}
]
import json
print(json.dumps(tools, indent=2))

Letta и MemGPT

Платформа Letta (ранее MemGPT) реализует память агента в большом масштабе, разделяя её на «основную» память (всегда находящуюся в контексте) и «архивную» память (с поиском по векторным представлениям).

Семантическая и эпизодическая память

Чем семантическая память отличается от эпизодической?

Итоги

Храните факты о пользователе в векторном хранилище, извлекайте релевантные K фактов на каждом ходу диалога и добавляйте их в системный запрос. Устраняйте противоречия, а со временем снижайте достоверность или удаляйте устаревшие факты.

Часто задаваемые вопросы

Урок «Семантическая память (векторизованные факты)» бесплатный?

Да — полный текст урока «Семантическая память (векторизованные факты)» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс AI Agents, подпишись на CoddyKit PRO. Курс AI Agents содержит 4 уроков всего.

Чему я научусь в уроке «Семантическая память (векторизованные факты)»?

Храните отдельные факты, которые агент узнал о пользователе или мире, в векторном индексе. Ты практикуешь AI Agents с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать AI Agents?

Предыдущий опыт не требуется. AI Agents на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.

Сколько времени занимает урок «Семантическая память (векторизованные факты)»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке AI Agents?

Да. Каждый урок AI Agents включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Эпизодическая память (история сеанса)
  2. Семантическая память (векторизованные факты)
  3. Процедурная память (библиотека навыков)
  4. Забывание памяти и сборка мусора
← Назад к AI Agents