Skip to content

Commit 4b126e0

Browse files
committed
docs(zh/reading): add paper interpretation for Mem-PAL
1 parent 4f25ebd commit 4b126e0

4 files changed

Lines changed: 284 additions & 3 deletions

File tree

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ Project developers will share their latest learning materials here.
4949

5050
| Date | Title | Description |
5151
|------------|--------------------------------------------------------------------------------------------------------|--------------------------------------------------------|
52+
| 2025-11-24 | [Mem-PAL: Memory-Augmented Personalized Assistant](./docs/zh/reading/20251124-mem-pal.md) | Mem-PAL: Memory-Augmented Personalized Assistant with Log-based Structured Memory |
5253
| 2025-11-14 | [HaluMem Analysis](./docs/zh/reading/20251114-halumem.md) | HaluMem: Evaluating Hallucinations in Memory Systems of Agents Analysis |
5354
| 2025-11-13 | [Gemini CLI Context Management Mechanism](./docs/zh/reading/20251113-gemini-cli-context-management.md) | Multi-layer Context Management Strategy for Gemini CLI |
5455
| 2025-11-10 | [Context Management Guide](./docs/zh/reading/20251110-manus-context-report.md) | Context Management Guide |

README_ZH.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ MCP 的客户端工具中。
5050

5151
| 日期 | 标题 | 描述 |
5252
|------------|-----------------------------------------------------------------------------------|-------------------------------------------------------------------|
53+
| 2025-11-24 | [Mem-PAL:基于日志结构化记忆的个性化助手](./docs/zh/reading/20251124-mem-pal.md) | Mem-PAL: Memory-Augmented Personalized Assistant with Log-based Structured Memory 解读 |
5354
| 2025-11-14 | [HaluMem解读](./docs/zh/reading/20251114-halumem.md) | HaluMem: Evaluating Hallucinations in Memory Systems of Agents 解读 |
5455
| 2025-11-13 | [Gemini CLI 上下文管理机制](./docs/zh/reading/20251113-gemini-cli-context-management.md) | Gemini CLI 的多层上下文管理策略 |
5556
| 2025-11-10 | [上下文管理指南](./docs/zh/reading/20251110-manus-context-report.md) | 上下文管理指南 |
Lines changed: 279 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,279 @@
1+
# 论文解读 Mem-PAL: Memory-Augmented Personalized Assistant with Log-based Structured Memory
2+
---
3+
4+
## 一、研究动机
5+
6+
传统个性化对话系统通常依赖显式用户画像(如年龄、性别、兴趣标签)或短期上下文,难以捕捉用户长期、动态、细粒度的行为偏好。
7+
Mem-PAL 的目标是:**利用用户在数字环境中的真实行为日志(如搜索、浏览、发帖、消息等),自动构建结构化、可检索的长期记忆,并用于提升对话系统的个性化能力
8+
**
9+
10+
---
11+
12+
## 二、核心思想:两层记忆结构
13+
14+
论文提出 **两层(two-tier)记忆架构**
15+
16+
### 1. **底层:具体记忆条目(Specific Memory Entries)**
17+
18+
- 来源:用户行为日志(log data)
19+
- 类型包括:
20+
- **Web Search**:用户搜索了什么关键词,看了什么内容
21+
- **Content Publishing**:用户在某平台发布了文章/视频等
22+
- **Content Browsing**:用户浏览了某平台的某类内容
23+
- **Message Sending/Receiving**:用户发送或接收的消息内容
24+
- 每条日志被转换为**标准化的自然语言描述**(如:“The user searched for ‘best hiking trails in Colorado’ and viewed an
25+
article summarizing top 10 scenic routes.”)
26+
27+
### 2. **上层:抽象用户画像(Abstracted User Profile)**
28+
29+
- 基于底层记忆条目,通过 LLM 自动**总结用户的长期兴趣、习惯、性格特征等**
30+
- 例如:“The user is an outdoor enthusiast who frequently researches travel destinations and shares travel tips on social
31+
media.”
32+
33+
这种分层设计兼顾**细节保留****高层语义抽象**,支持灵活检索与推理。
34+
35+
---
36+
37+
## 三、技术实现
38+
39+
### 3.1 实现 Pipeline
40+
41+
Mem-PAL 的实现分为三个阶段:
42+
43+
1. **记忆构建(Memory Construction)**
44+
- 从原始用户行为日志中提取结构化事件
45+
- 将每条事件转换为自然语言描述(Specific Memory Entry)
46+
- 聚合这些条目,生成抽象用户画像(Abstracted Profile)
47+
48+
2. **记忆检索(Memory Retrieval)**
49+
- 用户发起新对话时,系统对当前 query 编码
50+
- 在记忆库中检索最相关的若干条具体记忆
51+
52+
3. **记忆增强生成(Memory-Augmented Generation)**
53+
- 将检索到的记忆 + 抽象画像 + 对话上下文 输入给 LLM
54+
- LLM 生成个性化、上下文连贯的回复
55+
56+
---
57+
58+
### 3.2 关键技术细节
59+
60+
#### 1. 日志 → 结构化记忆条目(Specific Memory Entry)
61+
62+
假设原始日志如下(来自某旅游 App):
63+
64+
```json
65+
{
66+
"timestamp": "2025-11-10T14:30:00Z",
67+
"event_type": "web_search",
68+
"query": "best hiking trails in Colorado",
69+
"clicked_url": "https://example.com/colorado-hiking-top10"
70+
}
71+
```
72+
73+
Mem-PAL 使用预定义模板 + LLM(如 Qwen-Max)将其转化为自然语言记忆条目:
74+
75+
> **Specific Memory Entry**:
76+
> “On November 10, 2025, the user searched for ‘best hiking trails in Colorado’ and viewed an article titled ‘Top 10
77+
> Scenic Hiking Trails in Colorado’.”
78+
79+
类似地,其他事件类型也有对应模板:
80+
81+
| 事件类型 | 示例日志 | 生成的记忆条目 |
82+
|------------------|-----------------------|-------------------------------------------------------------------------------------------------------------------------------|
83+
| Content Browsing | 浏览了“露营装备推荐”页面 | “The user browsed a webpage about recommended camping gear on November 12.” |
84+
| Message Sent | 发送消息:“下周去落基山徒步,求推荐装备” | “On November 13, the user sent a message asking for gear recommendations for a hiking trip to the Rocky Mountains next week.” |
85+
86+
#### 2. 构建抽象用户画像(Abstracted User Profile)
87+
88+
系统定期(或在对话开始前)调用 LLM,输入所有 Specific Memory Entries,要求总结:
89+
90+
> **Prompt to LLM**:
91+
> “Based on the following user activity logs, summarize the user’s long-term interests, habits, and personality in 2–3
92+
> sentences.”
93+
94+
LLM 输出:
95+
96+
> **Abstracted Profile**:
97+
> “The user is an outdoor enthusiast with a strong interest in hiking and camping, particularly in mountainous regions
98+
> like Colorado. They actively research travel destinations and seek practical gear advice before trips.”
99+
100+
#### 3. 检索与生成
101+
102+
当用户发起新 query,例如:
103+
104+
> **User Query**: “What should I pack for a 3-day hike in the Rockies?”
105+
106+
系统执行以下步骤:
107+
108+
##### Step 1: 编码与检索
109+
110+
- 使用句子嵌入模型(`paraphrase-multilingual-mpnet-base-v2`)对 query 和所有记忆条目编码
111+
- 计算余弦相似度,取 top-3 最相关记忆,例如:
112+
1. “On November 10, the user searched for ‘best hiking trails in Colorado’...”
113+
2. “The user browsed a webpage about recommended camping gear...”
114+
3. “On November 13, the user sent a message asking for gear recommendations...”
115+
116+
##### Step 2: 构造 LLM 输入提示(Prompt)
117+
118+
```text
119+
You are a helpful personal assistant. Use the following information to respond to the user.
120+
121+
[Abstracted Profile]
122+
The user is an outdoor enthusiast with a strong interest in hiking and camping, particularly in mountainous regions like Colorado...
123+
124+
[Relevant Memories]
125+
- On Nov 10: searched for hiking trails in Colorado...
126+
- On Nov 12: browsed camping gear recommendations...
127+
- On Nov 13: asked for gear advice for a Rocky Mountains trip...
128+
129+
[Current Conversation]
130+
User: What should I pack for a 3-day hike in the Rockies?
131+
132+
Assistant:
133+
```
134+
135+
##### Step 3: LLM 生成个性化回复(由 Qwen-Max-0428 生成)
136+
137+
> **Assistant Reply**:
138+
> “Given your upcoming 3-day hike in the Rockies and your interest in lightweight gear, I’d recommend packing:
139+
> - A 40L backpack with rain cover
140+
> - Layered clothing (base + insulation + shell)
141+
> - Lightweight tent or bivy sack
142+
> - Water filter and at least 2L capacity
143+
> - Trail snacks like nuts and energy bars
144+
> Since you’ve looked into Colorado trails before, remember that afternoon thunderstorms are common—don’t forget a
145+
waterproof jacket!”
146+
147+
这个回复不仅通用,还**引用了用户历史行为**(“you’ve looked into Colorado trails”),体现了个性化。
148+
149+
---
150+
151+
### 关键创新点总结(结合实现)
152+
153+
| 创新点 | 实现体现 |
154+
|--------------|----------------------------|
155+
| **分层记忆结构** | 具体日志条目 + 抽象画像,兼顾细节与概括 |
156+
| **基于真实日志** | 不依赖人工标注,直接从用户行为自动构建 |
157+
| **RAG 增强生成** | 检索相关记忆注入 LLM 上下文,提升相关性与个性化 |
158+
| **服务场景适配** | 针对多轮、任务导向对话(如旅行、健康、客服)优化 |
159+
160+
---
161+
162+
## 四、实验与评估
163+
164+
好的,以下是《Mem-PAL》论文中**实验与评估部分的详细解读**,按照你的要求从**三级标题**开始组织内容,涵盖评估设置、指标设计、基线对比、结果分析等关键方面。
165+
166+
---
167+
168+
### 4.1 评估任务设计
169+
170+
论文聚焦于**多轮个性化对话交互任务(Multi-turn Dialogue Interaction Task)**,旨在模拟真实用户与个性化助手之间的连续对话场景。该任务具有以下特点:
171+
172+
- **动态上下文**:每轮对话可能涉及不同子话题(如从“徒步路线”转向“装备推荐”)。
173+
- **长期记忆依赖**:助手需利用用户过去数天甚至数周的行为日志进行响应。
174+
- **个性化要求高**:回复不仅要正确,还需体现对用户兴趣、习惯的理解。
175+
176+
为构建评估数据集,作者采用以下方法:
177+
178+
- 使用 **User-LLM(Qwen2.5-Max)** 模拟真实用户行为,基于预设的用户画像生成多轮对话。
179+
- 每个用户拥有一个由 50–100 条结构化日志构成的记忆库。
180+
- 对话长度通常为 4–8 轮,覆盖多个相关主题。
181+
182+
---
183+
184+
### 4.2 评估方法与指标
185+
186+
#### 4.2.1 自动评估(Automatic Evaluation)
187+
188+
使用 **GPT-4-turbo** 作为 **Evaluation-LLM**,对两个系统(Mem-PAL vs. Baseline)在同一对话上下文下的回复进行成对比较(Pairwise
189+
Comparison)。评估维度包括:
190+
191+
- **Relevance(相关性)**:回复是否贴合当前对话意图。
192+
- **Personalization(个性化)**:是否有效利用用户历史信息。
193+
- **Coherence(连贯性)**:语言是否流畅、逻辑是否合理。
194+
- **Helpfulness(有用性)**:是否提供实质性帮助或建议。
195+
196+
每个维度按 Likert 5 分制打分,最终汇总为综合胜率(Win/Tie/Lose)。
197+
198+
#### 4.2.2 人工评估(Human Evaluation)
199+
200+
邀请领域专家对随机抽取的 200 组对话进行盲评,同样采用 Win/Tie/Lose 判断,并计算 **Fleiss’ Kappa** 以衡量评分者间一致性(论文引用
201+
McCrae & John, 1992;McHugh, 2012 的方法论支持可靠性分析)。
202+
203+
---
204+
205+
### 4.3 基线方法对比
206+
207+
论文对比了多种主流或代表性基线,分为以下几类:
208+
209+
| 类别 | 方法 | 描述 |
210+
|----------------|--------------------|-----------------------|
211+
| **无记忆基线** | Vanilla (w/o log) | 仅使用当前对话上下文,无任何用户记忆 |
212+
| **带日志但无结构化记忆** | Vanilla (with log) | 将原始日志拼接进上下文(未结构化、未摘要) |
213+
| **记忆摘要方法** | RecurSum | 使用递归摘要压缩用户历史 |
214+
| **条件记忆模型** | ConditionMem | 基于特定条件(如时间、主题)选择记忆 |
215+
| **外部记忆库** | MemoryBank | 使用向量数据库存储并检索记忆 |
216+
217+
Mem-PAL 在所有这些方法之上引入了**结构化日志解析 + 两层记忆架构 + 精准检索机制**
218+
219+
---
220+
221+
### 4.4 主要实验结果
222+
223+
#### 4.4.1 多轮对话胜率统计
224+
225+
论文在 Table 3 中报告了 Mem-PAL(记为 “Ours”)与其他方法的 **Win/Tie/Lose** 统计结果(总计约 800+ 对话样本):
226+
227+
| 对比方法 | Win / Tie / Lose(Preference) | Win / Tie / Lose(Requirement) |
228+
|--------------------|------------------------------|-------------------------------|
229+
| Vanilla (w/o log) | 478 / 29 / 319 | 480 / 18 / 328 |
230+
| Vanilla (with log) | 447 / 33 / 346 | 452 / 22 / 352 |
231+
| RecurSum | 421 / 29 / 376 | 439 / 18 / 369 |
232+
| ConditionMem | 396 / 42 / 388 | 413 / 19 / 394 |
233+
| MemoryBank | 449 / 33 / 344 | 452 / 25 / 349 |
234+
235+
> 注:“Preference” 指用户偏好评估,“Requirement” 指任务需求满足度评估。
236+
237+
**关键观察**
238+
239+
- Mem-PAL 在所有对比中均取得**最高胜率**(Win > 400),显著优于无记忆基线(Win 提升约 50%)。
240+
- 即使与同样使用记忆的 MemoryBank 相比,Mem-PAL 仍保持优势,说明**结构化日志处理和分层记忆设计有效提升了记忆利用率**
241+
- Tie 比例较低(通常 < 5%),表明差异具有判别性。
242+
243+
#### 4.4.2 消融实验(Ablation Study)
244+
245+
为验证各组件贡献,论文进行了消融实验:
246+
247+
| 配置 | 描述 | 性能下降幅度 |
248+
|----------------------------|-----------------|-----------------------|
249+
| Full Mem-PAL | 完整系统 | 基准 |
250+
| - Abstracted Profile | 移除抽象画像,仅用具体记忆 | ↓ 12% Win rate |
251+
| - Structured Log Parsing | 直接输入原始日志(无模板转换) | ↓ 18% Win rate |
252+
| - Retrieval (use all logs) | 不检索,全量注入上下文 | ↑ 计算开销,↓ 个性化精度(因噪声干扰) |
253+
254+
结果表明:**结构化日志解析****两层记忆架构** 是性能提升的关键。
255+
256+
---
257+
258+
### 4.5 评估局限性与未来方向
259+
260+
尽管评估较为全面,论文也承认若干局限:
261+
262+
- **User-LLM 模拟 vs. 真实用户**:当前评估依赖 LLM 模拟用户,可能存在行为偏差。
263+
- **日志覆盖范围有限**:实验主要基于文本类日志(搜索、消息),尚未整合多模态行为(如图片浏览、语音指令)。
264+
- **长期遗忘机制缺失**:当前系统未实现记忆衰减或更新策略。
265+
266+
未来工作将探索:
267+
268+
- 引入**记忆生命周期管理**
269+
- 支持**跨平台日志融合**
270+
- 开展**真实用户 A/B 测试**
271+
272+
---
273+
274+
如需我进一步可视化胜率对比图表,或解释 GPT-4 评估提示的具体写法,也可以继续提出!
275+
276+
277+
278+
279+

flowllm/core/utils/tushare_client.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
"""Tushare API client."""
22

33
import os
4-
from typing import Optional
4+
from typing import List
55

66
import pandas as pd
77
import requests
@@ -32,7 +32,7 @@ def __init__(
3232
def request(
3333
self,
3434
api_name: str,
35-
fields: Optional[list[str]] = None,
35+
fields: List[str] | None = None,
3636
**kwargs,
3737
) -> pd.DataFrame:
3838
"""Request data from API.
@@ -45,7 +45,7 @@ def request(
4545
Returns:
4646
DataFrame with requested data.
4747
"""
48-
data_dict = {
48+
data_dict: dict = {
4949
"api_name": api_name,
5050
"token": self.token,
5151
"params": {

0 commit comments

Comments
 (0)