検索拡張生成 (RAG) を利用した検索
txtchat は、検索拡張生成 (RAG) および言語モデルを活用した検索アプリケーションを構築します。
大規模言語モデル (LLM) の出現により、検索の再考が促されました。 LLM を利用した検索では、さらに多くのことが可能になります。検索は単に結果を返すだけでなく、コンテンツを抽出、要約、翻訳し、回答に変換できるようになりました。
txtchat は、メッセージング プラットフォームと統合できるインテリジェント エージェントのセットを追加します。これらのエージェントまたはペルソナは自動アカウントに関連付けられており、AI を活用した応答でメッセージに応答します。ワークフローでは、大規模言語モデル (LLM)、小規模モデル、またはその両方を使用できます。
txtchat は Python 3.8 以降と txtai で構築されています。
最も簡単なインストール方法は、pip と PyPI を使用することです。
pip install txtchat
GitHub から直接 txtchat をインストールすることもできます。 Python 仮想環境の使用をお勧めします。
pip install git+https://github.com/neuml/txtchat
Python 3.8以降がサポートされています
環境固有のインストールの問題を解決するには、このリンクを参照してください。
txtchat は、多くのメッセージング プラットフォームをサポートするように設計されており、サポートする予定です。現在、MIT ライセンスを取得し、ローカル環境にインストールできることを考慮すると、Rocket.Chat が唯一サポートされているプラットフォームです。ローカルの Rocket.Chat インスタンスを起動する最も簡単な方法は、Docker Compose を使用することです。詳細については、これらの手順を参照してください。
txtchat を追加のプラットフォームに拡張するには、そのプラットフォーム用の新しいエージェント サブクラスのみが必要です。
ペルソナは、チャット エージェントと応答の種類を決定するワークフローを組み合わせたものです。各エージェントはメッセージング プラットフォームのアカウントに関連付けられています。ペルソナ ワークフローは、メッセージング プラットフォームに依存しません。 txtchat-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
新しいペルソナを追加したいですか? txtai ワークフローを作成し、YAML ファイルに保存するだけです。
以下は、txtchat がどのように機能するかを示す YouTube ビデオのリストです。これらのビデオでは、Wikitalk ペルソナを使用して一連のクエリを実行します。 Wikitalk は、Wikipedia の埋め込みインデックスと、質問に答えるための LLM プロンプトを組み合わせたものです。
すべての回答には、データの出所と関連付けられた参照が表示されます。ウィキトークは答えがない場合、「それに関するデータはありません」と言うでしょう。
ウィキトークとの歴史についての会話。
スポーツについて話しましょう。
芸術と文化に関する質問。
ウィキトークで科学についてクイズを出しましょう。
すべてのワークフローに LLM が必要なわけではありません。特定のタスクを実行するために利用できる優れた小型モデルが多数あります。概要ペルソナは、入力 URL を読み取ってテキストを要約するだけです。
サマリー ペルソナと同様に、Mr French は入力テキストをフランス語に翻訳する単純なペルソナです。
txtchat を自分のデータに接続したいですか?必要なのは、txtai ワークフローを作成することだけです。 Hacker News のインデックス作成ワークフローと txtchat ペルソナを構築する例を見てみましょう。
まず、インデックス作成ワークフローを定義し、インデックスを構築します。これは便宜上、ワークフローで行われます。あるいは、データセットからエンベディング インデックスを構築する Python プログラムを使用することもできます。 txtai にデータを取り込むための幅広い方法をカバーする 50 を超えるノートブックの例があります。このハグフェイススペースからダウンロードできるワークフローの例もあります。
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
このワークフローは、Hacker News のフロント ページ フィードを解析し、パス/tmp/hn
に埋め込みインデックスを構築します。
次のようにワークフローを実行します。
from txtai . app import Application
app = Application ( "index.yml" )
list ( app . workflow ( "index" , [ "front_page" ]))
次に、チャット ワークフローを定義し、エージェントとして実行します。
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
ハッカーニュースで話しましょう!
ご覧のとおり、Hacker News は非常に意見の多いデータ ソースです。
答えを得るのは良いことですが、その答えがどこから来たのかを知ることができるのはもっと良いことです。各回答に参照リンクを追加するワークフローを構築してみましょう。
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