OpenAI+Llama2Elyza+LlamaIndex+LangChainでPDF読み込みQAボットを組んでみた

ソースは下記より閲覧可能

何の記事か?

LlamaIndex+Elyza, OpenAI+Langchainの構成で、日本語に特化した外部ドキュメント回答AIを作りました。プログラムの詳細はすべてコメントとして記載しているので基本はコードを見てください。この記事上では全体構成と所感をお伝えします。

システム構成

外部ドキュメント参照はLlamaIndexで、ベクトル化したドキュメントを読み取る際に応答してくれるAIはElyzaを使いました。openaiではお金がかかりすぎるので、節約ですが、それなりの性能で答えてくれます。
Langchainでユーザとの応答、およびLlamaIndexとの応答の仲介役も担うAIはOpenAIにしました。LlamaIndexでもいいかもしれませんが、LangChainのリファレンスでは、OpenAIを使ったプロンプトサンプルしかなく、動作の保証ができないためです。ここはお金を使いましょう。
大雑把に構成はこれだけですが、Langchain内で会話履歴の記録(memory)やAIの行動解析の途中処理を制御するクラスを作ったりと、基本リファレンス通りですが、コメント集めで書いてます。

所感

基本リファレンス通りにやってますが、リファレンスをうのみにしても動かないところとかあります。(BassToolsクラスを指定しているtools変数があるのですが、リファレンスではToolsクラスを使っていたりとか。。。)
あと、根本ではやはりプロンプトエンジニアリングが肝です。
うまくllmを扱えるような指示を与えられるかが肝になります。
あと、Langchainはデフォルトで設定されてるプロンプトとかあるんですが、基本英語のプロンプトがデフォなので日本語に書き換える必要があります。諸々をやると日本語に特化した調整に近づいていきます。

Colabのデザインが嫌なので変えてみました。
https://note.com/nerzgit/n/ndd5c05472d04



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