Slide 1

Slide 1 text

Deep Dive into Momento with LangChain もめんと Meet-up in June #2 kzk_maeda

Slide 2

Slide 2 text

Kazuki Maeda @kzk_maeda SRE @atama plus AWS Community Builders AWS Startup Community Core Member 7+ years of experience of AWS Like:  Lambda / Step Functions / Glue / MWAA / Athena  最近はGoogle CloudとLLM系を勉強中 自己紹介

Slide 3

Slide 3 text

agenda Momento with LangChainを触ってみる Momento with LangChainのコードを追ってみる 今後の期待

Slide 4

Slide 4 text

agenda Momento with LangChainを触ってみる Momento with LangChainのコードを追ってみる 今後の期待

Slide 5

Slide 5 text

Momento Cacheとは ● Serverless Cache Service ● Web上でセットアップして、SDKを埋め込むだけで クラスターセットアップなど不要で利用開始できる ● キャパシティの管理、プロビジョニング、パフォーマンスモニタリングなど オペレーション業務からの解放

Slide 6

Slide 6 text

LangChainとは ● LLM(大規模言語モデル)を利用したアプリケーション開発に利用できる ライブラリ ● 各種LLM APIの抽象化、独自データのLoader、ツール群の組み合わせなどの 様々な機能が提供されている ● バージョンアップ頻度が異常

Slide 7

Slide 7 text

なぜLangChainとMomento? https://twitter.com/LangChainAI/status/1662138670332395520?s=20

Slide 8

Slide 8 text

なぜLangChainとMomento? https://python.langchain.com/docs/ecosystem/integrations/momento

Slide 9

Slide 9 text

なぜLangChainとMomento? https://www.gomomento.com/blog/momento-is-now-fully-integrated-into-the-langchain-ecosystem

Slide 10

Slide 10 text

LangChainでMomentoが使える場所 ● LLM Cache ● Conversation Memory

Slide 11

Slide 11 text

LLM Cache 通常LangChainでは、都度OpenAIなどのLLMサービスとやりとりをしますが

Slide 12

Slide 12 text

LLM Cache Cacheが効いていると、InterceptしてCacheからResponseを返します

Slide 13

Slide 13 text

LLM Cache 実装 数行のコードで実装可能

Slide 14

Slide 14 text

LLM Cache クエリ時間比較 同一のPromptであれば実行時間を90%以上低減

Slide 15

Slide 15 text

LLM Cache Token消費量比較 CacheがAnswerを返すのでOpenAIのToken消費量は0

Slide 16

Slide 16 text

LLM Cache 時間もコストも削減が見込める!!

Slide 17

Slide 17 text

Conversation Memory 通常、LangChainからLLMへのRequestは状態を持たないので独立実行 →以前の会話内容をLangChainは記憶しない

Slide 18

Slide 18 text

Conversation Memory ConversationChainのMemoryとしてMomentoを活用し、会話の流れを作れる

Slide 19

Slide 19 text

Conversation Memory 実装 こちらもシンプルなコードで実装可能

Slide 20

Slide 20 text

agenda Momento with LangChainを触ってみる Momento with LangChainのコードを追ってみる 今後の期待

Slide 21

Slide 21 text

注 ここからLangChainのコードを眺めていきますが、 冒頭で紹介したように、LangChainの更新頻度は異常です。 以降のコードは version 0.0.207 のものとなっております。 また、説明の都合でコードの一部のみ抜粋して表示します。

Slide 22

Slide 22 text

LLM Cache 中で何が行われているのか追ってみましょう

Slide 23

Slide 23 text

LLM Cache llm_cache が有効であるとcacheに問い合わせる機構が LLMの基底クラスに定義されている

Slide 24

Slide 24 text

LLM Cache PromptとLLMのparameterをhash化して str castしたtextをKeyにして、Momentoに格納

Slide 25

Slide 25 text

LLM Cache こんな感じでCacheが衝突しないようになっている

Slide 26

Slide 26 text

Conversation Memory 中で何か行われているのか追ってみましょう

Slide 27

Slide 27 text

Conversation Memory ConversationChainの中でmemoryをセットできる

Slide 28

Slide 28 text

Conversation Memory デフォルトで message_store: 文字列をprefixに付与して session_id を追加したtextをKeyにしている

Slide 29

Slide 29 text

Conversation Memory plain textをKeyのprefixに追加することで、 CacheのKey(hash化された文字列)との衝突を 抑制している??という推測(中の人教えてください)

Slide 30

Slide 30 text

ここまで追ってみて ● ライブラリを利用する側はシンプルに使えるようにいろんな処理が抽象化されてい る一方、実装側では衝突を防ぐための仕組みが入っていたりと工夫されていること がわかった ● 実際にデバッグしてCache Keyを特定してコンソールから確認することができ、楽し かった

Slide 31

Slide 31 text

agenda Momento with LangChainを触ってみる Momento with LangChainのコードを追ってみる 今後の期待

Slide 32

Slide 32 text

今後の期待 ● Cache機構の拡大 ○ (LangChainの対応が必要かもしれませんが) Embeddingの生成など、他にもTokenを利用し、時 間がかかる処理があるので、そこでも Cacheが効かせられると嬉しいなと思った ● Vector Storeとしての利用 ○ 時限式で消えるVector Storeという用途がLLMアプリケーションの中ではそこそこ求められるケース がありそう ○ Vector Storeが消えていたら新規に Embedding生成してStoreすることでデータ鮮度を高く保つとか ○ Momentoでそれが実現できると管理が楽で嬉しいなと思った

Slide 33

Slide 33 text

今後の期待 ● 特にVector Storeとして使えると、こういう仕組みを作る時に使い勝手が 非常にいい(気がします)

Slide 34

Slide 34 text

Thank you