🐕
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