RAGチェーンの作成
いよいよ、RAGワークフローのすべてのコンポーネントを組み合わせましょう。ドキュメントを準備し、検索用のChromaデータベースに取り込みました。また、学術論文から取得したチャンクを含め、質問に回答するためのプロンプトテンプレートも作成しました。
前の演習で作成したプロンプトテンプレートは prompt_template として利用できます。OpenAIモデルは llm として初期化済みで、retriever を再作成するコードもスクリプトに含まれています。
この演習はコースの一部です
LangChainを使ったLLMアプリケーション開発
演習の手順
- パイプオペレーター(
|)を使ってLCELチェーンを作成し、retriever、prompt_template、llmを順に接続します。 - チェーンはリトリーバーを
"context"に、ユーザーの入力を"question"にマッピングする。 - 提供された質問に対して
.invoke()メソッドを用いて連鎖を呼び出す。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
vectorstore = Chroma.from_documents(
docs,
embedding=OpenAIEmbeddings(api_key='', model='text-embedding-3-small'),
persist_directory=os.getcwd()
)
retriever = vectorstore.as_retriever(
search_type="similarity",
search_kwargs={"k": 3}
)
# Create a chain to link retriever, prompt_template, and llm
rag_chain = ({"context": ____, "question": ____}
| prompt_template
| llm)
# Invoke the chain
response = rag_chain.____("Which popular LLMs were considered in the paper?")
print(response.content)