Además de las cadenas tipo stuff y map reduce, podemos usar cadenas RetrievalQA para extraer insights de los contextos que demos a los modelos.
El retrievalQA se encargará de responder preguntas (Question/Answering) mediante los datos propuestos.
Con todo el contexto de la sesión anterior aún activo, importaremos RetrievalQA desde langchain→chains.
from langchain.chains import RetrievalQA
Crearemos un objeto qa_chain a partir de esta clase, donde determinaremos el modelo a usar, el tipo de cadena (stuff en vez de map reduce) y el vectorstore (donde determinaremos la cantidad de párrafos a procesar para el output en 2).
Es de vital importancia notar que aquí si usamos el embedding y el vectorstore dado que haremos búsquedas en texto y la vectorización es obligatoria.
qa_chain = RetrievalQA.from_chain_type(
llm=llm_gpt_3_5,
chain_type="stuff",
retriever= vectorstore.as_retriever(search_kwargs = {"k" : 2}))
Podremos correr este modelo con el método run, donde el modelo buscará en el contexto la solución.
Es importante resaltar que en esta ocasión se mantendrá el idioma original gracias a la naturaleza del retrieval.