最近、というかこのGW中はRAGしかやってません。
そんなRAGをやっているんですが、実はLlamaIndexについてはちゃんと勉強してなかったことに気がついたので、今更ながら復習がてら勉強しようと思います。
LlamaIndex
LlamaIndexを調べると下記のような説明が書かれています。
LlamaIndex is the leading data framework for building LLM applications
ドキュメントはこちらです。
LangChainとLlamaIndex
RAGをはじめとするLLMアプリケーションを開発する際に、多くの人はLangChainなどのフレームワークを使用すると思います。 中でもRAGの実装例をちょっと探すと、大体LangChainかLlamaIndexが使われていると思います。
LangChainは、LLMを使って開発するための汎用フレームワークです。 LlamaIndexはどちらかというとRAGなど特定のシステムを構築するためのフレームワークです。
その他Haystackといったフレームワークもあったりしますので、興味がある方は調べてみると良いかもしれません。
LlamaIndexはRAGなどを構築することを想定しているだけあって関連機能が充実しています。 新しいRAGの技法などの実装例や機能も提供されていたりするので、個人的に便利に感じています。
RAGを作る
LlamaIndexのドキュメントによればRAGには5つのステージがあるとのことです。
- Loading
- Indexing
- Storing
- Querying
- Evaluation
作る
最初のアプリはこちらを参考に作ってみます。
これをGoogle Colabでぱっと実行してみるとこんな感じです。
ただし、メインのコードはこれだけです。
from llama_index.core import VectorStoreIndex, SimpleDirectoryReader documents = SimpleDirectoryReader("data").load_data() index = VectorStoreIndex.from_documents(documents) # query query_engine = index.as_query_engine() response = query_engine.query("What did the author do growing up?") print(response)
SimpleDirectoryReader
でデータをロードし、VectorStoreIndex
でインデクシングをし、query_engine.query
でクエリを送信している感じです。
作るだけなら簡単ですね。 使ったノートブックはこちらです。
参考文献
この記事を書くにあたって下記の文献を参考にさせていただきました。
- LlamaIndex, Data Framework for LLM Applications
- LlamaIndex - LlamaIndex
- LLM 対応自然言語処理フレームワークをいろいろ触ってテーブルデータで試してみたかった - GMOインターネットグループ グループ研究開発本部
- Comparing LangChain and LlamaIndex with 4 tasks | by Ming | Medium
感想
以上、簡単ですがLlamaIndexを使ってみました。 実際に作ってみましたが、RAGをつくるだけならめちゃくちゃ簡単ですね。