見出し画像

LangChain Templatesを覗いてみた

2023年10月末くらいだったと思いますが、LangChainにLangChain Templatesというのがリリースされています。
これは、LangChainを使ったLLMアプリケーションを簡単かつ迅速に構築するためのリファレンスアーキテクチャーのセットのようで、LangServeに対しては、非常に簡単にデプロイできるようなフォーマットで提供されているようです。

ということで、本日は、そんなLangChain Templatesには、どんなものが登録されているのかを確認してみました。
(記事作成時点の2023年12月3日時点のものとなります。)

出典:LangChain Templates

現在登録されているテンプレートは、76種類あります。
最新は、下記のリンクより確認してください。
https://templates.langchain.com/

ざっと見ていくと、一番多いのが「rag」関連で、現在45種類が登録されているようです。
ついで、「research」が7種類、「extraction」が5種類、「sql」が4種類、「query」も4種類、「chatbot」が3種類、「agent(s)」が2種類。
それ以外では、「search」、「evaluation」、「question-answering」、「Validation」、「summarization」がそれぞれ1種類あります。

RAG(Retrieval-Augmented Generation)

やっぱりというか、RAG(検索拡張生成)が一番多いですね。
ベクトル検索に何を使うかとか、検索手法としてHyDE(Hypothetical Document Embeddings)を使う方法とかのテンプレートが登録されていました。

イチからRAGを組むよりも、テンプレートを参考に、自身のコードに取り入れていくのがいいのかなと感じました。(もちろん、そのまま使ってLangServeへというのが一番簡単なんでしょうね。)

Research

調査を行うエージェントという枠組みなんでしょうが、一部、RAGに分類してもいいと思われるものもあるのかなと感じました。(それとも研究という枠組みなのかな?)

「skeleton-of-thought」というテンプレートは、元の論文を見る感じからすすると、まず生成する文章の骨格を生成し、次に生成された骨格の各セクションを生成するという流れを実現するようです。この時に、各セクションの文章生成を並列処理で行うことで、大規模なドキュメントの生成を短時間で実現しようというもののようです。

個人的には、骨格作って、セクション毎に生成というのはイメージしていましたが、並列処理で時短を狙うという発想は面白いし、利用シーンによっては効果あるなと感じました。課題は、並列して生成した文章を一つにまとめた際の整合性チェックでしょうかね。

Extraction

情報抽出という枠組みでしょうかね。非構造な文章から構造化された情報を抽出するためのテンプレートのようです。

ユーザインターフェースのより入り口に近いところ(より現実社会の情報)は、非構造データであることの方が自然なので、この領域は、今後、もっといろんな手法が出てくるんじゃないかなと個人的には期待しています。
単なるチャットボットのやり取りでも、表面的にはチャットでやり取りしているようで、中では、入力文からいろんな構造化データを抽出して収集したりということが起きるんじゃないですかね。

SQL

こちらの分類は、想像通りで、自然言語でデータベースに問い合わせを行うテンプレートのようです。載っていたテンプレートでは、ローカルLLMを用いて、自然言語の入力からSQL文を生成して、データベースに問い合わせを行うという感じのようでした。

実際のユースケースとしてはどうなんでしょうね。
確かに自然言語で問い合わせして、データベース情報を引き出せたらなと思うことはあっても、SQL文って、普通のコーディングで、ある程度は動的に生成できたりするし、誤ったSQL文が流れてしまって、エラーになったり、正しくない問い合わせ結果が得られたりということを考えると、若干、実用化には二の足を踏む領域な気がします。。

とはいえ、「研究」は必要な領域でしょうね。こういった要素技術の研究の積み重ねが次のブレイクスルーに繋がるのでしょうから。

Query

こちらは、上記の「SQL」に似ていますが、SQL文ではないQueryという枠組みでしょうかね。

詳しくないので細かくは書けそうにないですが、NEO4Jグラフデータベースへの問い合わせを自然言語で実現しようという試みのテンプレートのようです。

Chatbot

この枠組みは、チャットボットのサンプルテンプレートのような気がします。特定のふるまいをするチャットボットサンプルという感じです。

気になったのは、「pii-protected-chatbot」で、中身を見た感じからすると、Microsoft Presidio Analyzerを呼び出して、個人を特定する情報に関してフラグを付けて、LLMに流さないようにガードをしているようです。
LLMへのINPUTが学習に使われるのか、もしくは、その情報がどのように保管され、どういった閲覧制限があるのかという部分は、「安心安全」につながる話なので、こういうテンプレートは、そういうことへのインサイトとしてもありがたいですね。

その他

それ以外にも、Agentに関するテンプレートなどもありましたが、個別の話になっていきそうなので、本日はここまでにしたいと思います。

とはいえ、サイトを眺めて、気になるものを掘り下げてみるだけでも勉強にもなるし、新たなインサイトが得られる部分もあるので、興味とお時間のある人は、一度覗いてみるとよいと思います。

この記事が気に入ったらサポートをしてみませんか?