Puede utilizar modelos de base en IBM watsonx.ai para generar resultados precisos que se basan en la información de una base de conocimiento aplicando el patrón de generación de recuperación aumentada.
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 mencione en muchos artículos en línea que se incluyen en los conjuntos de datos de preentrenamiento habituales, sin el contexto al principio de la pregunta, ningún foundation model puede generar de forma fiable la compleción correcta de la frase al final de la pregunta.
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 de recuperación aumentada
Puede escalar la técnica de incluir contexto en las solicitudes utilizando información en una base de conocimiento.
El diagrama siguiente ilustra el patrón de generación de recuperación aumentada. 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 pasos siguientes:
- 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".
- Sólo si el foundation model que utilizas no está ajustado a las instrucciones: Añada algunos ejemplos que demuestren el formato de entrada y salida esperado.
- Enviar el texto de consulta combinado (instrucción + resultados de búsqueda + pregunta) al foundation model.
- El foundation model utiliza la información contextual de la pregunta para generar una respuesta objetiva.
El origen de la generación aumentada de recuperación
En este artículo se introduce el término generación aumentada por recuperación (RAG): Retrieval-augmented generation for knowledge-intensive NLP tasks.
"Construimos modelos RAG donde la memoria paramétrica es un transformador seq2seq preentrenado, y la memoria no paramétrica es un índice vectorial denso de Wikipedia, al que se accede con un recuperador neuronal preentrenado".
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. El cuadernos de ejemplo ilustrar los pasos para conectarse a bases de datos vectoriales populares, como Chroma y Elasticsearch.
Para ayudarlo a implementar un patrón RAG en el que el recuperador usa 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 Utilización de texto vectorizado con tareas de generación aumentada de 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 ejemplo con cuadernos y otros activos que implementen una solución de preguntas y respuestas utilizando la generación aumentada de 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)
- Escriba una función Python que consulte el índice vectorial para buscar información relacionada con una pregunta y, a continuación, infiera un foundation model y compruebe que la respuesta generada no tenga contenido alucinado.
- Utilice plantillas de avisos que le ayuden a dar formato a avisos eficaces para los modelos de base IBM granite-7b-lab y Meta Llama 3.1.
- 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.
Ejemplos
Los ejemplos siguientes muestran cómo aplicar el patrón de generación de recuperación aumentada.
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 las preguntas watsonx.ai utilizando un foundation model |
Ejemplo con LangChain | Contiene los pasos y el código para demostrar el soporte de la generación con autorización de 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 | Muestra cómo aplicar la generación aumentada por recuperación a grandes modelos lingüísticos en watsonx utilizando la base de datos SingleStoreDB. | RAG con SingleStoreDB y watsonx |
Más información
Pruebe estas guías de aprendizaje:
- Prompt un foundation model utilizando Prompt Lab
- Promover un foundation model con el patrón de generación de recuperación aumentada
Tema principal: Desarrollo de soluciones de IA generativas