Recherche optimisée par Retrieval Augmented Generation (RAG)
txtchat crée des applications de recherche basées sur la génération augmentée de récupération (RAG) et les modèles de langage.
L’avènement des grands modèles linguistiques (LLM) a poussé à réinventer la recherche. La recherche basée sur LLM peut faire plus. Au lieu de simplement renvoyer des résultats, la recherche peut désormais extraire, résumer, traduire et transformer le contenu en réponses.
txtchat ajoute un ensemble d'agents intelligents disponibles pour s'intégrer aux plateformes de messagerie. Ces agents ou personnages sont associés à un compte automatisé et répondent aux messages avec des réponses basées sur l'IA. Les workflows peuvent utiliser de grands modèles de langage (LLM), de petits modèles ou les deux.
txtchat est construit avec Python 3.8+ et txtai.
Le moyen le plus simple d'installer est via pip et PyPI
pip install txtchat
Vous pouvez également installer txtchat directement depuis GitHub. L'utilisation d'un environnement virtuel Python est recommandée.
pip install git+https://github.com/neuml/txtchat
Python 3.8+ est pris en charge
Consultez ce lien pour vous aider à résoudre les problèmes d'installation spécifiques à l'environnement.
txtchat est conçu pour prendre en charge un certain nombre de plateformes de messagerie. Actuellement, Rocket.Chat est la seule plate-forme prise en charge étant donné sa capacité à être installée dans un environnement local et sa licence MIT. Le moyen le plus simple de démarrer une instance Rocket.Chat locale consiste à utiliser Docker Compose. Consultez ces instructions pour en savoir plus.
L'extension de txtchat à des plates-formes supplémentaires ne nécessite qu'une nouvelle sous-classe d'agent pour cette plate-forme.
Un persona est une combinaison d'un agent de chat et d'un workflow qui détermine le type de réponses. Chaque agent est lié à un compte sur la plateforme de messagerie. Les workflows Persona sont indépendants de la plateforme de messagerie. Le référentiel txtchat-persona contient une liste de flux de travail de personnalité standard.
Consultez le répertoire d’exemples pour des configurations supplémentaires de personnages et de flux de travail.
La commande suivante montre comment démarrer un personnage 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
Vous voulez ajouter un nouveau personnage ? Créez simplement un flux de travail txtai et enregistrez-le dans un fichier YAML.
Ce qui suit est une liste de vidéos YouTube qui montrent le fonctionnement de txtchat. Ces vidéos exécutent une série de requêtes avec le personnage Wikitalk. Wikitalk est une combinaison d'un index d'intégration Wikipédia et d'une invite LLM pour répondre aux questions.
Chaque réponse affiche une référence associée à l'origine des données. Wikitalk dira « Je n'ai pas de données à ce sujet » lorsqu'il n'a pas de réponse.
Conversation avec Wikitalk sur l'histoire.
Parlez de sport.
Questions artistiques et culturelles.
Faisons un quiz Wikitalk sur la science.
Tous les flux de travail n'ont pas besoin d'un LLM. Il existe de nombreux petits modèles disponibles pour effectuer une tâche spécifique. Le personnage Résumé lit simplement l’URL d’entrée et résume le texte.
Comme le personnage de résumé, M. French est un personnage simple qui traduit le texte saisi en français.
Vous souhaitez connecter txtchat à vos propres données ? Tout ce que vous avez à faire est de créer un workflow txtai. Passons en revue un exemple de création d'un flux de travail d'indexation Hacker News et d'un personnage txtchat.
Tout d’abord, nous allons définir le flux de travail d’indexation et créer l’index. Cela se fait avec un flux de travail pour plus de commodité. Alternativement, il peut s'agir d'un programme Python qui crée un index d'intégration à partir de votre ensemble de données. Il existe plus de 50 exemples de blocs-notes couvrant un large éventail de façons d'obtenir des données dans txtai. Il existe également des exemples de flux de travail qui peuvent être téléchargés à partir de cet 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
Ce flux de travail analyse le flux de la première page de Hacker News et crée un index d'intégration au chemin /tmp/hn
.
Exécutez le flux de travail avec ce qui suit.
from txtai . app import Application
app = Application ( "index.yml" )
list ( app . workflow ( "index" , [ "front_page" ]))
Nous allons maintenant définir le workflow de chat et l'exécuter en tant qu'agent.
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
Parlons-en à Hacker News !
Comme vous pouvez le constater, Hacker News est une source de données très avisée !
Obtenir des réponses, c'est bien, mais être capable d'avoir des réponses indiquant d'où elles viennent est plus agréable. Créons un flux de travail qui ajoute un lien de référence à chaque réponse.
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