研究紹介/コラム - ChatGPTとその活用方法について【後編】

ChatGPTとその活用方法について【後編】

後編ではChatGPTのモデルの活用方法として有用なLangChainについて解説します。

LangChainとは

LangChainとは、PythonでLLMを用いたアプリケーション開発を効率的に行うためのフレームワークです。LangChainは、LLMが生成する情報のカスタマイズに長け、正確性及び関連性を向上させるためのツール群を抽象化した形で提供します。
以下では、LangChainを用いた特定の記事を参照させる仕組み(RAG – Retrieval-Augmented Generation)の実施例をご紹介します。尚、今回使用するLLMはマイクロソフト社のAzure上で提供されているOpenAI社のモデル、及びRAGに用いるベクトルデータベースにはAzure AI Searchを用いています。


実践:特定記事の参照

LangChainを用いRAGを構成することによって「LLMの事前学習時には無かった、2022年のサッカーワールドカップカタール大会(2022 FIFA World Cup)に関する情報を参照させたうえで返答させる」ための仕組みを作成してみました。
・使用モデル:gpt-35-turbo
・使用言語:Python
・環境:Azure Machine Learning(Serverless Spark Compute)
・参照させる記事:2022年サッカーワールドカップカタール大会の記事(https://www3.nhk.or.jp/news/html/20221219/k10013927351000.html)
※記事情報はベクトル化(数値データ化)する処理をする必要があります (ベクトル化のコードについて詳細を知りたい方は問い合わせフォームよりご連絡ください)

RAGによるカスタマイズ

まずは基となるLLMモデル(gpt-35-turbo)に対し時期的に未学習であることが明かな質問をしてみます。

上記のPGMを実行してみると、

私は人工知能であり、未来の出来事を予測することはできません。申し訳ありません。

私にはそのような情報を提供することはできません。私は人工知能の言語モデルであり、未来の出来事を予測する能力はありません。ご理解いただけますようお願いいたします。

と結果が表示されます。

そこで、LangChainでRAGを構成し、ベクトル化した記事を参照させてみます。

#ベクトルデータベースと紐づけてRAGを構成
retrieval_qa = ConversationalRetrievalChain.from_llm(
model,                        #  gpt-35-turboを使う
vector_store.as_retriever(),        # 加工済みの記事参照
return_source_documents=True
)

#RAGを使ったクエリー その1
chat_history = [ ]
result1 = retrieval_qa({“question” : query1, “chat_history” : chat_history})
print(result1[“answer”])
#RAGを使ったクエリー その2
result2 = retrieval_qa({“question” : query2, “chat_history” : chat_history})
print(result2[“answer”])

上記のPGMを実行してみると

2022年のサッカーワールドカップで優勝したのはアルゼンチンです。
2022年のワールドカップで日本は、グループリーグを突破し、決勝トーナメント1回戦で敗退しました。詳しくは、グループリーグで優勝経験のあるドイツとスペインにいずれも逆転勝利し、グループ首位で決勝トーナメントに進出しました。決勝トーナメント1回戦ではペナルティーキック戦で敗れ、ベスト8には届きませんでした。

と正しい結果が表示されます。
(コード詳細を知りたい方は問い合わせフォームよりご連絡ください)

おわりに

上記のようにLangChainを使いRAGを構成することで、LLMモデルが元々事前に学習していなかった情報を返してくれる仕組みができました。今回は特定の記事を参照することしかしておりませんが、複数の情報を参照することも実装次第では可能となります。そしてその情報を社内情報にすれば、会社専用のチャットボットのようなものも作成可能です。

また一方でLangChainは、汎用的な用途向けにWikipediaを直接参照させたり、株価や天気予報のサイト等をピンポイントで参照させたり、さらにはエージェントを定義することによって情報収集機能を自在に操る事もできるので、用途に応じ大いに発展させる可能性を秘めています。

今回は簡単ではありますが、ChatGPTの活用事例としてLangChainによるRAGの実装方法についてご紹介しました。当社では最先端技術の研究・調査を行っており、最新の調査結果を随時公開していきます。

研究紹介/コラム ー ChatGPTとその活用方法について【後編】