的暖爐記憶:讓個人 RAG 助手根據(jù)氣溫與節(jié)氣主動推送溫補(bǔ)食譜與私藏散文)
清晨推開窗迎面撲來的是透骨的清冽。草葉尖上凝結(jié)著薄薄的一層白霜在晨光里閃爍著微光。翻開日歷今天正是霜降也是秋天的最后一個節(jié)氣。每當(dāng)這個時候江南的空氣里便多了一層濕冷的寒意廚房里砂鍋煨湯的香氣還有書架上泛黃的舊書總能給人帶來最踏實(shí)的慰藉。我們平時搭建的個人 RAG檢索增強(qiáng)生成系統(tǒng)大多處于“被動響應(yīng)”的被動狀態(tài)——只有當(dāng)我們敲擊鍵盤提出問題時它才會從向量庫里檢索出答案。然而在真實(shí)的生活情境中我們常常希望身邊的數(shù)字伙伴能像一位心有靈犀的老友在節(jié)氣流轉(zhuǎn)、氣溫驟降的清晨主動從我們歷年記錄的筆記、食譜和散文里翻出那些被歲月塵封的暖意。今天我們就來為個人生活 RAG 助手裝上一根“節(jié)氣神經(jīng)”讓它能夠感知季節(jié)冷暖主動為我們呈上定制的溫補(bǔ)食譜與治愈篇章。一、從被動問答到“情境觸發(fā)式”檢索傳統(tǒng)的問答鏈路通常是基于用戶輸入的 Prompt 計(jì)算 Embedding 向量然后在知識庫中執(zhí)行余弦相似度檢索。這種模式忽略了一個至關(guān)重要的維度環(huán)境上下文Contextual Awareness。一個懂生活的個人助手應(yīng)當(dāng)感知到以下三種外部信號天文與農(nóng)歷節(jié)氣信號通過輕量農(nóng)歷算法判斷今日是否適逢霜降、立冬等關(guān)鍵節(jié)氣點(diǎn)。本地環(huán)境氣象信號獲取室外實(shí)時氣溫與體感溫度當(dāng)氣溫跌破預(yù)設(shè)閾值例如 12 攝氏度時喚醒保暖上下文。歷年同一時期的記憶召回檢索歷年 10 月下旬至 11 月上旬我們親自記錄的飲食心境與日記片段。我們將這三項(xiàng)信號組裝為一個隱式檢索查詢Implicit Search Vector在早晨定時任務(wù)觸發(fā)時靜默向本地知識庫索取匹配度最高的記憶切片。二、感知季節(jié)輕量節(jié)氣與天氣特征提取器無需引入繁重的第三方大模型全家桶幾行輕巧的 Python 代碼就能讓系統(tǒng)感知節(jié)氣與溫度import datetime from typing import Dict, Any # 二十四節(jié)氣簡易計(jì)算或節(jié)氣字典對照 SOLAR_TERMS_2026 { 10-23: 霜降, 11-07: 立冬, 11-22: 小雪 } def get_seasonal_context(current_temp: float) - Dict[str, Any]: 生成今日季節(jié)情境元數(shù)據(jù) today_str datetime.date.today().strftime(%m-%d) solar_term SOLAR_TERMS_2026.get(today_str, None) # 判定是否屬于深秋霜寒期 is_chilly current_temp 14.0 context_keywords [] if solar_term: context_keywords.extend([solar_term, 節(jié)氣食療, 溫潤祛燥]) if is_chilly: context_keywords.extend([熱湯暖胃, 生姜紅棗, 深秋散文, 老白茶]) return { solar_term: solar_term, temperature: current_temp, is_chilly: is_chilly, intent_query: .join(context_keywords) }這段代碼為檢索階段輸出了高質(zhì)量的情境關(guān)鍵詞。如果今天是 10 月 23 日且氣溫只有 9 度生成的檢索意圖就是霜降 節(jié)氣食療 溫潤祛燥 熱湯暖胃 生姜紅棗 深秋散文 老白茶。三、情境混合召回與記憶拼裝拿到情境查詢串后我們利用之前搭建的本地嵌入模型如bge-small-zh-v1.5與 SQLite 知識庫進(jìn)行混合檢索。這里特別設(shè)計(jì)了一個“生活雙軌召回”機(jī)制軌道一溫養(yǎng)食譜庫。限定標(biāo)簽為category:recipe尋找食材中包含羊肉、白蘿卜、生姜、梨湯或山藥的私人食譜筆記。軌道二往昔深秋心境。限定標(biāo)簽為category:journal提取往年深秋自己手寫的隨筆看看去年的今天自己喝了什么茶、讀了哪本書。import sqlite3 from typing import List, Dict def retrieve_autumn_memories(intent_query: str, db_path: str notes.db) - List[Dict[str, str]]: 從本地知識庫檢索溫養(yǎng)食譜與往年隨筆 # 模擬向量檢索與元數(shù)據(jù)過濾結(jié)合 with sqlite3.connect(db_path) as conn: cursor conn.cursor() # 優(yōu)先抽取生活食譜與溫潤手賬 query SELECT title, content_markdown, category FROM personal_notes WHERE category IN (recipe, journal) AND ( content_markdown LIKE %霜降% OR content_markdown LIKE %暖湯% OR content_markdown LIKE %老白茶% OR content_markdown LIKE %雪梨% ) ORDER BY RANDOM() LIMIT 3; cursor.execute(query) rows cursor.fetchall() results [] for r in rows: results.append({ title: r[0], content: r[1][:240], # 截取核心摘要 category: r[2] }) return results四、用溫潤的口吻生成晨間手賬推送召回了往昔的記憶片段之后我們把這些切片連同今日的氣溫與節(jié)氣注入到本地 Ollama 驅(qū)動的模型中。通過精心設(shè)計(jì)的系統(tǒng)提示詞讓模型以極其安靜溫和的生活家語調(diào)為我們整理出一份早安信札import json import urllib.request SYSTEM_PROMPT 你是一位陪伴在側(cè)的生活密友說話語氣柔和、內(nèi)斂、帶有書卷氣。 請結(jié)合提供的節(jié)氣、氣溫以及我往年記錄的食譜和日記為我寫一段清晨問候。 內(nèi)容包含 1. 一句關(guān)于今日節(jié)氣與氣溫的輕聲提醒 2. 推薦一道適合今日烹煮的私藏?zé)釡虿栾媮碜晕业氖匙V筆記 3. 引用一句我往年在深秋寫下的隨筆喚醒舊日時光。 注意文字必須恬淡自如不要使用任何夸張、生硬或公文腔調(diào)。 def generate_morning_greeting(seasonal_info: Dict[str, Any], memories: List[Dict[str, str]]) - str: user_payload { today_context: f今日節(jié)氣{seasonal_info[solar_term] or 深秋}室外氣溫{seasonal_info[temperature]}℃, my_recalled_notes: memories } req_data { model: qwen2.5:7b, messages: [ {role: system, content: SYSTEM_PROMPT}, {role: user, content: json.dumps(user_payload, ensure_asciiFalse)} ], stream: False, options: {temperature: 0.65} } req urllib.request.Request( http://127.0.0.1:11434/api/chat, datajson.dumps(req_data).encode(utf-8), headers{Content-Type: application/json} ) with urllib.request.urlopen(req) as resp: res json.loads(resp.read().decode(utf-8)) return res[message][content]五、晨光初曉時的溫柔回響當(dāng)這套腳本在清晨七點(diǎn)隨系統(tǒng)定時任務(wù)悄然執(zhí)行時我的手機(jī)屏幕上亮起了一條純凈的通知“推開窗檐角已染微白。今日霜降室外氣溫驟降至 9℃記得添一件厚開衫。翻看前年秋天的手賬你曾記下一道‘白蘿卜排骨陳皮湯’用小火慢煨兩個小時辛涼下氣正宜今日祛除秋燥。去年今日你在陽臺寫道‘一爐茶沸滿室生春?!癄t上的老茶已備好愿你今天過得平靜從容?!笨粗@段字句你不會覺得面對的是一臺冷冰冰的計(jì)算機(jī)器。那些存儲在本地磁盤上的向量和文本因?yàn)楣?jié)氣的契合而重新煥發(fā)了體溫。技術(shù)不應(yīng)該只是用來提高工作效率的催促繩索當(dāng)它被用來照料我們的日常起居、守護(hù)瑣碎記憶時便成為了連接我們與四季輪回最溫柔的紐帶。