Búsqueda impulsada por recuperación de generación aumentada (RAG)
txtchat crea aplicaciones de búsqueda impulsadas por modelos de lenguaje y generación aumentada de recuperación (RAG).
La llegada de los grandes modelos lingüísticos (LLM) ha impulsado una reinvención de la búsqueda. La búsqueda impulsada por LLM puede hacer más. En lugar de simplemente mostrar resultados, la búsqueda ahora puede extraer, resumir, traducir y transformar contenido en respuestas.
txtchat agrega un conjunto de agentes inteligentes que están disponibles para integrarse con plataformas de mensajería. Estos agentes o personas están asociados con una cuenta automatizada y responden a mensajes con respuestas impulsadas por IA. Los flujos de trabajo pueden utilizar modelos de lenguaje grandes (LLM), modelos pequeños o ambos.
txtchat está construido con Python 3.8+ y txtai.
La forma más sencilla de instalar es mediante pip y PyPI.
pip install txtchat
También puedes instalar txtchat directamente desde GitHub. Se recomienda utilizar un entorno virtual Python.
pip install git+https://github.com/neuml/txtchat
Se admite Python 3.8+
Consulte este enlace para ayudar a resolver problemas de instalación específicos del entorno.
txtchat está diseñado y admitirá varias plataformas de mensajería. Actualmente, Rocket.Chat es la única plataforma compatible dada su capacidad de instalarse en un entorno local además de tener licencia del MIT. La forma más sencilla de iniciar una instancia local de Rocket.Chat es con Docker Compose. Consulte estas instrucciones para obtener más información.
Extender txtchat a plataformas adicionales solo necesita una nueva subclase de Agente para esa plataforma.
Una persona es una combinación de un agente de chat y un flujo de trabajo que determina el tipo de respuestas. Cada agente está vinculado a una cuenta en la plataforma de mensajería. Los flujos de trabajo de personas son independientes de la plataforma de mensajería. El repositorio txtchat-persona tiene una lista de flujos de trabajo de personas estándar.
Consulte el directorio de ejemplos para conocer configuraciones adicionales de personas y flujos de trabajo.
El siguiente comando muestra cómo iniciar una persona txtchat.
# Set to server URL, this is default when running local
export AGENT_URL=ws://localhost:3000/websocket
export AGENT_USERNAME=<Rocket Chat User>
export AGENT_PASSWORD=<Rocket Chat User Password>
# YAML is loaded from Hugging Face Hub, can also reference local path
python -m txtchat.agent wikitalk.yml
¿Quieres agregar una nueva persona? Simplemente cree un flujo de trabajo txtai y guárdelo en un archivo YAML.
La siguiente es una lista de videos de YouTube que muestran cómo funciona txtchat. Estos videos ejecutan una serie de consultas con el personaje de Wikitalk. Wikitalk es una combinación de un índice de incrustaciones de Wikipedia y un mensaje de LLM para responder preguntas.
Cada respuesta muestra una referencia asociada al origen de los datos. Wikitalk dirá "No tengo datos sobre eso" cuando no tenga una respuesta.
Conversación con Wikitalk sobre historia.
Habla de deportes.
Cuestiones de arte y cultura.
Hagamos una prueba de Wikitalk sobre ciencia.
No todos los flujos de trabajo necesitan un LLM. Hay muchos modelos pequeños fantásticos disponibles para realizar una tarea específica. La persona Resumen simplemente lee la URL de entrada y resume el texto.
Al igual que la persona resumida, Mr. French es una persona simple que traduce el texto ingresado al francés.
¿Quieres conectar txtchat a tus propios datos? Todo lo que necesitas hacer es crear un flujo de trabajo txtai. Veamos un ejemplo de cómo crear un flujo de trabajo de indexación de Hacker News y una persona txtchat.
Primero, definiremos el flujo de trabajo de indexación y crearemos el índice. Esto se hace con un flujo de trabajo para mayor comodidad. Alternativamente, podría ser un programa Python que cree un índice de incrustaciones a partir de su conjunto de datos. Hay más de 50 cuadernos de ejemplo que cubren una amplia gama de formas de introducir datos en txtai. También hay ejemplos de flujos de trabajo que se pueden descargar desde este Hugging Face Space.
path : /tmp/hn
embeddings :
path : sentence-transformers/all-MiniLM-L6-v2
content : true
tabular :
idcolumn : url
textcolumns :
- title
workflow :
index :
tasks :
- batch : false
extract :
- hits
method : get
params :
tags : null
task : service
url : https://hn.algolia.com/api/v1/search?hitsPerPage=50
- action : tabular
- action : index
writable : true
Este flujo de trabajo analiza el feed de la página principal de Hacker News y crea un índice de incrustaciones en la ruta /tmp/hn
.
Ejecute el flujo de trabajo con lo siguiente.
from txtai . app import Application
app = Application ( "index.yml" )
list ( app . workflow ( "index" , [ "front_page" ]))
Ahora definiremos el flujo de trabajo del chat y lo ejecutaremos como agente.
path : /tmp/hn
writable : false
extractor :
path : google/flan-t5-xl
output : flatten
workflow :
search :
tasks :
- task : txtchat.task.Question
action : extractor
python -m txtchat.agent query.yml
¡Hablemos con Hacker News!
Como puede ver, Hacker News es una fuente de datos muy obstinada.
Obtener respuestas es bueno, pero poder tener respuestas sobre su procedencia es mejor. Creemos un flujo de trabajo que agregue un enlace de referencia a cada respuesta.
path : /tmp/hn
writable : false
extractor :
path : google/flan-t5-xl
output : reference
workflow :
search :
tasks :
- task : txtchat.task.Question
action : extractor
- task : txtchat.task.Answer