当前大模型应用的致命瓶颈在于上下文窗口限制。当对话轮数超过GPT-4 Turbo的128K上限,或本地部署模型仅支持4K上下文时,系统面临两难抉择:
遗忘早期关键信息导致逻辑断层(如用户说“按上次方案处理”)
突破长度限制带来的指数级计算成本增长
# 基础实现仅需2行代码 history = [] def add_context(user_input, ai_response): history.append({"user": user_input, "assistant": ai_response})
from collections import deque window = deque(maxlen=5) # 保留最近5轮对话
def calculate_importance(text): # 结合语义关键度+用户标记(如"重要!"提示) return tfidf_score(text) + 10 if "重要" in text else 0
# 使用LLM生成记忆摘要 def summarize_memory(history_chunk): prompt = f"压缩以下对话要点:\n{history_chunk}" return llm.generate(prompt, max_tokens=100)
# ChromaDB实现示例 db = chromadb.Client() collection = db.create_collection("memories") def add_memory(text): embedding = model.encode(text) collection.add(embedding=embedding, document=text)
📊 性能对比:
百万级记忆检索延迟 < 200ms
准确率比关键词搜索高63%
# 使用py2neo构建记忆图谱 graph = Graph() graph.run("CREATE (u:User)-[:HAS_PREFERENCE]->(p:Preference {name:'咖啡'})")
# 短期记忆 + 长期记忆联动 if "我的生日是" in user_input: long_term_memory.save(key="生日", value=extract_date(user_input))
🚀 最佳实践:
短期层:Redis缓存(毫秒级响应)
长期层:Pinecone向量库
# 模拟分页机制 def handle_page_fault(query): if "两周前" in query and not in active_memory: return swap_in_from_disk(time_range="2weeks")
技术启示:没有完美的记忆策略,只有最适合业务场景的组合方案。