Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
LangChainのDocument機能を使って文書処理を柔軟にする
Search
西岡 賢一郎 (Kenichiro Nishioka)
October 27, 2023
Technology
0
1.2k
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)
Claude Codeを使った情報整理術
knishioka
0
11
Claude Skillsで"仕事の型"を配布する
knishioka
0
74
Claude Agent SDKで始める実践的AIエージェント開発
knishioka
0
85
AIがAIを拡張する時代へ ~Claude Codeで実現する高品質文書作成~
knishioka
0
110
MLflow × LLM 生成AI時代の実験管理とリスク低減
knishioka
0
130
Conductor: Git Worktreeで実現する並列AIコーディング
knishioka
0
91
ローカルLLMでファインチューニング
knishioka
0
1.9k
自作MCPサーバ入門
knishioka
0
93
成功と失敗の実像と生成AI時代の展望
knishioka
0
96
Other Decks in Technology
See All in Technology
障害対応訓練、その前に
coconala_engineer
0
190
【U/Day Tokyo 2025】Cygames流 最新スマートフォンゲームの技術設計 〜『Shadowverse: Worlds Beyond』におけるアーキテクチャ再設計の挑戦~
cygames
PRO
2
1.4k
Strands AgentsとNova 2 SonicでS2Sを実践してみた
yama3133
1
1.7k
Oracle Database@AWS:サービス概要のご紹介
oracle4engineer
PRO
1
400
意外と知らない状態遷移テストの世界
nihonbuson
PRO
1
230
株式会社ビザスク_AI__Engineering_Summit_Tokyo_2025_登壇資料.pdf
eikohashiba
1
100
AI with TiDD
shiraji
1
270
100以上の新規コネクタ提供を可能にしたアーキテクチャ
ooyukioo
0
240
20251222_next_js_cache__1_.pdf
sutetotanuki
0
170
MariaDB Connector/C のcaching_sha2_passwordプラグインの仕様について
boro1234
0
1k
AWS運用を効率化する!AWS Organizationsを軸にした一元管理の実践/nikkei-tech-talk-202512
nikkei_engineer_recruiting
0
170
さくらのクラウド開発ふりかえり2025
kazeburo
2
740
Featured
See All Featured
What’s in a name? Adding method to the madness
productmarketing
PRO
24
3.8k
30 Presentation Tips
portentint
PRO
1
170
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Rebuilding a faster, lazier Slack
samanthasiow
85
9.3k
How GitHub (no longer) Works
holman
316
140k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
9.8k
BBQ
matthewcrist
89
9.9k
Are puppies a ranking factor?
jonoalderson
0
2.4k
The untapped power of vector embeddings
frankvandijk
1
1.5k
Everyday Curiosity
cassininazir
0
110
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
130
Heart Work Chapter 1 - Part 1
lfama
PRO
3
35k
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