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.

Usando RetrievalQA

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.