Crear una cadena de recuperación con LCEL

Retrieval Augmented Generation (RAG) con LangChain

Meri Nova

Machine Learning Engineer

Preparar datos para la recuperación

Se almacenan los fragmentos de documentos.

Retrieval Augmented Generation (RAG) con LangChain

Introducción a LCEL para RAG

Una entrada de usuario.

Retrieval Augmented Generation (RAG) con LangChain

Introducción a LCEL para RAG

Una entrada de usuario entra en la cadena vía RunnablePassthrough y se asigna a "question".

Retrieval Augmented Generation (RAG) con LangChain

Introducción a LCEL para RAG

La entrada consulta el recuperador y se asigna a "context".

Retrieval Augmented Generation (RAG) con LangChain

Introducción a LCEL para RAG

"context" y "question" se integran en la plantilla de prompt.

Retrieval Augmented Generation (RAG) con LangChain

Introducción a LCEL para RAG

El prompt se integra en el LLM (modelo) para generar una salida.

Retrieval Augmented Generation (RAG) con LangChain

Introducción a LCEL para RAG

La salida del modelo se pasa a un parser.

Retrieval Augmented Generation (RAG) con LangChain

Instanciar un recuperador

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


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

Crear una plantilla de prompt

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)
Retrieval Augmented Generation (RAG) con LangChain

Crear una cadena de recuperación con LCEL

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

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

Invocar la cadena de recuperación

result = chain.invoke({"question": "What are the key findings or results presented in the paper?"})
print(result)
- Top Performance: RAG models set new records on open-domain question answering tasks...
- Better Generation: RAG models produce more specific, diverse, and factual language...
- Dynamic Knowledge Use: The non-parametric memory allows RAG models to access and ...
Retrieval Augmented Generation (RAG) con LangChain

¡Vamos a practicar!

Retrieval Augmented Generation (RAG) con LangChain

Preparing Video For Download...