Hindsight Memoryを活用して、あなたの弱点を知るAIを作る方法
ほとんどのAIツールは金魚のような記憶を持っています。
あなたはそれらと対話し、応答を得て、タブを閉じる――そして彼らはすべてを忘れてしまいます。次に戻ってくると、あなたは完全な他人です。これはチャットボットには問題ありませんが、学習ツールには壊滅的です。
私たちのチームがTraceX—AIコーディングメンター—の構築を決めたとき、最初に尋ねた質問は「どのLLMを使うべきか?」ではありませんでした。それは「どうやってこれを記憶させるのか?」でした。
答えはHindsightです。
記憶が学習ツールを根本的に変える理由
人間のメンターがどのように機能するかを考えてみてください。優れた指導者はあなたの質問に答えるだけではありません。彼らは先週あなたが再帰でつまずいたことを覚えています。彼らはあなたがnullチェックを忘れがちだと気づきます。彼らは複数のセッションに跨って点を結びつけ、実際にあなたの成長を助けるフィードバックをくれます。
AIツールはこれを行えません — LLMが十分に賢くないからではなく、セッション間に持続的な記憶層がないからです。
Hindsightはこれを解決します。意味検索、時系列推論、そして自動的な知識統合をサポートするAIエージェント専用のメモリシステムです。
メモリ層の構築
私のチームでの役割はバックエンドで、具体的にはHindsightの統合とAPIルートです。
最初に作成したのは、2つのコアHindsight呼び出しを囲む簡単なラッパーでした。
javascriptimport { HindsightClient } from '@vectorize-io/hindsight-client';
const client = new HindsightClient({
baseUrl: process.env.HINDSIGHT_URL,
apiKey: process.env.HINDSIGHT_API_KEY,
});
export async function storeMemory(content) {
await client.retain('TraceX', content);
}
export async function fetchMemory(query) {
const response = await client.recall('TraceX', query);
return response.results.map(r => r.text);
}
Simple. Clean. Two functions. But these two functions are what make the entire product work.
すべてを動かすAPIルート
/api/analyzeルートはTraceXの要です。ここで、学生がコードを提出したときに起こることは、次のとおりです:
Step 1 — 過去の間違いを思い出す
javascriptconst pastMistakes = await fetchMemory(
What mistakes has this student made in ${topic}?
);
Step 2 — memory contextを付けてGroqへ送信
javascriptconst memoryContext = pastMistakes?.length
? HINDSIGHT MEMORY:
${pastMistakes.join('
')}
: '';
// Groq now knows the student's full history
Step 3 — 新しい間違いを保存
javascriptawait storeMemory(
Student submitted ${language} code for ${topic}. Error: ${errorType}.
);
Step 4 — 構造化された応答を返す
javascriptreturn NextResponse.json({
analysis,
betterApproach,
correctedCode,
hindsightWarning,
pastMistakes,
memoryStored,
});
順序は重要です。まず思い出し、次に分析し、次に保存します。これにより、新しい記憶が追加される前に履歴に基づいてすべての応答が情報を得ることが保証されます。
舞台裏でHindsightが行うこと
Hindsightについて私が最も感銘を受けたのは、取得(リトリーブ)処理の仕方です。単純なキーワードマッチングだけを行うわけではありません。意味検索、キーワードマッチング、グラフ探索、時系列推論という4つの並列検索戦略を使用します。
これにより、TraceXが「この学生は二分探索でどのような間違いをしたのか?」と尋ねるとき、Hindsightは厳密な語句を探すだけではありません。意味的な意味を理解し、関連する概念を結びつけ、言い回しが異なっていても最も関連性の高い記憶を返します。
学習ツールにとって、これがまさに必要なものです。
結果
TraceXの初回セッションと5回目のセッションの違いは劇的です。
初回セッション:「あなたの二分探索には境界条件のオフバイワンエラーがあります。境界条件を修正してください。」
5回目のセッション:「この境界エラーを二分探索で4回も起こしています。あなたのループ条件は left < right ではなく left <= right を使い続けています。この特定のパターンには集中した注意が必要です。」
同じコード。まったく異なるフィードバック。なぜなら今やTraceXはあなたを知っているからです。
メモリ層を自分で試してみてください
バックエンド全体はオープンソースです。retain()とrecall()がコードベースでどのように実装されているかを正確に見ることができます。
GitHub: https://github.com/Anupam-codes7/TraceX
Hindsight SDK: https://github.com/vectorize-io/hindsight
Hindsight Docs: https://hindsight.vectorize.io/
Agent Memory: https://vectorize.io/features/agent-memory
もしセッションを跨いでユーザーを記憶する必要があるAI製品を構築しているなら、Hindsightは私が見つけた中で最もクリーンな解決策です。

