Retrieval Augmented Generation (RAG)-gestützte Suche
txtchat erstellt Suchanwendungen mit Retrieval Augmented Generation (RAG) und Sprachmodellen.
Das Aufkommen großer Sprachmodelle (LLMs) hat zu einer Neuinterpretation der Suche geführt. Die LLM-gestützte Suche kann mehr. Anstatt nur Ergebnisse zurückzugeben, kann die Suche jetzt Inhalte extrahieren, zusammenfassen, übersetzen und in Antworten umwandeln.
txtchat fügt eine Reihe intelligenter Agenten hinzu, die für die Integration in Messaging-Plattformen verfügbar sind. Diese Agenten oder Personas sind mit einem automatisierten Konto verknüpft und antworten auf Nachrichten mit KI-gestützten Antworten. Workflows können große Sprachmodelle (LLMs), kleine Modelle oder beides verwenden.
txtchat wurde mit Python 3.8+ und txtai erstellt.
Der einfachste Weg zur Installation ist über Pip und PyPI
pip install txtchat
Sie können txtchat auch direkt von GitHub installieren. Die Verwendung einer virtuellen Python-Umgebung wird empfohlen.
pip install git+https://github.com/neuml/txtchat
Python 3.8+ wird unterstützt
Unter diesem Link finden Sie Hilfe bei der Lösung umgebungsspezifischer Installationsprobleme.
txtchat ist für die Unterstützung einer Reihe von Messaging-Plattformen konzipiert und wird diese auch unterstützen. Derzeit ist Rocket.Chat die einzige unterstützte Plattform, da sie in einer lokalen Umgebung installiert werden kann und über eine MIT-Lizenz verfügt. Der einfachste Weg, eine lokale Rocket.Chat-Instanz zu starten, ist mit Docker Compose. Weitere Informationen finden Sie in diesen Anweisungen.
Für die Ausweitung von txtchat auf zusätzliche Plattformen ist lediglich eine neue Agent-Unterklasse für diese Plattform erforderlich.
Eine Persona ist eine Kombination aus einem Chat-Agenten und einem Workflow, der die Art der Antworten bestimmt. Jeder Agent ist an ein Konto in der Messaging-Plattform gebunden. Persona-Workflows sind unabhängig von der Messaging-Plattform. Das txtchat-persona-Repository verfügt über eine Liste standardmäßiger Persona-Workflows.
Weitere Persona- und Workflow-Konfigurationen finden Sie im Beispielverzeichnis.
Der folgende Befehl zeigt, wie man eine txtchat-Persona startet.
# 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
Möchten Sie eine neue Persona hinzufügen? Erstellen Sie einfach einen txtai-Workflow und speichern Sie ihn in einer YAML-Datei.
Im Folgenden finden Sie eine Liste von YouTube-Videos, die zeigen, wie txtchat funktioniert. Diese Videos führen eine Reihe von Abfragen mit der Wikitalk-Persona durch. Wikitalk ist eine Kombination aus einem Wikipedia-Einbettungsindex und einer LLM-Eingabeaufforderung zur Beantwortung von Fragen.
Jede Antwort zeigt einen zugehörigen Hinweis darauf, woher die Daten stammen. Wikitalk sagt „Ich habe keine Daten dazu“, wenn es keine Antwort gibt.
Gespräch mit Wikitalk über Geschichte.
Sprechen Sie über Sport.
Fragen zu Kunst und Kultur.
Lassen Sie uns Wikitalk zum Thema Wissenschaft befragen.
Nicht alle Arbeitsabläufe benötigen ein LLM. Es gibt viele tolle kleine Modelle, um eine bestimmte Aufgabe zu erfüllen. Die Persona „Zusammenfassung“ liest einfach die Eingabe-URL und fasst den Text zusammen.
Wie die Zusammenfassungspersona ist Mr. French eine einfache Persona, die Eingabetext ins Französische übersetzt.
Möchten Sie txtchat mit Ihren eigenen Daten verbinden? Sie müssen lediglich einen txtai-Workflow erstellen. Sehen wir uns ein Beispiel für den Aufbau eines Hacker News-Indizierungsworkflows und einer txtchat-Persona an.
Zuerst definieren wir den Indexierungsworkflow und erstellen den Index. Der Einfachheit halber erfolgt dies mit einem Workflow. Alternativ könnte es sich um ein Python-Programm handeln, das aus Ihrem Datensatz einen Einbettungsindex erstellt. Es gibt über 50 Beispielnotizbücher, die ein breites Spektrum an Möglichkeiten abdecken, Daten in txtai zu übertragen. Es gibt auch Beispiel-Workflows, die in diesem Hugging Face Space heruntergeladen werden können.
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
Dieser Workflow analysiert den Hacker News-Titelseiten-Feed und erstellt einen Einbettungsindex im Pfad /tmp/hn
.
Führen Sie den Workflow wie folgt aus.
from txtai . app import Application
app = Application ( "index.yml" )
list ( app . workflow ( "index" , [ "front_page" ]))
Jetzt definieren wir den Chat-Workflow und führen ihn als Agent aus.
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
Sprechen wir mit Hacker News!
Wie Sie sehen, ist Hacker News eine äußerst meinungsstarke Datenquelle!
Antworten zu bekommen ist schön, aber noch schöner ist es, Antworten mit der Herkunft der Antworten zu haben. Erstellen wir einen Workflow, der jeder Antwort einen Referenzlink hinzufügt.
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