前言
在SK-Kernel Memory (KM) 初探透過 KernelMemoryBuilder
來建立 MemoryServerless
,
讓我們將一些檔案進行讀取、切段、轉成 Embeddings,最後存到資料庫。
並可以讓我們詢問問題後,再取回答案。
Kernel Memory
可以讓我們啟動為一個 Web API 的服務,
這樣就有一個服務來專門來匯入資料,並提供問問題及回覆問題,
使用別的開發語言也可以使用它,例如 JavaScript, Java …
或是檔案太大的話,先上傳上去,不會 Block 使用的動作 …
以下就來看將 Kernel Memory
設定成 Service ,
並透過 MemoryWebClient
來操作它。
實作
Kernel Memory as a Service
設定 Kernel Memory Service
依 Kernel Memory as a Service 的說明,先從 Github kernel-memory 將程式下載下來。
開啟 Command 視窗,切到 /service/Service
目錄,執行 dotnet build
沒錯誤後,
再執行 dotnet run setup
來進行各項設定,
除了 Open AI
or AOAI
外,先設定為 Memory 方式執行(Simple
系列),及使用 Azure OpenAI,
因為 Kernel Memory 會卡 Apikey,所以會讓我們設定 2 組 Apikey,可以輸入 GUID。
預設是 Development 環境,所以會建立 appsettings.Development.json
,
內容如下,
1 | { |
執行 Kernel Memory Service
設定好了之後,就可以執行 dotnet run
跑起來,
正常啟動後,可以連到 http://127.0.0.1:9001/swagger/index.html
查看有多少 API 可以使用。
透過 MemoryWebClient 操作
一樣在 VSCode 建立 ipynb
檔來測試,
1.上傳檔案建立個人知識庫
先將檔案透過 MemoryWebClient 呼叫 API 上傳上去,
這裡可以多設定 index
名稱(index:"tooth"
),並檢查是否上傳過。
1 |
|
2.詢問問題
建立好知識庫後,就可以進行詢問,因為剛才有指定 index
名稱,
所以在詢問問題時,也要給 index
名稱
1 | var answer = await memory.AskAsync("請問洗牙有什麼規定", index:"tooth"); |
結果如下,
參考資源
kernel-memory
Kernel Memory as a Service
Kernel Memory 入门系列:Kernel Memory Service