0%

記憶(Memory)

記憶能將對話中的重要資訊萃取、分類並儲存於 Markdown 檔案,同時建立向量資料庫以便語意檢索。這讓 AI 能夠長期記住使用者的資訊,並在需要時快速查詢相關內容。

流程

1. 萃取重要資訊

將使用者與 AI 的對話內容,透過語言模型萃取出關鍵資訊。

2. 分類記憶

利用語言模型判斷該資訊屬於哪個主題,並以主題名稱作為 Markdown 檔案名稱。

3. 儲存記憶

將資訊以 Markdown 格式儲存於指定目錄,並同步更新向量資料庫。

4. 記憶檢索

可透過語意查詢,從向量資料庫中搜尋最相關的記憶片段。


範例

1. 建立 MemoryManager 並新增記憶

建立儲存長期記憶的文件資料夾(test_memory),並將資訊加進記憶中,同時寫入檔案與加入向量資料庫。

1
2
3
4
5
6
7
8
9
10
11
12
import akasha

# 建立 MemoryManager
mem = akasha.MemoryManager(
memory_name="test_memory",
model="openai:gpt-4o",
embeddings="openai:text-embedding-3-small",
verbose=True,
)

# 新增一則記憶
mem.add_memory("Hi, 我的名字是小宋", "Hello, 小宋! 很高興認識你。")

2. 查詢記憶並用於問答

透過向量搜尋找出相關的記憶,並作為歷史紀錄,讓模型進行回答。

1
2
3
4
5
6
7
8
9
10
11
prompt = "我的名字是什麼?"
history_msg = mem.search_memory(prompt, top_k=3)

ak = akasha.ask(
model="openai:gpt-4o", max_input_tokens=8000, keep_logs=True, verbose=True
)

response = ak(
prompt=prompt,
history_messages=history_msg,
)

主要方法說明

add_memory(user_prompt, ai_response, language="ch")

  • 萃取對話重點,分類並儲存於 Markdown 檔案,同步更新向量資料庫。

search_memory(query, top_k)

  • 以語意查詢方式,從記憶庫中找出最相關的記憶片段。
  • top_k為最多搜尋的文件段落數量

show_memory(num=100)

  • 顯示前 num 筆記憶內容。

記憶檔案結構

每則記憶會包含:

  • 建立時間
  • 記憶內容
  • 原始對話

並以主題分類存放於 Markdown 檔案中。


備註

  • 記憶檔案與向量資料庫需保持同步,建議定期檢查。
  • 若有大量記憶,建議調整 chunk_size 以優化效能。

環境變數

在畫面左側Environment File Path中填入.env的檔案路徑(預設./.env),需填入相關API KEY才能使用OPENAI、GEMINI等模型,或使用網頁搜尋功能

安裝

只要你安裝了akasha,便可以簡單使用akasha_ui,在terminal執行:

1
$ akasha toy

便可以在瀏覽器上開啟,開始使用akasha ui



上傳文件檔

上傳你需要的文件檔案,並取資料夾名稱,創立知識庫。

請注意文件檔只允許(.docx, .txt, .pdf)

ui_upload



設定

在設定頁面,可以選擇要詢問的知識庫和調整各種參數、選擇不同語言模型。

若使用openAI模型,請在左側輸入 openAI的key,azure openAI則需要額外輸入url。

ui_setting

手動增加模型

如果你想使用不同的語言模型,可以至huggingface下載模型到”/model”資料夾,模型便會加至設定中

ui_model

設定完成後,便可開始使用akasha ui

流式輸出

在畫面右邊選取stream,語言模型的回答將會是流式輸出

image

RAG

確認設定中有選擇正確的知識庫後,在system_prompt中填入希望回答的格式,在下方填入問題,便可以執行文檔問答。
ui_5



可以使用clear 按鈕清空對話欄,也可以使用左側Download Log按鈕下載紀錄
image



summary

選擇summary方法與長度後,上傳單一文件檔便可得到該文檔的摘要。
image



websearch

選擇要使用的搜尋引擎與搜尋數量上限後,會根據問題進行網頁搜尋並回答問題

image