Llamaindexを使った開発とは?流れ、費用相場、開発事例を紹介
みなさん、膨大な社内文書について「ChatGPTに質問できたらいいのに……」と思ったことはありませんか?
そこで朗報です。月間20万ダウンロードを超えるPythonのライブラリ・Llamaindexを使えば、ChatGPTに社内のローカルナレッジや最新情報を学習&回答させられるんです!
当記事ではそんなLlamaindexの概要や、それを使った開発の手法・事例を紹介していきます。
最後まで読んでいただくと、社内用チャットボットの開発のハードルが下がるはずです。ぜひLlamaindexの底力をご覧ください。
Llamaindexとは
Llamaindexはデータの出し入れに特化した、Pythonのライブラリのひとつです。その機能はいわば「データの図書館」で、以下の2つに要約されます。
- データ(主にテキスト)を自身に格納する
- リクエストに応じて関連するデータを引き出す
このLlamaindexは生成AIの一種・LLM(大規模言語モデル)と組み合わせることで真価を発揮します。LLMに不足している最新の知識や事実を、Llamaindexが補ってくれるのです。
具体的には質問に関連するデータだけを検索して、プロンプトに埋め込む(RAG)ことでLLMにFew-shotで学習させます。
参考記事:検索により強化された生成 (RAG) | Prompt Engineering Guide
なお、Llamaindexについて詳しく知りたい方は、下記の記事を合わせてご確認ください。
→【Llamaindex】ChatGPTを思い通りに改造できる!?月間20万ダウンロードツールの使い方から実践まで
Llamaindexにできること
Llamaindexを使ってできることは下記の2つです。
- さまざまなデータと連携して、自身に格納できる
- 類似度検索ができる
これらLlamaindexの機能が具体的にどのようにすごいのか、LLMとどのように噛み合うのかを以下みていきましょう!
さまざまなデータと連携して、自身に格納できる
Llamaindexは自身の中に、さまざまな形式のデータが格納できます。データベースの定番SQLはもちろん、テキスト・PDF・CSV、そしてなんとAPIのデータまで扱えるのです。
さらにデータの保管方法も多種多様で、下記の4方式から選べます。
- ベクターストア:データの類似度をベクトルで表す方式
- リスト:データを順番に並べただけの方式
- ツリー:似たもの同士を近くの枝に置く、樹形図の方式
- キーワードテーブル:キーワードでタグ付けする方式
この4つのうちLLMとの連携時によく使うのは、ベクターストアです。Googleなど検索エンジンにも採用されている方式で、文章がそのまま格納できてしまいます。
類似度検索ができる
Llamaindexのベクターストアは、データを取りだす際の利便性にも優れています。
各データをベクトルで表現していて、その方向性が近い、つまり似ているもの同士を近くに集めているのがベクターストアの特徴です。これを備えたLlamaindexはクエリを渡すと、類似度検索を行って関連性の高いデータだけを瞬時に返してくれます。
この長所はLLMとの連携時に活きてきます。最新情報や事実のうち関連性の高いものだけをベクターストアから取り出して、トークンの消費が少ないベクトル形式のままプロンプトに埋め込めるのです。
Llamaindexを使った開発の流れ
ここからはLlamaindexとLLMを使って、社内用のAIツールを開発する際の流れを紹介します。まずは下記、開発進行の順序をご覧ください。
- 学習元データ or データソースの準備
- 学習元データの整形
- ベクターストアの構築
- LLMとの連携・検証
以降の見出しでは、より詳しい作業内容をお伝えします。開発に何が必要か、どのような注意点があるのかなどをみていきましょう!
学習元データ or データソースの準備
LlamaindexとLLMを繋ぐよりも前に、データの準備が最優先です。自社のシステム・サービス・文書など、プロンプトに埋め込みたいデータを用意しましょう。
まず下記の形式にあてはまるデータであれば、そのままLlamaindexに格納ができます。
- テキスト(.txt)
- ドキュメント(.docx)
- CSV
- SQL
さらに自社で運用しているX(Twitter)やSlackの内容は、API経由でLlamaindexへの取り込みが可能です。またランディングページやメールなどHTML形式のデータも、次に紹介する整形を行えばLlamaindexで使えますよ。
学習元データの整形
Llamaindexのベクターストアを使うのであれば、データ整形の手間はほぼ要りません。文字コードをUTF-8にして、全角半角などの表記ゆれを解消すれば整形は完了します。
ただHTML形式のデータを使う場合はもう一手間が必要です。HTMLタグの部分は学習に使えないので、整形の前に除去してプレーンテキストに変換しなくてはいけません。
ベクターストアの構築
データの準備・整形が終わり次第、Llamaindexのベクターストアにデータを格納していきます。
方法自体は簡単で、数行のPythonコードを実行するだけでベクターストアの構築が完了します。格納先についてはLlamaindex純正のベクターストアのほか、下記のような外部のベクトルデータベースも選択可能です。
- Pinecone:処理精度が高く、数十億のベクトルを10ミリ秒で検索できる
- Weaviate:オープンソースの検索エンジンで、自分でホストできる
- Chroma:オンラインメモリでも使える
このあたりは用途に応じて、使い分けるとよいでしょう。
参考記事:Vector Stores – LlamaIndex 🦙 0.7.9
LLMとの連携・検証
最後にLlamaindexとLLMを、API経由で連携させます。
このときに注意していただきたいのはLLM本体のAPI以外に、埋め込み用のAPIも要るという点です。埋め込み用のAPIを使うことで、トークンの消費が抑えられます。
ちなみにChatGPTの場合だと、以下2つのAPIが必須です。
- ChatGPT API:プロンプトを送受信する際に使う
- Embeddings API:データをベクトルとして埋め込む際に使う
連携体制が完成し次第、検証も行います。データベースの内容をLLMに回答させて、正誤判定を行うことでLlamaindexの動作を確認します。
参考記事:LlamaIndex で Text-to-SQL 100 本ノック! – Speaker Deck
Llamaindexを使った開発の費用相場
弊社ではLlamaindex搭載型AIツールの開発にあたって、プロトタイプ開発とソリューション開発の2プランを用意しております。それぞれの費用相場や開発期間については、下表をご覧ください。
プロトタイプ開発 | ソリューション開発 | |
---|---|---|
費用相場(総額) | 3,600,000 ~ 4,800,000 円 | 個別お見積 |
期間 | 3ヶ月 | 4ヶ月 ~ |
開発手法 | ウォーターフォール方式 | ハイブリッド方式 (設計&検証はウォーターフォール方式で、各機能の開発はアジャイル方式) |
開発できるもの | 既存の基盤モデルを使った、社内向けAIツール | 基盤モデルまで特注の、社外向けAIサービス |
内容 | ・学習元データクレンジング ・自社データを学習したチャットボット開発 ・AIと自社システムの連携 ・業務のAI化 | ・AI基盤開発 ・Web開発 ・ネイティブアプリ開発 ・クラウドインフラ開発 |
この2プランのうち、おすすめはローコスト・短期間で取り組めるプロトタイプ開発です。まずは社内業務のAI化・DXからお試しください。
なお、開発費用を抑える方法について詳しく知りたい方は、下記の記事を合わせてご確認ください。
→生成AIツールの開発費用が高い!コストを下げる2つの方法をご紹介
Llamaindexの開発事例3選
ここからはLlamaindexを使ったAIツールの開発事例を3つ紹介していきます。3つともChatGPTと組み合わせたチャットボットではあるものの、それぞれ工夫したポイントや開発のねらいが違います。ですので以下を読めば、社内用チャットボット開発のヒントが得られるはずです。
自社サービスのQ&Aツール
GMOのグループ研究開発本部はLlamaindexとChatGPTを使って、自社のVPSサービスConohaのAPIについて答えてくれるQ&Aツールを開発しています。その処理フローは以下のとおりです。
上記の図で注目していただきたいのがLlamaindexの下部、Facebook(現Meta)製のベクトルデータベース「Faiss」の箇所です。Llamaindexに備え付けのベクターストアの代わりにFaissを使うことで、データベースの容量を1/3に抑えています。
参考記事:Llamaindex を用いた社内文書の ChatGPT QA ツールをチューニングする – GMOインターネットグループ グループ研究開発本部
ブログのQ&Aチャットボット
Llamaindexを使えば、ChatGPTにブログの内容を答えさせることもできます。以下に示すのは、株式会社システムサーバーが開発したブログのQ&Aチャットボットの処理フローです。
このようにMessaging APIを採用したことで、LINEのトークルーム上での質疑応答を実現しています。ドメイン登録などMessaging APIを使うための準備に手間がかかったそうですが、それでも1時間程度で開発が完了したとのことです。
参考記事:ChatGPT API と LlamaIndex でブログのQ&A Chatbotを作ってみた
取扱説明書の質問ボット
Web制作を請け負っている株式会社GIGでも、試験的にLlamaindex搭載型のチャットボットを開発しています。
下記の参考記事では、LlamaindexにTANITAの体重計の説明書PDFを格納したのち、独自の機能「乗るピタ」について連携先のChatGPTに質問しています。見事に正しい説明と補足が得られていました。
株式会社GIGの事例のようにLlamaindexとChatGPTを組み合わせれば、コンテンツの制作時に必要な専門知識へ一瞬でアクセスができるはずです。
参考記事:流行りのAIツールで質問botを作ってみた【GPT-4 ×LlamaIndex】
なお、AIチャットボットについて詳しく知りたい方は、下記の記事を合わせてご確認ください。
→AIチャットボットの作り方とは?PythonやChatGPTなど6種類の作り方を徹底解説!
Llamaindexなら高精度なチャットボットが開発できる
当記事ではLLMの弱点が補えるPythonのライブラリ・Llamaindexについて解説してきました。もう一度、Llamaindexにできることを以下に示します。
- さまざまなデータと連携して、自身に格納できる
- 類似度検索ができる
このような強みをもつLlamaindexを使えば、API経由でLLMに最新情報や事実が示せます。専門知識や社外秘について回答できるチャットボットを開発したい場合は、Llamaindexがおすすめです。
ちなみに弊社でもその開発を請け負っております。チャットボットを導入してみたいということであればぜひ、無料相談をお試しください。
生成系AIの業務活用なら!
・生成系AIを活用したPoC開発
・生成系AIのコンサルティング
・システム間API連携