概要
LlamaindexとLangchainは,GPTのような大規模言語モデル(LLM)を活用するためのライブラリです.正直僕はLllamaindexしか使ったことがなく,それぞれの違いについてよく理解していなかったので,記事にします.
Llamaindex
結論から言うと,Lllamaindexは独自のデータを使ったQAチャットができるLLMを簡単に作成できるライブラリです.Lllamaindexも内部的にはLangchainを使っているみたいです.
そもそも,LLMのカスタマイズするためのパラダイムには主に2種類があります.
- LLMをFine-tuningする
- 入力プロンプトにコンテキストを埋め込む
Llamaindexは後者である「入力プロンプトにコンテキストを埋め込む」を,より性能よく,効率よく,安価に行うために様々なデータ取り込みやインデックス化を実施することが可能です.
Llamaindexでは,以下のようなインデックス構造が提供されています.
インデックス名 | 説明 |
---|---|
GPTListIndex | 単にNodeのリストを保持し,クエリ時は先頭から順次処理し,それぞれの出力を合成 |
GPTVectorStoreIndex | 各Nodeに対応する埋め込みベクトルと共に順序付けせずに保持し,埋め込みベクトルを使用してNodeを抽出し,それぞれの出力を合成 |
GPTTreeIndex | ノードをツリー構造にして保持し,クエリ時はRootから探索して,使用するノードを決め,その出力を合成 |
GPTKeywordTableIndex | 各Nodeからキーワードを抽出し,キーワードに対するNodeをマッピングして保持し,クエリ時はクエリのキーワードを使ってNodeを選択し,それぞれのノードの出力を合成 |
時間があったら別のタイミングでindexの種類についても記事にしたいと思います.
参考
Langchain
Langchainは,LLMをwebサービスや自作のAPI,プログラムの実行環境,ターミナルなどに接続するライブラリです.
Langchainは,LLMにさまざまな機能を付け加えるのに便利なものです.Langchainでは以下のようなコンポーネントが提供されています.
コンポーネント | 説明 |
---|---|
Models | OpenAIをはじめとした様々な言語モデル・チャットモデル・エンべディングモデルを切り替えたり、組み合わせたりすることができる |
Prompt | プロンプトの管理・最適化・シリアル化などをすることができる |
Indexes | PDFやCSVなどの外部データを用いて回答を生成することができる |
Chains | 複数のプロンプト入力を実行することができる |
Agents | 言語モデルに渡されたツールを用いて、モデル自体が次にどのようなアクションを取るかを決定し、実行し、観測し、完了するまで繰り返すことができる |
Memory | ChainsやAgentsの内部における状態保持をすることができる |
参考
- LangChainの概要と使い方|サクッと始めるプロンプトエンジニアリング【LangChain / ChatGPT】
- ChatGPTとLangChainで何でもできるAIを作る
- LangChain Documentation
最後に
Lllamaindex とLangchainの違いについて簡単に記事にしてみました.
記事にする前は,全く別々の存在なのかと思っていたら,実は兄弟みたいな関係だったんだと言うことに気がつきました.
誰かの役に立てれば幸いです.