创建一个 RAG 链
现在把 RAG 工作流中的所有组件串联起来吧!您已经准备好了文档,并将其导入到 Chroma 数据库以便检索。您还创建了一个提示模板,用于包含从学术论文中检索到的片段,并据此回答问题。
您在上一个练习中创建的提示模板可通过 prompt_template 使用,已初始化的 OpenAI 模型为 llm,而重建 retriever 的代码也已包含在脚本中。
本练习是课程的一部分
使用 LangChain 开发 LLM 应用
练习说明
- 使用管道运算符 (
|) 创建一个 LCEL 链,按顺序连接retriever、prompt_template和llm。 - 链中应将 retriever 映射到
"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)