Preskoči na vsebino

Agentic Search: Učenje AI, da si zapomni kot človek

· 6 minut branja
Osama Alghanmi
Soustanovitelj in tehnični vodja

Agentic Search: Učenje AI, da si zapomni kot človek

Vector search najde podoben tekst. Agentic search najde relevantni kontekst. Razlika je v razmišljanju.

Problem iskanja

Tradicionalno iskanje sprašuje: "Kateri dokumenti vsebujejo te besede?"

Ampak ljudje sprašujejo: "Kaj sem mislil, ko sem to rekel?"

Primer poizvedbe: "Kako sem obravnaval avtentikacijo uporabnikov?"

Vector search pristop:

  • Najde dokumente z "user" in "authentication"
  • Zamani: Seje o "auth", "login", "sign-in"
  • Zamani: Kontekst o zakaj ste izbrali JWT namesto sej
  • Zamani: Verigo napaka → popravek → uspeh

Pristop človeškega spomina:

  • "Spomnim se, da sem delal na tem prejšnji mesec"
  • "Bilo je za e-trgovinski projekt"
  • "Najprej sem poskusil OAuth, nato prešel na JWT"
  • "Težava je bila z osveževanjem žetonov"

Ljudje iščejo z razmišljanjem, ne podobnostjo.

Agentic search kombinira:

  1. Semantično razumevanje — Kaj pomeni poizvedba?
  2. Časovno navigacijo — Kdaj se je to zgodilo?
  3. Prepoznavanje vzorcev — Kakšna vrsta rešitve?
  4. Kavzalno razmišljanje — Kaj je vodilo do uspeha?
const response = await searchEngine.search({
  userId: 'user_123',
  query: "How did I handle user authentication?",
  strategy: 'hybrid',  // temporal + semantic + pattern
  depth: 3,
  limit: 10,
});

// Vrne:
response.insights.summary
// "Found 3 authentication implementations across 2 projects"

response.insights.patterns
// ["jwt-auth", "oauth-integration", "session-management"]

response.insights.suggestions
// ["Consider reusing the JWT pattern from Project A"]

response.results[0].reasoning
// "Session from March 2025 implemented JWT authentication 
//    with refresh tokens for the e-commerce project"

Štirje iskalni pristopi

1. Časovno iskanje

"Kaj sem delal prejšnji teden?"

const response = await searchEngine.search({
  userId: 'user_123',
  query: "Pokaži mi nedavno delo na avtentikaciji",
  strategy: 'temporal',
});

Kako deluje:

  1. Razčleni časovne označevalce ("nedavno", "prejšnji teden", "torek")
  2. uteži po svežini (eksponentni padec)
  3. Okrepi ujemanja iz zahtevanega časovnega obdobja
// Relevance scoring
const daysAgo = (Date.now() - session.createdAt) / (1000 * 60 * 60 * 24);
const recencyBoost = Math.max(0.1, 1 - daysAgo / 30);

2. Semantično iskanje

"Kako sem obravnaval uporabniške vloge?"

const response = await searchEngine.search({
  userId: 'user_123',
  query: "Najdi mojo implementacijo role-based access control",
  strategy: 'semantic',
});

Kako deluje:

  1. Izvleci semantične koncepte ("vloge", "dostop", "dovoljenja")
  2. Ujemi s preferencami in kontekstom projekta
  3. Navzkrižno preveri s kontekstom seje
const concepts = extractConcepts(query);
// { entities: ['Role', 'User'], patterns: ['guard'], actions: ['authorize'] }

// Match against sessions
const matches = sessions.filter(s => 
  s.entities.some(e => concepts.entities.includes(e)) ||
  s.patterns.some(p => concepts.patterns.includes(p))
);

3. Iskanje po vzorcih

"Pokaži mi vse list views, ki sem jih zgradil"

const response = await searchEngine.search({
  userId: 'user_123',
  query: "Najdi vse moje list views",
  strategy: 'pattern',
});

Kako deluje:

  1. Izvleci izraze vzorcev ("list", "table", "grid", "cards")
  2. Išči pattern affinity zapise
  3. Vrni seje, ki uporabljajo te vzorce
const patternTerms = ['list', 'table', 'grid', 'cards'];
const userPatterns = await memoryManager.getUserPatterns(userId);

// Find high-success patterns
const goodPatterns = userPatterns.filter(p => 
  p.successCount / p.usageCount > 0.8
);

4. Hibridno iskanje

"Kaj je dobro delovalo za forme?" (kombinira vse strategije)

const response = await searchEngine.search({
  userId: 'user_123',
  query: "Kaj je dobro delovalo za forme?",
  strategy: 'hybrid',
  depth: 3,
});

Kombinira časovne, semantične in vzorce rezultate z deduplikacijo.

Pogon za razmišljanje

Agentic search ne samo vrne ujemanj — razloži zakaj se ujemajo:

interface SearchResult {
  type: 'preference' | 'session' | 'project' | 'pattern';
  data: unknown;
  relevance: number;  // 0-1
  reasoning: string;  // Berljivo za človeka razlago
  source: string;     // Od kod prihaja
}

// Primer rezultata
{
  type: 'session',
  data: { /* session record */ },
  relevance: 0.87,
  reasoning: "Seja iz marca 2025 vsebuje 'User' entity s 
             'role' poljem in uporablja 'guard-clause' vzorec. 
             Uporabnik je prej označil ta vzorec kot uspešen.",
  source: 'generation_history'
}

