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
LangChainのDocument機能を使って文書処理を柔軟にする
Search
西岡 賢一郎 (Kenichiro Nishioka)
October 27, 2023
Technology
0
940
LangChainのDocument機能を使って文書処理を柔軟にする
機械学習の社会実装勉強会第28回 (
https://machine-learning-workshop.connpass.com/event/298301/
) の発表資料です。
西岡 賢一郎 (Kenichiro Nishioka)
October 27, 2023
Tweet
Share
More Decks by 西岡 賢一郎 (Kenichiro Nishioka)
See All by 西岡 賢一郎 (Kenichiro Nishioka)
LangGraph Templatesによる効率的なワークフロー構築
knishioka
0
61
AIエージェントの開発に特化した統合開発環境 LangGraph Studio
knishioka
0
97
LangGraphを用いたAIアプリケーションにおけるメモリ永続化の実践
knishioka
1
250
Text-to-SQLをLangSmithで評価
knishioka
0
160
効果的なLLM評価法 LangSmithの技術と実践
knishioka
1
320
LangGraphのノード・エッジ・ルーティングを深堀り
knishioka
1
440
LangGraphでマルチエージェントワークフローを構築
knishioka
0
350
LLMアプリケーションで使用するVector Databaseの比較
knishioka
0
2.1k
LLMアプリケーションの デバッグ・テスト・評価・監視を楽にするLangSmith
knishioka
0
290
Other Decks in Technology
See All in Technology
【若手エンジニア応援LT会】ソフトウェアを学んできた私がインフラエンジニアを目指した理由
kazushi_ohata
0
150
iOSチームとAndroidチームでブランチ運用が違ったので整理してます
sansantech
PRO
0
140
信頼性に挑む中で拡張できる・得られる1人のスキルセットとは?
ken5scal
2
530
Shopifyアプリ開発における Shopifyの機能活用
sonatard
4
250
第1回 国土交通省 データコンペ参加者向け勉強会③- Snowflake x estie編 -
estie
0
130
TanStack Routerに移行するのかい しないのかい、どっちなんだい! / Are you going to migrate to TanStack Router or not? Which one is it?
kaminashi
0
590
Oracle Cloud Infrastructureデータベース・クラウド:各バージョンのサポート期間
oracle4engineer
PRO
28
13k
ExaDB-D dbaascli で出来ること
oracle4engineer
PRO
0
3.8k
CysharpのOSS群から見るModern C#の現在地
neuecc
2
3.4k
B2B SaaSから見た最近のC#/.NETの進化
sansantech
PRO
0
830
適材適所の技術選定 〜GraphQL・REST API・tRPC〜 / Optimal Technology Selection
kakehashi
1
470
DynamoDB でスロットリングが発生したとき_大盛りver/when_throttling_occurs_in_dynamodb_long
emiki
1
190
Featured
See All Featured
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
47
2.1k
Docker and Python
trallard
40
3.1k
The Language of Interfaces
destraynor
154
24k
No one is an island. Learnings from fostering a developers community.
thoeni
19
3k
Ruby is Unlike a Banana
tanoku
97
11k
Building a Modern Day E-commerce SEO Strategy
aleyda
38
6.9k
Making the Leap to Tech Lead
cromwellryan
133
8.9k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Optimising Largest Contentful Paint
csswizardry
33
2.9k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
27
4.3k
Designing Experiences People Love
moore
138
23k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
665
120k
Transcript
LangChainのDocument機能を使って 文書処理を柔軟にする 2023/10/28 第28回勉強会
自己紹介 • 名前: 西岡 賢一郎 ◦ Twitter: @ken_nishi ◦ note:
西岡賢一郎@研究者から経営者へ (https://note.com/kenichiro) ◦ YouTube: 【経営xデータサイエンスx開発】西岡 賢一郎のチャンネル (https://www.youtube.com/channel/UCpiskjqLv1AJg64jFCQIyBg) • 経歴 ◦ 東京大学で位置予測アルゴリズムを研究し博士 (学術) を取得 ◦ 東京大学の博士課程在学中にデータサイエンスをもとにしたサービスを提供する株式会社ト ライディアを設立 ◦ トライディアを別のIT会社に売却し、CTOとして3年半務め、2021年10月末にCTOを退職 ◦ CDPのスタートアップ (Sr. PdM)・株式会社データインフォームド (CEO)・株式会社ディース タッツ (CTO) ◦ 自社および他社のプロダクト開発チーム・データサイエンスチームの立ち上げ経験
本日のお話 • LangChainを使った分散処理 • LangChainのDocument Loader • デモ
LangChainを使った分散処理
ChatGPTのToken制限 • GPT-3.5 Turboでは4Kまたは16Kのtoken、GPT-4 では8Kまたは32Kのtokenを渡すことが可能 • 英語であれば1単語1tokenだが、日本語のtokenは文 字によるので、token数の推定が困難 • token数を確認するしたい場合はこちら
→ https://platform.openai.com/tokenizer • ticktokenというライブラリを使うことでtoken数を 調べることもできる ◦ ChatGPTでは「cl100k_base」という tokenizerを使用 ◦ 日本語のtoken数は英語に比べて多くなる傾 向にある • 長文を処理したい場合、Token数の制限にひっか かってしまう
長文の分散処理 • ChatGPTのtoken数制限を超える文書を処理したい場合、長文を分割して短い文章 単位で分散処理することが有効 • LangChainでは長文の分散処理方法として、Map Reduce, Refine, Map Rerankなど
が用意されている。 • 分散処理を利用することで、長文の要約や長文のQAができるようになる。
Map Reduce • 分割された文章をそれぞれ処理し (Map)、それぞれの結果をまとめて (Reduce)、まとめられた結果から最終的な回答を出す。 • Mapフェーズは独立した処理となるため、並列処理をすることが可能。 • 分散された分、ChatGPTの呼び出し回数が増える
(コストがかかる)。
Refine • 分割された文書を順番にChatGPTに処理させる。 • 直前の結果を入力に含めるのが特徴。 • 処理が独立していないため、Map Reduceより文脈の把握が得意。 • 逐次処理のため並列化はできない。また、文書の順番に影響を受ける。
Map Rerank • 分割された文書から、回答と回答に対する自信をスコアで出し、最高スコア となったものを回答として出す。 • 独立した処理となるため、並列処理が可能。Map ReduceよりもAPI呼び出し が少なくなる。 •
文書間の情報を組み合わせることができない。
LangChainのDocument Loader
Document Loader • そもそもChatGPTに処理させる文書が、ウェブペー ジやPDFなど単純なテキスト形式ではない場合は、 LangChainのDocument Loader (https://python.langchain.com/docs/integration s/document_loaders) を利用する。
• 100種以上のDocument Loaderが用意されている。 ◦ ArxivLoader: arXivから論文を取得する。 ◦ ConfluenceLoader: Conflunceのページを取 得する。 ◦ GitHubIssuesLoader: GitHubのIssueやPull Requestを取得する。 ◦ WikipediaLoader: Wikipediaの検索結果を取 得する。 ◦ YoutubeLoader: YouTubeの文字起こしを取 得する。
デモ • デモの内容 ◦ Token数をカウントする方法 ◦ Document Loader ◦ 長文の要約
◦ 長文のQA • ソースコード https://github.com/knishioka/machine-learning-workshop/blob/main/l angchain/question_and_summarize.ipynb