1.2K Views
March 07, 25
スライド概要
エンジニア @ユニークビジョン株式会社
LINE API リファレンスの RAG を作ってみた 野⽥
⾃⼰紹介 野⽥(@nodananodanado) ● ユニークビジョン株式会社でエンジニアをしています ● 昨年まで LINE を活⽤したキャンペーン構築システム 「Beluga キャンペーン for LINE」の開発エンジニア をしていました! ● 趣味は将棋です 👉
動機 ● 弊社ではわからないこと、知りたいこと、を雑に投げると誰かが回答してく れる Slack チャンネルが存在します ● プロダクトについての質問だけではなく、関連する LINE の API の仕様につ いての質問が投げられることもあります ○ Messaging API や LINE ログイン API についての質問が多いです
Slack チャンネルの様⼦
⾃動化したい! ● Slack の返信だと即時性がない😢 ● なんとか⾃動化できないか? ● 今話題の Deep Research なら検索もしてくれるし良さそう!😁
Deep Research では答えられない質問がありました😢 正しくは 5000 ⽂字!
なぜ答えられないか? ● 答えられない要因を 2 つ推測しました 1. 参照している情報の中に古い情報が混ざっている 2. 動的な DOM 操作後の HTML を取得できていない
1. 参照している情報の中に古い情報が混ざっている ● Deep Research では LLM が参照した情報源が提供されます ● 先ほどの例では 2018 年の Qiita 記事が情報源になっていました ● 調べてみるとテキストメッセージの最⼤⽂字数は 2020 年 5 ⽉に変更されて おり、古い情報を参照していることがわかりました↓
2. 動的な DOM 操作後の HTML を取得できていない ● テキストメッセージの最⼤⽂字数についての記述は Messaging API リファレ ンス > テキストメッセージ にある ● https://developers.line.biz/ja/reference/messaging-api/#text-message に 直接アクセスして取得できる HTML にはその情報が含まれない ● JavaScript が動的に DOM 操作を⾏っている
考えたこと ● 答えられない要因(再掲) 1. 参照している情報の中に古い情報が混ざっている 2. 動的な DOM 操作後の HTML を取得できていない ● 1. 最新のリファレンス に 2. 適切な前処理 をした RAG を作成すれば良いので はないか? ● Retrieval Augmented Generation ○ 検索拡張⽣成
(Naiveな)RAG のアーキテクチャ ユーザー ⽂書 ベクトル DB アプリケーション LLM
(Naiveな)RAG のアーキテクチャ ユーザー ①事前準備 ベクトル化 ⽂書 ベクトル DB アプリケーション LLM
(Naiveな)RAG のアーキテクチャ ②検索 ユーザー ①質問 ②検索 ⽂書 ベクトル DB アプリケーション LLM
(Naiveな)RAG のアーキテクチャ ②検索 ユーザー ①質問 ②検索 ③検索結果 ⽂書 ベクトル DB アプリケーション ④質問 + 検索結果 LLM
(Naiveな)RAG のアーキテクチャ ②検索 ユーザー ①質問 ⽂書 ベクトル DB ⑥回答 ②検索 ⑤回答 ③検索結果 ④質問 + 検索結果 アプリケーション LLM
今回の対象は Messaging API リファレンス! ユーザー Messaging API リファレンス ⽂書 ベクトル DB アプリケーション LLM
前処理の⼯夫 ① JavaScript による DOM 操作後の HTML を取得 ② <head> やサイドバーなどの要素を削除 ユーザー ③ HTML を Markdown 化 ④ Markdown の⾒出しごとに重複を削除 ベクトル化 ⽂書 ベクトル DB アプリケーション LLM
各種モデル‧ベクトルDB ‧埋め込みモデルとして text-embedding-3-small ユーザー ‧ベクトルDBとして FAISS ⽣成モデルとして をそれぞれ利⽤しました GPT-4o を利⽤しました ①質問 ベクトル化 ⽂書 ベクトル DB ⑥回答 ②検索 ⑤回答 ③検索結果 ④質問 + 検索結果 アプリケーション LLM
(Naiveな)RAG のアーキテクチャ ②検索 ①事前準備 ①質問 ベクトル化 ⽂書 ユーザー ベクトル DB ⑥回答 ②検索 ⑤回答 ③検索結果 ④質問 + 検索結果 アプリケーション LLM
上⼿くいくのでしょうか...?
結果 ● 無事、正しく答えてくれる RAG ができました! ○ 前処理の⼯夫をしなかった場合上⼿くいきませんでした ��
いろいろな質問に答えられます ��
感想 ● LINE の公式リファレンスは信頼できる唯⼀の情報源! ● RAG を作る上では前処理がとても⼤事! ● この実装だとリファレンスが更新されるたびにドキュメントの取得と前処理 をする必要があるため、実⽤化は⾒送りました😢 ○ (リファレンスの検索性が⾼くなるととても嬉しいな...)
ご清聴ありがとうございました!