Criando uma cadeia de busca com LCEL

Retrieval Augmented Generation (RAG) com LangChain

Meri Nova

Machine Learning Engineer

Preparando dados para recuperação

Chunks de documentos são armazenados.

Retrieval Augmented Generation (RAG) com LangChain

Introdução ao LCEL para RAG

Uma entrada do usuário.

Retrieval Augmented Generation (RAG) com LangChain

Introdução ao LCEL para RAG

Uma entrada do usuário entra na cadeia via RunnablePassthrough e é atribuída a "question".

Retrieval Augmented Generation (RAG) com LangChain

Introdução ao LCEL para RAG

A entrada consulta o retriever e é atribuída a "context".

Retrieval Augmented Generation (RAG) com LangChain

Introdução ao LCEL para RAG

"context" e "question" são integrados ao template de prompt.

Retrieval Augmented Generation (RAG) com LangChain

Introdução ao LCEL para RAG

O prompt é integrado ao LLM (modelo) para gerar uma saída.

Retrieval Augmented Generation (RAG) com LangChain

Introdução ao LCEL para RAG

A saída do modelo sendo enviada para um parser.

Retrieval Augmented Generation (RAG) com LangChain

Instanciando um retriever

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) com LangChain

Criando um template de prompt

from langchain_core.prompts import ChatPromptTemplate

prompt = ChatPromptTemplate.from_template(""" Use os trechos de contexto a seguir para responder à pergunta no final. Se não souber a resposta, diga que não sabe. Contexto: {context} Pergunta: {question} """)
llm = ChatOpenAI(model="gpt-4o-mini", api_key="...", temperature=0)
Retrieval Augmented Generation (RAG) com LangChain

Construindo uma cadeia de recuperação 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) com LangChain

Invocando a cadeia de recuperação

result = chain.invoke({"question": "What are the key findings or results presented in the paper?"})
print(result)
- Desempenho máximo: modelos RAG batem recordes em QA de domínio aberto...
- Geração melhor: modelos RAG produzem linguagem mais específica, diversa e factual...
- Uso dinâmico de conhecimento: a memória não-paramétrica permite que modelos RAG acessem e ...
Retrieval Augmented Generation (RAG) com LangChain

Vamos praticar!

Retrieval Augmented Generation (RAG) com LangChain

Preparing Video For Download...