Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Deep Dive into Momento with LangChain
Search
Kazuki Maeda
June 22, 2023
Technology
1
250
Deep Dive into Momento with LangChain
もめんと Meet-up in June #2
Kazuki Maeda
June 22, 2023
Tweet
Share
More Decks by Kazuki Maeda
See All by Kazuki Maeda
20240416_devopsdaystokyo
kzkmaeda
1
230
20240321_生成AI時代のDevOps
kzkmaeda
2
720
20240222_LangChain_ver0.1.0_LCEL
kzkmaeda
3
170
20240201_クラウド利用料を 半額にするために取り組んだ10+のコト
kzkmaeda
3
6k
20231027_Bedrock勉強会
kzkmaeda
3
910
20231011_LangChainコントリビュートのすゝめ
kzkmaeda
0
1k
LangChain Japan MeetUp 2023-07-20
kzkmaeda
0
360
2023 AWS Dev Day コミュニティ紹介LT
kzkmaeda
0
90
App Runner Night 202305
kzkmaeda
2
520
Other Decks in Technology
See All in Technology
Cloud Native Java with Spring Boot (CNCF Aarhus, April 2024)
thomasvitale
1
180
AWSに詳しくない人でも始められるコスト最適化ガイド
yuhta28
1
250
競技としてのKaggle、役に立つKaggle
yu4u
4
1.9k
VS CodeでAWSを操作しよう
smt7174
8
1.7k
GrafanaMeetup_AmazonManagedGrafanaのアクセス制御機能とマルチテナント環境下でのアクセス制御について
daitak
0
260
Google Cloud Next '24でブログを10本書いた方法と勉強会を沸かせた方法
yasumuusan
0
310
Cypress or Playwright?
rainerhahnekamp
0
120
KubeCon EU 2024 Recap “Kubernetes Policy Time Machine: Where to Next?”
ryysud
0
220
VSCodeの拡張機能を作っている話
ebarakazuhiro
1
600
「スニダン」開発組織の構造に込めた意図 ~組織作りはパッションや政治ではない!~
rinchsan
3
570
Python と Snowflake はズッ友だょ!~ Snowflake の Python 関連機能をふりかえる ~
__allllllllez__
1
120
MLOpsの「壁」を乗り越える、LINEヤフーの Data Quality as Code
lycorptech_jp
PRO
5
540
Featured
See All Featured
We Have a Design System, Now What?
morganepeng
43
6.8k
Creatively Recalculating Your Daily Design Routine
revolveconf
210
11k
The Invisible Customer
myddelton
114
12k
Reflections from 52 weeks, 52 projects
jeffersonlam
345
19k
A designer walks into a library…
pauljervisheath
200
23k
Intergalactic Javascript Robots from Outer Space
tanoku
266
26k
Git: the NoSQL Database
bkeepers
PRO
422
63k
Designing on Purpose - Digital PM Summit 2013
jponch
110
6.5k
Navigating Team Friction
lara
178
13k
ParisWeb 2013: Learning to Love: Crash Course in Emotional UX Design
dotmariusz
104
6.6k
How GitHub (no longer) Works
holman
304
140k
Faster Mobile Websites
deanohume
299
30k
Transcript
Deep Dive into Momento with LangChain もめんと Meet-up in June
#2 kzk_maeda
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系を勉強中 自己紹介
agenda Momento with LangChainを触ってみる Momento with LangChainのコードを追ってみる 今後の期待
agenda Momento with LangChainを触ってみる Momento with LangChainのコードを追ってみる 今後の期待
Momento Cacheとは • Serverless Cache Service • Web上でセットアップして、SDKを埋め込むだけで クラスターセットアップなど不要で利用開始できる •
キャパシティの管理、プロビジョニング、パフォーマンスモニタリングなど オペレーション業務からの解放
LangChainとは • LLM(大規模言語モデル)を利用したアプリケーション開発に利用できる ライブラリ • 各種LLM APIの抽象化、独自データのLoader、ツール群の組み合わせなどの 様々な機能が提供されている • バージョンアップ頻度が異常
なぜLangChainとMomento? https://twitter.com/LangChainAI/status/1662138670332395520?s=20
なぜLangChainとMomento? https://python.langchain.com/docs/ecosystem/integrations/momento
なぜLangChainとMomento? https://www.gomomento.com/blog/momento-is-now-fully-integrated-into-the-langchain-ecosystem
LangChainでMomentoが使える場所 • LLM Cache • Conversation Memory
LLM Cache 通常LangChainでは、都度OpenAIなどのLLMサービスとやりとりをしますが
LLM Cache Cacheが効いていると、InterceptしてCacheからResponseを返します
LLM Cache 実装 数行のコードで実装可能
LLM Cache クエリ時間比較 同一のPromptであれば実行時間を90%以上低減
LLM Cache Token消費量比較 CacheがAnswerを返すのでOpenAIのToken消費量は0
LLM Cache 時間もコストも削減が見込める!!
Conversation Memory 通常、LangChainからLLMへのRequestは状態を持たないので独立実行 →以前の会話内容をLangChainは記憶しない
Conversation Memory ConversationChainのMemoryとしてMomentoを活用し、会話の流れを作れる
Conversation Memory 実装 こちらもシンプルなコードで実装可能
agenda Momento with LangChainを触ってみる Momento with LangChainのコードを追ってみる 今後の期待
注 ここからLangChainのコードを眺めていきますが、 冒頭で紹介したように、LangChainの更新頻度は異常です。 以降のコードは version 0.0.207 のものとなっております。 また、説明の都合でコードの一部のみ抜粋して表示します。
LLM Cache 中で何が行われているのか追ってみましょう
LLM Cache llm_cache が有効であるとcacheに問い合わせる機構が LLMの基底クラスに定義されている
LLM Cache PromptとLLMのparameterをhash化して str castしたtextをKeyにして、Momentoに格納
LLM Cache こんな感じでCacheが衝突しないようになっている
Conversation Memory 中で何か行われているのか追ってみましょう
Conversation Memory ConversationChainの中でmemoryをセットできる
Conversation Memory デフォルトで message_store: 文字列をprefixに付与して session_id を追加したtextをKeyにしている
Conversation Memory plain textをKeyのprefixに追加することで、 CacheのKey(hash化された文字列)との衝突を 抑制している??という推測(中の人教えてください)
ここまで追ってみて • ライブラリを利用する側はシンプルに使えるようにいろんな処理が抽象化されてい る一方、実装側では衝突を防ぐための仕組みが入っていたりと工夫されていること がわかった • 実際にデバッグしてCache Keyを特定してコンソールから確認することができ、楽し かった
agenda Momento with LangChainを触ってみる Momento with LangChainのコードを追ってみる 今後の期待
今後の期待 • Cache機構の拡大 ◦ (LangChainの対応が必要かもしれませんが) Embeddingの生成など、他にもTokenを利用し、時 間がかかる処理があるので、そこでも Cacheが効かせられると嬉しいなと思った • Vector
Storeとしての利用 ◦ 時限式で消えるVector Storeという用途がLLMアプリケーションの中ではそこそこ求められるケース がありそう ◦ Vector Storeが消えていたら新規に Embedding生成してStoreすることでデータ鮮度を高く保つとか ◦ Momentoでそれが実現できると管理が楽で嬉しいなと思った
今後の期待 • 特にVector Storeとして使えると、こういう仕組みを作る時に使い勝手が 非常にいい(気がします)
Thank you