构建 LCEL 检索链

使用 LangChain 的 Retrieval Augmented Generation (RAG)

Meri Nova

Machine Learning Engineer

为检索准备数据

文档分块已存储。

使用 LangChain 的 Retrieval Augmented Generation (RAG)

RAG 的 LCEL 简介

用户输入。

使用 LangChain 的 Retrieval Augmented Generation (RAG)

RAG 的 LCEL 简介

用户输入通过 RunnablePassthrough 进入链,并被赋给"question"。

使用 LangChain 的 Retrieval Augmented Generation (RAG)

RAG 的 LCEL 简介

使用输入查询检索器,并赋给"context"。

使用 LangChain 的 Retrieval Augmented Generation (RAG)

RAG 的 LCEL 简介

将"context"和"question"集成到提示模板中。

使用 LangChain 的 Retrieval Augmented Generation (RAG)

RAG 的 LCEL 简介

将提示集成到 LLM(模型)以生成输出。

使用 LangChain 的 Retrieval Augmented Generation (RAG)

RAG 的 LCEL 简介

将模型输出传递给解析器。

使用 LangChain 的 Retrieval Augmented Generation (RAG)

实例化检索器

vector_store = Chroma.from_documents(
    documents=chunks, 
    embedding=embedding_model
)


retriever = vector_store.as_retriever( search_type="similarity", search_kwargs={"k": 2} )
使用 LangChain 的 Retrieval Augmented Generation (RAG)

创建提示模板

from langchain_core.prompts import ChatPromptTemplate

prompt = ChatPromptTemplate.from_template(""" Use the following pieces of context to answer the question at the end. If you don't know the answer, say that you don't know. Context: {context} Question: {question} """)
llm = ChatOpenAI(model="gpt-4o-mini", api_key="...", temperature=0)
使用 LangChain 的 Retrieval Augmented Generation (RAG)

构建 LCEL 检索链

from langchain_core.runnables import RunnablePassthrough
from langchain_core.output_parsers import StrOutputParser

chain = (
{"context": retriever, "question": RunnablePassthrough()}
| prompt
| llm
| StrOutputParser()
)
使用 LangChain 的 Retrieval Augmented Generation (RAG)

调用检索链

result = chain.invoke({"question": "What are the key findings or results presented in the paper?"})
print(result)
- 顶级表现:RAG 模型在开放域问答上创下新纪录...
- 更佳生成:RAG 模型产出更具体、多样、事实更准确的语言...
- 动态知识利用:非参数化记忆让 RAG 模型能够访问并...
使用 LangChain 的 Retrieval Augmented Generation (RAG)

¡Vamos a practicar!

使用 LangChain 的 Retrieval Augmented Generation (RAG)

Preparing Video For Download...