Kernel Memory 入門系列:Kernel Memory Service

2023-12-22 09:00:23

Kernel Memory 入門系列:Kernel Memory Service

在 Kernel Memory 的 GitHub 倉庫中有一個單獨的專案 Service , 用於提供獨立的Kernel Memory OpenAPI 服務。可以用於獨立的部署後臺,也可以為其他語言提供介面呼叫服務。

1. 初始化

使用 Kernel Memory Service 需要先下載該專案的原始碼。使用Git Clone 命令下載原始碼到本地即可。

git clone https://github.com/microsoft/kernel-memory.git

然後開啟/service/Service目錄,根據作業系統選擇執行使用setup.sh或者setup.cmd,就可以進行快速的初始化了。
也可以直接執行dotnet run setup命令進行初始化。

這個過程會呼叫初始化服務,將所有選擇的設定項都儲存到appsettings.Development.json檔案中。

當然也可以直接通過修改appsettings.json檔案,來修改設定項。該檔案中包含詳細的設定說明。

這其中的大部分的設定項都和Kernel Memory的元件有關,例如ContentStorageTypeTextGeneratorType
MemoryDbTypes等等。大部分的元件將會在後續的文章中進行介紹。如果測試的話,可以選擇Simple開頭的選項,基本都是使用本地檔案作為儲存。

這其中需要注意的 TextGeneratorTypeEmbeddingGeneratorType 及其相關設定是必須的,因為這部分是呼叫大語言模型的需要的設定。

2. 啟動服務

完成設定之後,就可以啟動服務了。執行專案下的run.cmd或者run.sh即可啟動服務。

這裡為了演示方便,啟用了Swagger和同步處理,使用了原生的檔案儲存和向量儲存。

3. 使用服務

服務其中後,如果是在本地執行,可以通過http://localhost:9001/swagger/index.html存取服務的Swagger頁面。

其他語言可以使用Swagger.json 生成OpenAPI的使用者端程式碼,也可以直接使用HTTP請求呼叫介面。

C# 可以使用 Microsoft.KernelMemory.WebClient 包來呼叫介面。

var memory = new MemoryWebClient("http://127.0.0.1:9001"); 

這裡的memory 的使用和 ServerlessMemory 一樣。

4. 一些其他的工具指令碼

在該專案的另外一個目錄下提供了一些工具指令碼,可以更加方便的使用 Kernel Memory Service。

  • run-qdrant.sh 用於啟動 Qdrant 服務,該服務是用於提供向量資料庫,用於儲存生成的向量。使用Docker 執行,因此需要提前安裝好Docker。

  • run-rabbitmq.sh 用於啟動 RabbitMQ 服務,該服務是用於提供訊息佇列服務,用於非同步管理檔案上傳和處理進度。也是使用Docker 執行。

  • setup-service.sh 用於初始化 Kernel Memory Service,和上面的setup.sh是一樣的。

  • run-service.sh 用於啟動 Kernel Memory Service,和上面的run.sh是一樣的。

  • upload-file.sh 用於上傳檔案到 Kernel Memory Service,需要提供服務地址(預設是http://localhost:9001)和檔案路徑。

  • ask.sh 用於向 Kernel Memory Service 提問,需要提供服務地址和問題文字。

  • search.sh 用於向 Kernel Memory Service 搜尋,需要提供服務地址和問題文字。

參考