Generiranje vpogledov

Poleg posameznih rezultatov agentic search generira vpoglede:

interface Insights {
  summary: string;           // Kaj je bilo najdeno
  patterns: string[];        // Pogosti vzorci
  trends: string[];          // Časovni trendi
  suggestions: string[];     // Akcijski naslednji koraki
}

// Primer
{
  summary: "Found 12 sessions involving forms across 3 projects",
  patterns: ["form-section", "validation-rules", "wizard-flow"],
  trends: [
    "High success rate (92%) with form-section pattern",
    "Validation errors decreased after adopting std/validate"
  ],
  suggestions: [
    "Consider reusing the wizard-flow pattern for complex forms",
    "Add entity-form to your preferred patterns"
  ]
}

Primer iz resničnega sveta

Uporabniška poizvedba: "Kako sem zgradil checkout flow?"

Agentic search proces:

  1. Ekstrakcija konceptov

    concepts = {
      entities: ['Order', 'Payment', 'Cart'],
      patterns: ['wizard', 'form', 'validation'],
      actions: ['checkout', 'purchase', 'pay']
    }
    
  2. Časovno iskanje

    • Najdenih 5 sej iz zadnjih 3 mesecev
    • Uteženo po svežini
  3. Semantično iskanje

    • Ujemanje "checkout" v promptih
    • Najdeni povezani entities (Order, Cart)
  4. Iskanje po vzorcih

    • Najdena uporaba wizard-flow vzorca
    • 90% stopnja uspeha
  5. Generiranje vpogledov

    {
      summary: "Found checkout implementation using 3-step wizard",
      patterns: ["wizard-flow", "form-section", "validation-rules"],
      trends: [
        "Most successful: 3-step wizard (92% completion)",
        "Less successful: single-page checkout (67%)"
      ],
      suggestions: [
        "Reuse wizard-flow for future checkout flows",
        "Consider adding progress indicator pattern"
      ]
    }
    
// Internal: Almadar's agentic search engine
// (This is how it works under the hood — not a public API)
const searchEngine = createSearchEngine(memoryManager);

// Search for authentication patterns
const response = await searchEngine.search({
  userId: 'user_123',
  query: "How did I handle authentication in the e-commerce project?",
  strategy: 'hybrid',
  depth: 3,
  limit: 10,
});

// Display summary
console.log(response.insights.summary);
// "Found 4 authentication implementations across 2 projects"

// Display patterns used
response.insights.patterns.forEach(pattern => {
  console.log(`- ${pattern}`);
});
// - jwt-auth
// - oauth-integration
// - session-management

// Display top results with reasoning
response.results.slice(0, 3).forEach(result => {
  console.log(`${result.type}: ${result.reasoning} (${result.relevance})`);
});

// session: Session from March 2025 implemented JWT authentication 
//   with refresh tokens for the e-commerce project (0.92)
//
// pattern: Pattern 'jwt-auth' has 95% success rate across 12 uses (0.88)
//
// preference: User prefers JWT over session-based auth (0.85)

// Take action on suggestions
if (response.insights.suggestions.length > 0) {
  console.log("\nSuggested actions:");
  response.insights.suggestions.forEach(s => console.log(`- ${s}`));
}
// - Consider reusing the JWT pattern from E-Commerce project
// - Add 'jwt-auth' to your preferred patterns

Primerjava: Vector vs Agentic

AspektVector SearchAgentic Search
Poizvedba"authentication""How did I handle auth?"
MetodaEmbedding similarityReasoning + traversal
RezultatiPodoben tekstRelevantni kontekst
ČasovnoSamo timestampPrehodi stanj
KausalnoNobenVerige napaka → popravek
RazlagaSimilarity scoreBerljivo razmišljanje
VpoglediNobeniVzorce, trendi, predlogi

Primerjava iz resničnega sveta: Knjižničar vs raziskovalni asistent

Vector search = Knjižničar:

  • Vi: "Knjige o vesolju"
  • Knjižničar: "Tukaj je vse z 'vesolje' v naslovu"
  • Rezultat: 500 knjig, večina irelevantnih

Agentic search = Raziskovalni asistent:

  • Vi: "Do kaj smo prišli glede misij na Mars?"
  • Asistent: "Prebrali ste 'Red Mars' leta 2023, sklenili, da potrebujemo boljše zaščito pred sevanjem. Povezano: Vaše zapiske iz leta 2024 o sistemih za podporo življenju SpaceX Starship. Predlog: Preverite novo poročilo NASA o zmanjševanju sevanja."
  • Rezultat: Natančno relevantno, s kontekstom in predlogi

Spoznanje

Vector search odgovori: "Kaj je podobno temu tekstu?"

Agentic search odgovori: "Kaj moram vedeti prav zdaj?"

Razlika je razmišljanje:

  • Razumevanje namena poizvedbe
  • Navigacija časovnega konteksta
  • Prepoznavanje vzorcev
  • Vzpostavljanje povezav
  • Predlaganje naslednjih korakov

Tako si ljudje zapomnijo. Tako si naš AI tudi zapomni.

Več o Orbital Memory.

Recent Posts