Creación de Cadenas de Preguntas y Respuestas con Modelos de Lenguaje
Clase 8 de 37 • Curso de LangChain
Resumen
¿Cómo construir una cadena de utilidad para responder preguntas?
La creación de cadenas de utilidad, específicamente diseñadas para resolver preguntas a partir de documentos, es un enfoque que combina técnicas de inteligencia artificial con la manipulación de datos. Utilizando bibliotecas de Python, como chains.retrieval.qa
, podemos construir estas cadenas que realizan un proceso de "question answering" o QA, aprovechando la información almacenada en bases de datos específicas.
¿Qué es retrieval.qa
y cómo se utiliza?
retrieval.qa
es una característica crucial de la librería de cadenas que nos permite crear una cadena para resolver preguntas a partir de un modelo de lenguaje y una base de datos. Aquí, "retrieval" implica la obtención de información, y "QA" se refiere a la resolución de preguntas. Con esta herramienta, podemos recuperar información relevante desde una base de datos vectorial previamente definida, como una almacenada con Chroma.
Para utilizar retrieval.qa
, seguimos estos pasos:
-
Definir el modelo de lenguaje (LLM):
- En el ejemplo, utilizamos el modelo
gpt3-5
, específicamente elgpt3.5 turbo
de OpenAI. - Este modelo es cargado y gestionado a través de herramientas de homogeneización de modelos como Langstan, que nos permiten mantener una clase uniforme para distintos tipos de modelos de IA, facilitando la interconectividad y sustituibilidad sin modificar la cadena.
- En el ejemplo, utilizamos el modelo
-
Definir el tipo de cadena:
- Usamos el tipo de cadena
ChainType Stuff
, que permite procesar el texto que cabe completamente en el prompt del modelo. - Este enfoque evita iterar a través de grandes volúmenes de texto, como haría un enfoque MapReduce.
- Usamos el tipo de cadena
-
Incorporación de un Retriever:
- Un Retriever es esencial en este proceso ya que actúa como la base de datos de donde nuestros modelos de cadena extraerán la información.
- En este caso, nuestra base de datos es Chroma, y utilizamos el VectorStore que almacena documentos, como un PDF de un artículo de investigación.
from chains.retrieval.qa import RetrievalQA
# Definir modelo de lenguaje
llm = 'gpt3-5'
# Inicializar cadena
cadena_resolver = RetrievalQA.from_chain_type(
llm=llm,
chain_type='Stuff',
retriever=VectorStore
)
¿Qué rol juega el búsqueda y el contexto en la resolución de preguntas?
La finalidad de configurar correctamente las búsquedas y contextos es optimizar la precisión y relevancia de las respuestas generadas. A medida que las capacidades de almacenamiento y procesamiento de las bases de datos crecen, estas configuraciones permiten que el sistema adquiera un mayor conocimiento y contexto al resolver preguntas complejas.
- Parámetros de búsqueda (
SearchQuarks
):- Estas son configuraciones importantes que determinan qué fragmentos de texto serán considerados relevantes al responder una pregunta.
- En el ejemplo proporcionado, se usa un ajuste que restringe a dos fragmentos de texto. Este número busca equilibrar el contexto proporcionado y el tamaño máximo del prompt aceptado por el modelo.
- Balance de contexto:
- Al aumentar la cantidad de fragmentos, el modelo tiene un mayor contexto para basar sus respuestas, mejorando su exactitud.
- Sin embargo, la limitación sigue siendo el tamaño del prompt que el modelo puede procesar, que actualmente es restringido pero se espera mejore en el futuro.
¿Cómo se ejecuta la cadena para resolver una pregunta?
Una vez que la cadena está correctamente inicializada y configurada con sus parámetros, podemos realizar consultas específicas. Por ejemplo, para evaluar la relevancia de la criptografía de llave pública, simplemente ejecutamos la cadena con la pregunta deseada y obtenemos no solo la respuesta, sino también el contexto relevante del contenido original.
# Ejecutar pregunta
respuesta = cadena_resolver.run(
pregunta='¿Cuál es la relevancia de la criptografía de llave pública?'
)
print(respuesta)
Con estas herramientas y metodologías, estamos bien posicionados para enfrentar cualquier desafío en el ámbito del "question answering", y con la evolución continua de la tecnología, el potencial solo seguirá creciendo. Mantente al tanto de estas innovaciones y sigue explorando las aplicaciones del aprendizaje automático y procesamiento del lenguaje natural.