LINEヤフー Tech Blog

LINEヤフー株式会社のサービスを支える、技術・開発文化を発信しています。

ベクターデータベースとAgent SkillsでRAGシステムを作ろう! - 全開発者向けワークショップ開催レポート

こんにちは!モバイルデベロッパーエクスペリエンスチームの@giginetです。普段はLINE iOSアプリを中心に、ビルドシステムや開発環境の整備、開発者体験向上のための仕事をしています。

先日、LINEヤフー社内で行われたOrchestration Development Workshopにおいて、大量のMarkdownを検索する簡易なRAGシステムの構築と、Agent Skillsを活用した検索体験の向上というトピックで講師をしました。

本記事では、そのワークショップの内容をお伝えします。

定期的に開催されているODWは今回で5回目の開催となります。以前の開催は過去のレポートをご覧ください。

なぜRAG基盤が必要なのか

RAG(Retrieval-Augmented Generation)は、AIエージェントが外部の知識を参照することで、より正確で信頼性の高い応答を生成するための手法です。現在、LINE開発のチームでは、開発者向けのドキュメントやガイドラインを多く保持しています。

大規模なアプリの開発では、開発上の困りが日々発生します。例えば、新しい依存関係を導入したい、ビルドエラーに遭遇した、アーキテクチャにどう遵守すれば良いかわからないなど、ルールの把握や情報の検索に時間がかかることがあります。

詳しいメンバーに聞いたり、問い合わせをして解決することもできますが、問い合わせる方、答える方双方にとって時間や労力を消費します。そこで大量のデータを自然言語で検索したり、AIエージェントが効率的に利用できる仕組みが必要でした。

今回のワークショップでは、そのような状況を想定して、大量の自然言語で書かれたドキュメントを効率よくAIエージェントから参照する方法を模索しました。

ChromaDBを用いた簡易RAGシステムの構築

RAGシステム構築のために、今回はChromaDBというオープンソースのベクターデータベース実装を利用しました。ChromaDBはローカルのみで動作し、Python、JavaScript用のクライアントライブラリも提供されているため、データの登録も簡単です。

今回のワークショップでは、正規化された大量のMarkdownドキュメントを扱う題材としてSwift EvolutionというSwift言語の仕様提案書を使うことにしました。

Swift Evolutionは、オープンソースSwiftの開発にあたり、言語仕様や議論の過程などが記述されている技術文章です。約500件ほどの分量があります。さらにサンプルとして優れていたのは、ある程度フォーマットが統一されており、SE-0400のようなIDが振られていたり、実装状況や著者情報などのメタデータが含まれている点です。

ワークショップの前半では、ローカルでSwift Evolutionを登録したデータベースを構築し、ChromaDBを利用するMCPツール経由でコーディングエージェント(Claude Code)から参照するという流れを体験しました。

Coding Agentからプロポーザルが参照できた

Agent Skillsを使ったRAGの活用

次にAgent Skillsを活用して、さらに利便性を高めるための方法を紹介しました。

MCPの仕組みではchroma-mcpが提供するツールの使い方、「ベクターデータベースを検索するにはこのツールを使う」という知識しか、AIエージェントのコンテキストに共有されません。

そのため、データベースからSwift Evolutionの内容を検索するには、その情報がデータベースに含まれていること、含まれているコレクションやメタデータの利用方法などをエージェントに伝える必要があります。

今回は、「Swift Evolutionの知識を検索するにはChromaDBをMCP経由で参照する」という知識を持ったSkillを作成することで、MCPツールの利用を簡略化する工夫を紹介しました。

---
name: searching-swift-evolution
description: Search Swift Evolution proposals (SE-XXX/ST-XXX) using the vector database to answer Swift language specification questions.
---

# Searching Swift Evolution

Search Swift Evolution proposals via Chroma MCP.

## Database

- **Collection**: `swift-evolution`
- **Document IDs**: Proposal numbers (e.g., `SE-0255`, `ST-0001`)
- **Metadata**: `Status` (implementation status), `Authors`, etc.

## Usage

- Query in English for best results
- Use `Status` metadata to check implementation status
- If output truncated, reduce `n_results`

これにより「SE-0500について調べて」といった最低限の指示で、Swift Evolutionの内容を検索できるようになりました!

Skillにデータベースの使い方を教え、MCPツールの呼び出しを簡略化した

また、本ワークショップでは、Agent Skillsの一般的な動作メカニズムや、ベストプラクティス、実践的なスキルの作り方についても解説しました。

一般的なAgent Skillsの動作原理を深掘り

ワークショップの後半は、この仕組みを使い、それぞれの参加者が自分たちの用意したMarkdown文書をデータベース化し、適切な情報が検索できるようにスキルを作成しました。

また、このデータベースを実際に社内クラウド、Flava上にデプロイし、他のメンバーと共有できるようにする手法も紹介しました。

RAGシステムの応用と今後の展望

このRAGシステムはどのように応用できるでしょうか。

最初に考えられるのが、自然言語検索によるドキュメント類の検索精度改善です。前述のように、開発者が自然言語で開発面での疑問点を問い合わせることができるだけで、ドキュメントの参照性は大きく向上します。

その他、Agent Skillsや、Claude CodeのSubagentの仕組みと連携させることで、コード生成やレビュープロセスでも効果が期待できます。コーディングエージェントが自発的にドキュメントを検索できるようになることで、その領域に関連した知識をRAGから取得し、それを元にコード生成やレビューを行わせることもできそうです。

全社ワークショップを開催して

本ワークショップは、講師ほか数名の登壇者(Mock Participants)がワークショップの内容を実践し、オンラインで配信しています。聴講者としては1,000人以上が参加し、大変盛況なものとなりました(めっちゃ緊張した……)。

聴講者が多いため、それぞれの習熟度は様々。そんな中、本ワークショップは、エッセンシャルな知識を持ち帰ってもらい、それを体験してもらうことを意識して設計しました。良いワークショップのためには、この講義パートと実践パートのバランスが重要です。実践中心だと、本質を理解しないまま手順だけを追いかけることになりがちですし、講義中心だと、話を聞き続けるのは飽きてしまいます。

そのバランスを意識して構成したところ、結果として、講義パートではAgent Skillsの一般的な知識をコンパクトにお伝えでき、実践パートでは各Mock Participantsが実際の業務に使われているドキュメントを持ち寄ったことで、応用例を見せられたなど、上手く設計できたと感じています。

LINEアプリ開発においても、本稿で紹介した以外にも様々なAIエージェントの活用を進めています。もっと知りたい方は、以下の記事もご覧ください。