24.3K Views
August 25, 25
スライド概要
ソースコードから目的の情報を得ることは簡単ではありませんが、特定の手法を用いることで効率的に情報を取得できます。まず、ソースコードを関数やクラス単位に分割し、それを数値列に変換します。質問内容も数値列に変換して類似度を計算し、その結果をもとに回答を得る流れを説明します。また、LLMを活用することで検索クエリの改善や、情報取得の結果を精度高くする手法についても触れます。
Software engineer at Mercari. Devin Expert
LLMを活⽤してソースコードから⽬的の情報を RAGする Kuu(Kume Fumiya) / AI駆動開発勉強会 名古屋支部 #1 1
⾃⼰紹介 - Kuu ● Software Engineer@株式会社メルカリ ○ AI活⽤推進担当💪 ● Devin Expert ● 趣味 ○ 旅⾏ ○ Vibe Coding ○ ⾞|船のドライブ 2
⾃⼰紹介 - Kuu ● 3
ソースコードから⽬的の情報を得るとは ● Cursor のIndex ○ Read/Write したいファイルを⾒つける ● 質問に対して回答 ○ 質問⽂が指しているコードを⾒つける 4
⼀番シンプルな⽬的のコードを⾒つける⽅法 5
シンプルなテキスト探索での問題点 ● 誤検知/取り逃がしの増加 ● 関連度で並び替えが出来ない ● 計算量が多い ○ O(N) で規模/頻度に⽐例してつらくなる ■ Nは⽂字数 6
Cursor などでよく⾒られる検索⽅法 ● ⼿順 ○ ソースコードを関数/クラス単位に分割 ○ 分割単位 + メタデータを数字列(Vector)に変換 ○ 質問⽂をVectorに変換しつつ類似度を計算 ○ 類似度ランキング上位のものを回答として採⽤ ● 計算量 ○ O(log N · d) ■ NはChunkの件数 ■ dはVectorの次元数 7
AIによるコード解析の流れ ソースコードの分割 数値列に変換 質問を数値列に変換 類似度順に並べる 8
LLMの活⽤ポイント ● 検索クエリの改善 ① ○ 単語の表記ずれの補正など ● インデックス時にLLMでの説明も加える ● 静的解析が難しい時に、LLMにfallbackする ② ● 情報の取得結果をLLMが活⽤して精度をあげる ① https://people.eecs.berkeley.edu/~ksen/papers/ncs.pdf ② https://thakur.cs.ucdavis.edu/assets/pubs/SOAP2024.pdf?utm_source=chatgpt.com 9
AIによるコード解析の流れ with LLM ソースコードの分割 数値列に変換 質問を数値列に変換 類似度順に並べる 静的解析時に LLMの 力も借りる LLMで説明も含める 質問をLLMを利用して 改善 結果をLLMが活用 10
まとめ ● ソースコードから⽬的の情報を得るのは簡単ではない ● ⼯夫で情報を取得する計算量を⼤幅に削減できる ● LLMをLLMを活⽤するために、活⽤するといいぞ! 11
12