受到大神的啟發,決定自己動手來做一個加強版的、可以完全在本地端運行、可以永久記住與使用者之間的對話內容的個人AI助手。
可以完全放心的把任何事情告訴這個AI助手,他會永遠幫你記得,而且一切資訊都不會離開你的電腦。
隨著使用時間的推移,你的AI助手會越來越了解你。
這個專案也算是個人學習紀錄,盡量以簡潔乾淨的程式碼來完成,其中應用了包含:
- Docker應用
- 提示工程(Prompt engineering)
- 增強檢索(RAG)
- 重新排序(Rerank)
- SQL資料庫(PostgreSQL)檢索、編輯
等相關技術。
這個專案主要聚焦在「完全離線」的環境下運行, 所以以下列出的東西是必須事先準備的:
- Docker以及Docker compose
- PostgreSQL資料庫
- 透過本專案中的
docker-compose.yml
文件來建立,Docker就是為了要運行容器來作為資料庫。
- 透過本專案中的
- Python
- Ollama
- 嵌入模型 (不負責任推薦: BAAI/bge-m3)
- Rerank模型 (不負責任推薦: BAAI/bge-reranker-v2-m3)
- Nvidia顯卡 (非必要,但是沒有的話會慢到你想哭)
- 下載LLM:
ollama run gemma2 # 抓你自己喜歡的就可以了
- 建置專案:
git clone https://github.com/kime541200/AdvMemoryAgent.git
cd AdvMemoryAgent
sudo docker-compose up --build
pip install -r requirements.txt
- 先在
config/config.yml
中設定好相關參數, 例如:
system:
device: cuda
store_chat_to_db: True
chat_verbose: False
llm_client:
host: http://127.0.0.1:11434
model: 'gemma2'
keep_alive: 30
vector_db:
name: conversations
indexing:
embed_model: path/to/your/embed_model
sql_db:
dbname: memory_agent
user: example_user
password: '123456'
host: '127.0.0.1'
port: '5432'
reranker:
reranker_model_path: path/to/your/rerank_model
rerank_threshold: 0.05
如果都按照前述步驟操作的話這邊只需要改嵌入模型的路徑(embed_model
)以及Rerank模型的路徑(reranker_model_path
)即可,其他的參數就自己視情況調整。
- 開始運行
python run.py
- 一般模式
一般模式就是普通的跟LLM對話。
- 回想模式
在你輸入的文字前面加上/recall
,AI便會檢查過往的對話紀錄中是否有與你的提問有相關的資訊,如果有的話就會參考相關資訊並做出回答。
- 刪除模式
在對話過程中有時會有一些毫無價值的對話,這時便可以輸入/forget
,將最近的一組問答從AI助手的大腦中(aka.資料庫)中移除。
- 記憶模式
如果想將一些資料塞進AI助手的腦中, 可以在輸入的文字前面加上/memorize
, 便可以將這段文字塞進去。
- 退出對話
輸入bye
就可以退出對話