检索增强生成 (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