0Pricing
AI Agents · Lekcja

Pamięć semantyczna (zwektoryzowane fakty)

Niezależne fakty poznane przez agenta o użytkowniku lub świecie, przechowywane w indeksie wektorowym.

Pamięć semantyczna (zwektoryzowane fakty) to bezpłatna lekcja AI Agents na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej AI Agents, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs AI Agents zawiera 4 lekcji w sumie.

Części tej lekcji nie zostały jeszcze przetłumaczone i są wyświetlane po angielsku.

Czym jest pamięć semantyczna

Pamięć semantyczna przechowuje niezależne fakty znane agentowi — dotyczące użytkownika, świata i firmy. W przeciwieństwie do pamięci epizodycznej nie ma znacznika czasu powiązanego z konkretnym zdarzeniem.

Przykłady:

  • „Imię użytkownika to Alice.”
  • „Alice preferuje stopnie Celsjusza.”
  • „Obecny plan cenowy to Pro za 20 USD miesięcznie.”

Format przechowywania

Magazyn wektorowy + ustrukturyzowane metadane:

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()
);

Wyodrębnianie faktów z rozmów

Po każdej sesji należy uruchomić ekstraktor 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']))

Wyszukiwanie w czasie wnioskowania

Dla każdego nowego zapytania należy wyszukać istotne fakty i wstrzyknąć je do promptu systemowego:

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)

Aktualizowanie faktów

Co zrobić, gdy fakt się zmieni? „Alice preferuje stopnie Celsjusza” -> „Alice obecnie preferuje stopnie Fahrenheita”. Istnieją dwie strategie:

  1. Oznaczyć stary fakt jako nieaktualny (dodać updated_at, usunąć logicznie)
  2. Albo: przechowywać sprzeczności i rozstrzygać je podczas wyszukiwania

Uzgadnianie faktów

Podczas wyodrębniania należy sprawdzać sprzeczności z istniejącymi faktami:

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
''', ...)

Wygasanie faktów

Niektóre fakty stają się nieaktualne („bieżący projekt to X”). Należy dodać TTL albo z czasem zmniejszać poziom wiarygodności:

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

Fakty wrażliwe pod względem prywatności

Przed przechowywaniem należy zaszyfrować dane osobowe. Niektóre fakty (dotyczące zdrowia i finansów) wymagają dodatkowej ochrony — należy przechowywać je w osobnej tabeli z bardziej restrykcyjną kontrolą dostępu.

Fakty edytowalne przez użytkownika

Należy pokazywać użytkownikom zapisane fakty i pozwalać im je edytować lub usuwać. Buduje to zaufanie i ogranicza niepokojące pomyłki pamięci.

Pamięć jako narzędzie

Należy udostępnić operacje pamięci jako narzędzia, które sam agent może wywoływać:

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 i MemGPT

Framework Letta (wcześniej MemGPT) implementuje pamięć agenta na dużą skalę, z oddzielną pamięcią „core” (zawsze obecną w kontekście) i pamięcią „archival” (przeszukiwaną wektorowo).

Pamięć semantyczna a epizodyczna

Czym pamięć semantyczna różni się od epizodycznej?

Podsumowanie

Należy przechowywać w magazynie wektorowym fakty dotyczące użytkownika, przy każdej turze wyszukiwać odpowiednie K faktów i wstrzykiwać je do promptu systemowego. Należy uzgadniać sprzeczności oraz z czasem obniżać wiarygodność faktów lub je wygaszać.

Często zadawane pytania

Czy lekcja „Pamięć semantyczna (zwektoryzowane fakty)” jest bezpłatna?

Tak — pełny tekst „Pamięć semantyczna (zwektoryzowane fakty)” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu AI Agents, przejdź na CoddyKit PRO. Kurs AI Agents zawiera 4 lekcji w sumie.

Co nauczysz się w „Pamięć semantyczna (zwektoryzowane fakty)”?

Niezależne fakty poznane przez agenta o użytkowniku lub świecie, przechowywane w indeksie wektorowym. Ćwiczysz AI Agents z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć AI Agents?

Nie wymagamy żadnego doświadczenia. AI Agents w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.

Ile czasu zajmuje lekcja „Pamięć semantyczna (zwektoryzowane fakty)”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji AI Agents?

Tak. Każda lekcja AI Agents zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Pamięć epizodyczna (historia sesji)
  2. Pamięć semantyczna (zwektoryzowane fakty)
  3. Pamięć proceduralna (biblioteka umiejętności)
  4. Wygasanie pamięci i garbage collection
← Powrót do AI Agents