リトリーバルチェーンを構築する
いよいよ章の総仕上げです!LangChain の Expression Language (LCEL) を使ってリトリーバルチェーンを作成します。これにより、先ほど読み込んだ RAG 論文から生成した埋め込みドキュメントチャンクを保持するベクトルストア、プロンプトテンプレート、そして LLM を組み合わせ、ドキュメントに対して質問できるようになります。
前の演習で作成し、今回も使用できる prompt_template をもう一度示します。
Use the only the context provided to answer the following question. If you don't know the answer, reply that you are unsure.
Context: {context}
Question: {question}
以前に作成した埋め込みドキュメントチャンクの vector_store も、必要なライブラリやクラスとあわせて読み込まれています。
この演習はコースの一部です
LangChain で学ぶ Retrieval Augmented Generation (RAG)
演習の手順
- Chroma の
vector_storeを LCEL のリトリーバルチェーンで使えるリトリーバーオブジェクトに変換します。 - 入力の質問に答えられるように、
retriever、prompt_template、llm、および文字列出力パーサーを組み合わせて LCEL リトリーバルチェーンを作成します。 - 与えられた質問でチェーンを実行します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Convert the vector store into a retriever
retriever = vector_store.____(search_type="similarity", search_kwargs=____)
# Create the LCEL retrieval chain
chain = (
{"____": ____, "question": ____}
| ____
| ____
)
# Invoke the chain
print(chain.____("Who are the authors?"))