🐕

Semantic Kernel の WithMemoryStorage と WithMemory の違い

2023/05/07に公開

本文

似たような名前なので混乱しますよね。ここら辺の API はもしかしたら正式リリースにあたってはもう少しわかりやすくなるかもしれませんが 2023/05/07 現在のプレビュー版では以下のようになっています。

  • WithMemoryStorage メソッド
    • Embeddings の保存先を指定する。
    • WitMemoryStorage をしたら Embeddings 用のサービスを AddAzureTextEmbeddingGenerationServiceAddOpenAITextEmbeddingGenerationService を登録する必要がある。
    • 裏では new SementicTextMemory(IMemoryStorage storage, IEmbeddingGeneration<string, float> embeddingGenerator)KernelMemory に設定される。
  • WithMemory メソッド
    • 直接 ISemanticTextMemory を指定する。

WithMemoryKernelMemory プロパティに直接設定されます。非常に直感的ですが Open AI を使った多くのケースでは Embeddings を使うケースが多いので保存先だけを指定する UseMemoryStorage を主に使用します。
WithMemory のユースケースは Azure Cognitive Search などの検索に特化したサービスを直接使う場合です。まだ NuGet には登録されていませんがソースコードは GitHub 上にあるので、近いうちに NuGet に登録されると思います。

まとめ

ということで WithMemoryStorageWithMemory の違いを確認してみました。
私も最初に混乱したところなので、メモとして残しておきます。

Microsoft (有志)

Discussion