🐕
Semantic Kernel の WithMemoryStorage と WithMemory の違い
本文
似たような名前なので混乱しますよね。ここら辺の API はもしかしたら正式リリースにあたってはもう少しわかりやすくなるかもしれませんが 2023/05/07 現在のプレビュー版では以下のようになっています。
-
WithMemoryStorage
メソッド- Embeddings の保存先を指定する。
-
WitMemoryStorage
をしたら Embeddings 用のサービスをAddAzureTextEmbeddingGenerationService
やAddOpenAITextEmbeddingGenerationService
を登録する必要がある。 - 裏では
new SementicTextMemory(IMemoryStorage storage, IEmbeddingGeneration<string, float> embeddingGenerator)
がKernel
のMemory
に設定される。
-
WithMemory
メソッド- 直接
ISemanticTextMemory
を指定する。
- 直接
WithMemory
は Kernel
の Memory
プロパティに直接設定されます。非常に直感的ですが Open AI を使った多くのケースでは Embeddings を使うケースが多いので保存先だけを指定する UseMemoryStorage
を主に使用します。
WithMemory
のユースケースは Azure Cognitive Search などの検索に特化したサービスを直接使う場合です。まだ NuGet には登録されていませんがソースコードは GitHub 上にあるので、近いうちに NuGet に登録されると思います。
まとめ
ということで WithMemoryStorage
と WithMemory
の違いを確認してみました。
私も最初に混乱したところなので、メモとして残しておきます。
Discussion