在 Kernel Memory 的 GitHub 倉庫中有一個單獨的專案 Service , 用於提供獨立的Kernel Memory OpenAPI 服務。可以用於獨立的部署後臺,也可以為其他語言提供介面呼叫服務。
使用 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的元件有關,例如ContentStorageType
、TextGeneratorType
、
MemoryDbTypes
等等。大部分的元件將會在後續的文章中進行介紹。如果測試的話,可以選擇Simple
開頭的選項,基本都是使用本地檔案作為儲存。
這其中需要注意的 TextGeneratorType
和 EmbeddingGeneratorType
及其相關設定是必須的,因為這部分是呼叫大語言模型的需要的設定。
完成設定之後,就可以啟動服務了。執行專案下的run.cmd
或者run.sh
即可啟動服務。
這裡為了演示方便,啟用了Swagger和同步處理,使用了原生的檔案儲存和向量儲存。
服務其中後,如果是在本地執行,可以通過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 一樣。
在該專案的另外一個目錄下提供了一些工具指令碼,可以更加方便的使用 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 搜尋,需要提供服務地址和問題文字。