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
1k
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)
DeepSeekを使ったローカルLLM構築
knishioka
0
88
業務ツールをAIエージェントとつなぐ - Composio
knishioka
0
150
LangGraphを使ったHuman in the loop
knishioka
0
180
AIシステムの品質と成功率を向上させるReflection
knishioka
0
32
LangGraph Templatesによる効率的なワークフロー構築
knishioka
0
120
AIエージェントの開発に特化した統合開発環境 LangGraph Studio
knishioka
0
170
LangGraphを用いたAIアプリケーションにおけるメモリ永続化の実践
knishioka
1
450
Text-to-SQLをLangSmithで評価
knishioka
0
210
効果的なLLM評価法 LangSmithの技術と実践
knishioka
1
410
Other Decks in Technology
See All in Technology
わたしがEMとして入社した「最初の100日」の過ごし方 / EMConfJp2025
daiksy
13
4.3k
役員・マネージャー・著者・エンジニアそれぞれの立場から見たAWS認定資格
nrinetcom
PRO
3
4.5k
開発組織を進化させる!AWSで実践するチームトポロジー
iwamot
0
120
手を動かしてレベルアップしよう!
maruto
0
130
コンテナサプライチェーンセキュリティ
kyohmizu
1
130
日経のデータベース事業とElasticsearch
hinatades
PRO
0
200
いまからでも遅くない!コンテナでWebアプリを動かしてみよう!コンテナハンズオン編
nomu
0
110
AWS Well-Architected Frameworkで学ぶAmazon ECSのセキュリティ対策
umekou
2
120
ESXi で仮想化した ARM 環境で LLM を動作させてみるぞ
unnowataru
0
160
EMConf JP 2025 懇親会LT / EMConf JP 2025 social gathering
sugamasao
2
180
AIエージェント元年@日本生成AIユーザ会
shukob
0
110
CDKのコードを書く環境を作りました with Amazon Q
nobuhitomorioka
1
150
Featured
See All Featured
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
21
2.5k
Producing Creativity
orderedlist
PRO
344
40k
A Tale of Four Properties
chriscoyier
158
23k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
3.7k
Faster Mobile Websites
deanohume
306
31k
Designing Experiences People Love
moore
140
23k
Automating Front-end Workflow
addyosmani
1368
200k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
33
2.1k
Why Our Code Smells
bkeepers
PRO
336
57k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
7
640
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
129
19k
The Power of CSS Pseudo Elements
geoffreycrofte
75
5.5k
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