retrevalQAは作成したインデックスを使うときに使用しますが、
プロンプトを設定できるpromptTemplateを合わせて使おうとしたときに、
うまくできず、苦労したのでそのことについて書いていきます。
結論
結論から、
PrmptTemplate、LLMChain、StuffuDocumentsChainを組み合わせてRetrievalQAに引数として渡す。
これで、プロンプトを設定したRetrievalQAを作ることがてきます。
具体的には、
まず、PrmptTemplateを設定します。
# テンプレートの設定
prompt = PromptTemplate(
input_variables=["query"],
template="200文字以内で適切な回答をして下さい:{query}",
)
次に、LLMChainにllmと、上で定義したpromptを設定します。
llmは好きなものを設定してください。
# LLMチェインの設定
llm_chain = LLMChain(llm=llm, prompt=prompt)
次に、StuffDocumentsChainを設定します。
StuffDocumentsChainでは、うえで設定したLLMChainとPromptTemplateで
設定したinput_variablesの値を使います。
# StuffDocumentsChainの設定
stuff_doc_chain = StuffDocumentsChain(
llm_chain=llm_chain,
document_variable_name="query",
)
最後に、
上で設定した、StuffDocumentsChainを使って
RetrievalQAの設定をします。
qa = RetrievalQA(
retriever=retriever,
combine_documents_chain=stuff_doc_chain,
input_key="query",
output_key="answer"
)
インプットキーとアウトプットキーは
SequentialChainにRetrievalQAを組み込むときに設定したものなので
なくても大丈夫だと思いますが一応書いておきました。
テンプレートの設定をする
それで、LLMチェインの設定する。
それで、StuffDocumentsChainを設定する。
それで、RetrievalQAのcombine_documents_chainに渡す
これでPromptTemplateを使用した
RetrievalQAができると思います。
参考になればうれしいです。
経緯説明
なぜPromptTemplateを使いたかったかというと
SequentialChainに組み込んでみたいと思ったからです。
正直上で設定したようなPromptTemplateだったらなくてもあまり変わらない気もしますが、
いざ使いたいときにできないと困ると思ったので、
できるまで調べてみました。
自分は、
SequentialChainの使いどころもあまりピンと来てないので、
今のところ使い道はありませんが、
せっかく調べたので記事に書いてみました。
読んでくれてありがとうございました。以上です。