檢索增強生成 (RAG) 支援的搜索
txtchat 建構檢索增強生成 (RAG) 和語言模型驅動的搜尋應用程式。
大型語言模型 (LLM) 的出現推動了搜尋的重新構想。由法學碩士支持的搜尋可以做更多事情。搜尋現在不僅可以傳回結果,還可以提取、總結、翻譯內容並將其轉換為答案。
txtchat 新增了一組可與訊息傳遞平台整合的智慧代理程式。這些代理程式或角色與自動帳戶相關聯,並透過人工智慧驅動的回應來回應訊息。工作流程可以使用大型語言模型 (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 旨在並將支援多種訊息傳遞平台。目前,Rocket.Chat 是唯一支援的平台,因為它能夠安裝在本地環境中並且獲得 MIT 許可。啟動本地 Rocket.Chat 實例的最簡單方法是使用 Docker Compose。請參閱這些說明以了解更多資訊。
將 txtchat 擴展到其他平台只需要該平台的新代理子類別。
角色是聊天代理程式和確定回應類型的工作流程的組合。每個代理程式都與訊息傳遞平台中的一個帳戶綁定。 Persona 工作流程與訊息傳遞平台無關。 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 是維基百科嵌入索引和 LLM 提示回答問題的組合。
每個答案都會顯示與數據來源相關的參考資訊。當維基百科沒有答案時,它會說「我沒有這方面的數據」。
與 Wikitalk 對話歷史。
談論運動。
藝術和文化問題。
讓我們來測驗一下維基百科的科學知識。
並非所有工作流程都需要法學碩士。有許多很棒的小型模型可用於執行特定任務。摘要角色只讀取輸入 URL 並總結文字。
與摘要角色一樣,Mr. French 是一個將輸入文字翻譯為法文的簡單角色。
想要將 txtchat 連接到您自己的資料嗎?您需要做的就是建立一個 txtai 工作流程。讓我們來看看建立 Hacker News 索引工作流程和 txtchat 角色的範例。
首先,我們將定義索引工作流程並建立索引。為了方便起見,這是透過工作流程完成的。或者,它可以是一個從資料集建立嵌入索引的 Python 程式。有 50 多個範例筆記本,涵蓋了將資料匯入 txtai 的各種方法。也可以從此 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
此工作流程解析駭客新聞頭版提要並在路徑/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
讓我們來聊聊黑客新聞吧!
正如您所看到的,駭客新聞是一個高度固執己見的資料來源!
得到答案固然很好,但能夠知道答案的來源就更好了。讓我們建立一個工作流程,為每個答案添加參考連結。
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