【要約】token消化ではなく、記事のご縁を可視化!さくらのAI Engine RAGでチャレンジ参加記事の相関図を描いてみた🌸 [Zenn_Python] | Summary by TechDistill
> Source: Zenn_Python
Execute Primary Source
// Problem
筆者は、Qiitaのキャンペーン記事における「いいね数」という指標だけでは、記事同士の技術的な関連性を十分に捉えられないという課題に直面した。既存の指標では、個別の記事の熱量はわかるが、記事間の繋がりは見えない。具体的には以下の問題がある。
- ・「いいね数」は単一記事の評価を示すが、記事間の文脈的な繋がりを示さない。
- ・RAGの検索結果はチャンク単位で返るため、記事単位の相関を出すには重複排除が必要。
- ・埋め込み処理が非同期であるため、検索可能になるまでの待機制御が求められる。
// Approach
筆者は、RAGの「検索」機能を、回答生成ではなく「意味的な距離の計測」に転用するアプローチを採用した。記事同士の近さをコサイン距離で算出し、グラフ構造として可視化する。具体的な手順は以下の通りである。
- ・Qiita APIを用いて「さくらのAI」タグの記事を収集。
- ・さくらのAI EngineのRAG APIへ記事本文をアップロード。
- ・
multilingual-e5-largeを用いてベクトル化し、コサイン距離を算出。 - ・重複排除を行い、記事単位の近傍記事をMermaid形式の相関図として出力。
- ・実行後にドキュメントを削除し、保持課金を回避。
// Result
筆者は、12件の記事から15本のエッジを持つ相関図を生成し、以下の知見を得た。人気と話題の広がりは別物であることが定量的に示された。
- ・「いいね数」と「話題のハブ(次数)」は必ずしも一致しない。
- ・キャンペーンのメタ的な話題が、技術スタックを問わずハブになりやすい。
- ・RAGの検索機能を、機能説明文からの記事探索の入口としても活用可能である。
Senior Engineer Insight
> RAGの検索機能を「類似度判定器」として再定義する発想は、ナレッジグラフ構築において極めて実用的だ。ただし、実運用では以下の設計が重要となる。
- ・チャンク単位の検索結果を記事単位に集約するロジックの精度。
- ・非同期処理に伴うポーリング制御の堅牢性。
- ・ドキュメント保持による従量課金のライフサイクル管理。