透過 Ollama 將本地 LLM 整合至 Obsidian 記事中

Ollama 已提出一種方法,將大型語言模型(LLMs)整合至 Obsidian 記事中,以實現對話式互動與概念搜尋。透過結合本地 LLM 與索引工具,使用者可超越字詞精確匹配的搜尋方式,改以概念與意義來查詢自己的筆記。

使用嵌入技術實現概念搜尋

要讓模型能與大量筆記進行對話,系統必須識別並僅提供最相關的文字段落,因為大多數模型無法一次處理整個知識庫。這透過建立使用嵌入(embeddings)的索引來實現,使系統能搜尋概念而非精確詞句。

建立索引器

可設定 Obsidian 插件在載入時索引筆記,並持續保存進度以避免重複生成。以下技術方法使用 Llama Index 進行索引處理:

  • 資料儲存:初始化記憶體資料儲存,可選擇 Chroma DB 或預設的 Llama Index 儲存方式。
  • 持久化:定義儲存內容,確保索引能儲存至本機目錄。
  • 讀取:使用 MarkdownReader 載入並處理 Markdown 檔案,Llama Index 會理解詞語的意義及其關聯性。

雖然可使用 OpenAI 服務進行嵌入,但 Ollama 提供了嵌入功能,而 LangChain 也提供本地替代方案,適合偏好完全自架環境的使用者。

透過檢索增強生成(RAG)查詢筆記

一旦建立索引,系統即可檢索相關筆記片段,用以建構 LLM 的系統提示。此流程遵循檢索增強生成(RAG)工作流程:

  1. 初始化:從持久化儲存初始化索引。
  2. 檢索:設定檢索器(例如將 similarityTopK 設為 5),以找出與使用者提示最匹配的項目。
  3. 提示建構:將檢索到的文字片段合併,並插入系統提示中,指示模型使用這些特定文字來回答提示。
  4. 生成:透過 ollama-node 套件執行本地模型(如 llama2),產生最終回應。

為維持速度並確保檢索到的文字能適應模型的輸入上下文視窗,建議使用較小的模型。在提供的範例中,使用五個每段 256 個詞元的片段。

筆記整合的進階應用場景

除了簡單的問答,將 LLM 整合至筆記工具中,還可支援多種進階生產力工作流程:

  • 自動摘要:為長篇筆記生成簡潔摘要。
  • 元資料增強:識別最適切的關鍵字,加入筆記前置欄位,以提升文件間的連結性。
  • Obsidian 至 Anki 傳輸管道:從筆記中生成問答對,匯出至 Anki 進行間隔重複學習。

這些工作流程可透過嘗試不同模型權重與提示工程來優化,以符合特定任務需求。

Sources

相關

  • 專案
  • Dispatch
  • 專案
  • Dispatch
  • 專案