Closed11
LlamaIndexモジュールガイドを試してみる
もはや何度目かわからないけど、LlamaIndexやり直している。今回は一応これに従って。
今更だけど、「モジュールガイドを試してみる」と書きながらも、ドキュメントの他の箇所に飛んだりしてるので、もはやタイトルは意味がない感じ。
というかドキュメントの章立てが非常にわかりにくい・・・Understanding、Module Guides、Use Casesで同じ(完全に同じだったり、微妙に違ったりもある)ようなドキュメントあったりするしね。色々見ているうちに「あれ、これ別のところでやったなぁ」みたいな感に何度も出会う。
ドキュメント(の章立て)はもう少しわかりやすくなっていて欲しい。
ここまでで一通り作るための知識は得れたので、どうしようかなと思ったけど、一応軽く押さえておくか。ragas使いたいし。
所感
ざっと一通り試してみたけど、LlamaIndexの各モジュールやコンポーネントの概念がやっとわかってきた感じ。とりあえず実際にRAGを作って使い込んでみようというところ。
というところでざっとLlamaIndexのあくまでも個人的な感想。
- RAGというかドキュメント検索というところではLangChainより突っ込んだ部分で色々機能豊富だと感じた。
- ドキュメント・ノード・インデックスの作り方はいろいろな手法があって参考になりそう。ここはもう少し突っ込んでやりたい。
- とりあえずRecursive Retrieverはこのあと必ず触る。このためにLlamaIndexずっと触ってみたと言っても過言ではないぐらい。
- 正直なところ、あらゆる面でLangChainのほうがとっつきやすいと思う。モジュールなんかの概念も「まだ」わかりやすかったと思うし。LlamaIndexは結構わかりにくい。
- 何がわかりにくいって
as_〜
とか〜_context
みたいな高レベルAPI使うやつ。これは複数のモジュールを「跨ぐ」ようなイメージなのよね。個人的には書くのがめんどくさくてもモジュールは疎であって欲しい。 - そのせいでドキュメントも1つのモジュールごとにドキュメント読んで〜・・・みたいな進め方すると結構混乱する。コンポーネント間の関係とかをイメージしながらやりたいタイプの自分には結構しんどかった。
- 何がわかりにくいって
- メモリ(会話記憶)はチャットインタフェースとかエージェントとかでも重要だと思うんだけど、ここはLangChainに比べるとだいぶ足りない。外部メモリのインテグレーションはもっとあると良いなぁ。
- そういえばLangChainインテグレーションしてLangChainのメモリ機能を使うとかもあるんだけど、さすがにそれは茨の道になりそう。
- 評価もLangChainのほうがいろいろわかりやすかったなーという過去の記憶。ここは過渡期なのかもしれないが、少なくともLlamaIndexのネイティブなモジュールはちょっと辛そうと感じた。Ragas使っていきたい。
- ドキュメントの章立てが非常にわかりにくい。個人的にはこれが一番のネックだった。
- LangChainの場合、個人的には、周りが言うほど悪いとは思ってなくてドキュメントはむしろ豊富、というか、ある程度目的のドキュメントにはたどり着きやすかったイメージはある。
- それに対して、LlamaIndexは同じテーマのドキュメントが複数ある、しかも中身がちょっと違ってたり、別の章立てなのに全く同じだったりして、など、知りたいことに対してここ見れば全部載ってるという感じが全くしないので、他にもあるんじゃないか?みたいな感が常にあって正直しんどかった。
- さらにどんどん抽象化が進んでいる感がある・・・
- LangChainよりもコンポーネント間の関係が(あくまでも個人的には)曖昧な印象で抽象化度合いはもっと激しい気がするけど、そこにさらにLLama PackとかQuery Pipelineとかさらに抽象化するようなものが追加されている。
- LangChainがv0.1になってProduction-readyかつプラットフォーム化に進んでいるのに対して、LlamaIndexはまだそういう雰囲気を感じない。まだまだいろいろ変わっていきそう・・・
自分の場合は上で書いた通り、RAGの検索精度向上がLlamaIndexを触るモチベーションで、一通り触ってみた感じ、やはり複雑ではあるものの、いろいろ期待できそうな感は持てたと思う。
とりあえずこの辺をきっちり抑えておきたいかな。
このスクラップは2024/01/16にクローズされました