Generación aumentada por recuperación
Puede utilizar modelos de bases en IBM watsonx.ai para generar resultados fácticamente precisos, basados en la información de una base de conocimientos, aplicando el patrón de generación aumentada por recuperación (RAG).
Este vídeo proporciona un método visual para aprender los conceptos y tareas de esta documentación.
Capítulos de vídeo
[ 0:08 ] Descripción del escenario
[ 0:27 ] Visión general del patrón
[ 1:03 ] Base de conocimiento
[ 1:22 ] Componente de búsqueda
[ 1:41 ] Pregunta aumentada con contexto
[ 2:13 ] Generación de la salida
[ 2:31 ] Solución completa
[ 2:55 ] Consideraciones para la búsqueda
[ 3:58 ] Consideraciones para el texto de la pregunta
[ 5:01 ] Consideraciones para la explicabilidad
Proporcionar contexto en la solicitud mejora la precisión
Los modelos de base pueden generar resultados que son objetivamente inexactos por varias razones. Una forma de mejorar la precisión de la salida generada es proporcionar los hechos necesarios como contexto en el texto de solicitud.
Ejemplo
La solicitud siguiente incluye el contexto para establecer algunos hechos:
Aisha recently painted the kitchen yellow, which is her favorite color.
Aisha's favorite color is
A menos que Aisha sea una persona famosa cuyo color favorito se haya mencionado en muchos artículos en línea que se incluyen en conjuntos de datos comunes de preentrenamiento, sin el contexto al principio de la indicación, ningún modelo de base puede generar de forma fiable la terminación correcta de la frase al final de la indicación.
Si solicita a un modelo un texto que incluya un contexto lleno de hechos, es más probable que la salida que genera el modelo sea precisa. Para obtener más detalles, consulte Generación de salida precisa de hecho.
El patrón de generación aumentado por recuperación
Puede escalar la técnica de incluir contexto en las solicitudes utilizando información en una base de conocimiento.
El siguiente diagrama ilustra el patrón de generación aumentado por recuperación. Aunque el diagrama muestra un ejemplo de respuesta a preguntas, el mismo flujo de trabajo da soporte a otros casos de uso.
El patrón de generación de recuperación aumentada implica los siguientes pasos:
- Busque en su base de conocimientos el contenido relacionado con la pregunta de un usuario.
- Extraiga los resultados de búsqueda más relevantes en su solicitud como contexto y añada una instrucción, como por ejemplo "Responder a la siguiente pregunta utilizando sólo información de los pasajes siguientes".
- Solo si el modelo de base que está utilizando no está ajustado a las instrucciones : Añada algunos ejemplos que demuestren el formato de entrada y salida esperado.
- Enviar el texto de aviso combinado (instrucción + resultados de búsqueda + pregunta) al modelo de base.
- El modelo de la fundación utiliza información contextual de la pregunta para generar una respuesta objetiva.
El origen de la generación aumentada por recuperación
El término generación aumentada por recuperación (RAG) se introdujo en este artículo: Retrieval-augmented generation for knowledge-intensive NLP tasks. «Creamos modelos RAG en los que la memoria paramétrica es un transformador de e seq2seq a preentrenado, y la memoria no paramétrica es un índice vectorial denso de Wikipedia, al que se accede con un recuperador neuronal reentrenado»
En ese documento, el término modelos RAG hace referencia a una implementación específica de un recuperador (un codificador de consultas específico y un índice de búsqueda de documentos basado en vectores) y un generador (un modelo de lenguaje generativo preentrenado específico). Sin embargo, el enfoque básico de búsqueda y generación se puede generalizar para utilizar diferentes componentes de recuperador y modelos de base.
Base de conocimiento
La base de conocimiento puede ser cualquier colección de artefactos que contienen información, como por ejemplo:
- Información de proceso en páginas de wiki de empresa internas
- Archivos en GitHub (en cualquier formato: Markdown, texto sin formato, JSON, código)
- Mensajes en una herramienta de colaboración
- Temas de la documentación del producto, que pueden incluir bloques de texto largos
- Pasajes de texto en una base de datos que soporta consultas de lenguaje de consulta estructurado (SQL), como por ejemplo Db2
- Un almacén de documentos con una colección de archivos, como los contratos legales que se almacenan como archivos PDF
- Incidencias de soporte al cliente en un sistema de gestión de contenidos
Recuperador
El recuperador puede ser cualquier combinación de herramientas de búsqueda y contenido que devuelvan de forma fiable contenido relevante de la base de conocimiento, incluidas las herramientas de búsqueda como IBM Watson Discovery o las API de búsqueda y contenido como las proporcionadas por GitHub.
Las bases de datos vectoriales también son recuperadores eficaces. Una base de datos vectorial almacena no solo los datos, sino también una incrustación vectorial de los datos, que es una representación numérica de los datos que captura su significado semántico. En el momento de la consulta, se utiliza una inclusión vectorial del texto de la consulta para buscar coincidencias relevantes.
IBM watsonx.ai no incluye una base de datos vectorial, pero puede utilizar los modelos básicos en watsonx.ai con cualquier base de datos vectorial del mercado. Los cuadernos de ejemplo ilustran los pasos para conectarse a bases de datos vectoriales populares, como Cloud Pak for Data y Elasticsearch.
Para ayudarle a implementar un patrón RAG en el que el recuperador utiliza texto vectorizado, watsonx.ai ofrece una API de incrustación y modelos de incrustación que puede utilizar para convertir oraciones y pasajes en vectores. Para obtener más información sobre este tipo de implementación de RAG, consulte Uso de texto vectorizado con tareas de generación aumentada por recuperación.
Generador
El componente generador puede utilizar cualquier modelo en watsonx.ai, cualquiera que se adapte a su caso de uso, formato de solicitud y contenido que esté extrayendo para el contexto.
Proyecto de ejemplo
Importe un proyecto de muestra con cuadernos y otros activos que implementen una solución de preguntas y respuestas mediante el uso de la generación aumentada por recuperación. El proyecto te muestra cómo hacer las siguientes cosas:
- Utilice archivos HTML, PDF, DOC o PPT como base de conocimientos y un índice vectorial Elasticsearch como recuperador. (Debe crear la instancia de servicio Elasticsearch por separado)
- Escribir una función de aprendizaje automático ( Python ) que consulte el índice vectorial para buscar información relacionada con una pregunta, y luego infiera un modelo de base y compruebe que la respuesta generada no contenga contenido alucinatorio.
- Utilice plantillas de instrucciones que le ayuden a formatear instrucciones eficaces para los modelos de la fundación.
- Sigue el patrón de forma eficiente con las utilidades RAG de la biblioteca watsonx.ai Python.
- Implementar la siguiente fase de la implantación de un GAR incluyendo funciones para recoger y analizar los comentarios de los usuarios sobre las respuestas generadas.
Pruebe el proyecto de ejemplo Q&A with RAG Accelerator.
Para más información, consulte las preguntas y respuestas con RAG Accelerator.
Ejemplos
Los siguientes ejemplos demuestran cómo aplicar el patrón de generación aumentada por recuperación.
Ejemplo | Descripción | Enlace |
---|---|---|
Introducción simple | Utiliza una pequeña base de conocimiento y un componente de búsqueda simple para demostrar el patrón básico. | Introducción a la generación aumentada por recuperación |
Introducción simple con Discovery | Este cuaderno de ejemplo utiliza artículos breves en IBM Watson Discovery como base de conocimiento y la API de Discovery para realizar consultas de búsqueda. | Introducción sencilla a la generación aumentada por recuperación con watsonx.ai y Discovery |
Ejemplo del mundo real | La documentación de watsonx.ai tiene una característica de búsqueda y respuesta que puede responder a preguntas básicas de qué es utilizando los temas de la documentación como base de conocimientos. | Responder a preguntas e watsonx.ai es utilizando un modelo de base |
Ejemplo con LangChain | Contiene los pasos y el código para demostrar el soporte de la generación aumentada por recuperación con LangChain en watsonx.ai. Introduce mandatos para la recuperación de datos, la creación y consulta de bases de conocimiento y la prueba de modelos. | Utilizar watsonx y LangChain para responder a las preguntas mediante RAG |
Ejemplo con LangChain y una base de datos de vector Elasticsearch | Muestra cómo utilizar LangChain para aplicar un modelo de inclusión a documentos en una base de datos de vector Elasticsearch . A continuación, el cuaderno indexa y utiliza el almacén de datos para generar respuestas a las preguntas entrantes. | Utilizar watsonx, Elasticsearch y LangChain para responder preguntas (RAG) |
Ejemplo con la biblioteca Elasticsearch Python | Muestra cómo utilizar la biblioteca Elasticsearch Python para aplicar un modelo de inclusión a documentos en una base de datos de vectores Elasticsearch . A continuación, el cuaderno indexa y utiliza el almacén de datos para generar respuestas a las preguntas entrantes. | Utilizar watsonx y la biblioteca Python Elasticsearch para responder a preguntas (RAG) |
Ejemplo con LangChain y una base de datos SingleStoreDB | Le muestra cómo aplicar la generación aumentada por recuperación a modelos de lenguaje grandes en watsonx utilizando la base de datos SingleStoreDB. | RAG con SingleStoreDB y watsonx |
Más información
Pruebe estas guías de aprendizaje:
- Solicitar un modelo de base utilizando Prompt Lab
- Solicitar un modelo de base con el patrón de generación aumentado por recuperación
Tema principal: Desarrollo de soluciones de IA generativas