Pesquisa alimentada por geração aumentada de recuperação (RAG)
txtchat constrói geração aumentada de recuperação (RAG) e aplicativos de pesquisa baseados em modelo de linguagem.
O advento de grandes modelos de linguagem (LLMs) impulsionou uma reimaginação da pesquisa. A pesquisa baseada em LLM pode fazer mais. Em vez de apenas trazer resultados, a pesquisa agora pode extrair, resumir, traduzir e transformar conteúdo em respostas.
txtchat adiciona um conjunto de agentes inteligentes que estão disponíveis para integração com plataformas de mensagens. Esses agentes ou personas estão associados a uma conta automatizada e respondem às mensagens com respostas baseadas em IA. Os fluxos de trabalho podem usar modelos de linguagem grandes (LLMs), modelos pequenos ou ambos.
txtchat é construído com Python 3.8+ e txtai.
A maneira mais fácil de instalar é via pip e PyPI
pip install txtchat
Você também pode instalar o txtchat diretamente do GitHub. É recomendado usar um ambiente virtual Python.
pip install git+https://github.com/neuml/txtchat
Python 3.8+ é compatível
Consulte este link para ajudar a resolver problemas de instalação específicos do ambiente.
txtchat foi projetado e oferecerá suporte a diversas plataformas de mensagens. Atualmente, Rocket.Chat é a única plataforma suportada devido à sua capacidade de ser instalada em um ambiente local, além de ser licenciada pelo MIT. A maneira mais fácil de iniciar uma instância local do Rocket.Chat é com Docker Compose. Veja estas instruções para mais.
Estender o txtchat para plataformas adicionais só precisa de uma nova subclasse de Agente para essa plataforma.
Uma persona é uma combinação de um agente de chat e um fluxo de trabalho que determina o tipo de respostas. Cada agente está vinculado a uma conta na plataforma de mensagens. Os fluxos de trabalho Persona são independentes de plataforma de mensagens. O repositório txtchat-persona possui uma lista de fluxos de trabalho de persona padrão.
Consulte o diretório de exemplos para configurações adicionais de persona e fluxo de trabalho.
O comando a seguir mostra como iniciar uma 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
Quer adicionar uma nova persona? Basta criar um fluxo de trabalho txtai e salvá-lo em um arquivo YAML.
A seguir está uma lista de vídeos do YouTube que mostram como funciona o txtchat. Esses vídeos executam uma série de consultas com a persona do Wikitalk. Wikitalk é uma combinação de um índice de incorporação da Wikipedia e um prompt LLM para responder perguntas.
Cada resposta mostra uma referência associada à origem dos dados. O Wikitalk dirá “Não tenho dados sobre isso” quando não tiver uma resposta.
Conversa com Wikitalk sobre história.
Fale sobre esportes.
Questões de arte e cultura.
Vamos testar o Wikitalk sobre ciência.
Nem todos os fluxos de trabalho precisam de um LLM. Existem muitos modelos pequenos excelentes disponíveis para executar uma tarefa específica. A persona Resumo simplesmente lê o URL de entrada e resume o texto.
Assim como a persona do resumo, o Sr. French é uma persona simples que traduz o texto de entrada para o francês.
Quer conectar o txtchat aos seus próprios dados? Tudo o que você precisa fazer é criar um fluxo de trabalho txtai. Vejamos um exemplo de construção de um fluxo de trabalho de indexação do Hacker News e uma persona txtchat.
Primeiro, definiremos o fluxo de trabalho de indexação e construiremos o índice. Isso é feito com um fluxo de trabalho por conveniência. Alternativamente, poderia ser um programa Python que cria um índice de incorporação a partir do seu conjunto de dados. Existem mais de 50 cadernos de exemplo que cobrem uma ampla variedade de maneiras de inserir dados no txtai. Existem também exemplos de fluxos de trabalho que podem ser baixados neste 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
Este fluxo de trabalho analisa o feed da primeira página do Hacker News e cria um índice de embeddings no caminho /tmp/hn
.
Execute o fluxo de trabalho com o seguinte.
from txtai . app import Application
app = Application ( "index.yml" )
list ( app . workflow ( "index" , [ "front_page" ]))
Agora definiremos o fluxo de trabalho do chat e o executaremos como agente.
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
Vamos conversar com o Hacker News!
Como você pode ver, o Hacker News é uma fonte de dados altamente opinativa!
Obter respostas é bom, mas ser capaz de obter respostas sobre a origem delas é melhor. Vamos construir um fluxo de trabalho que adicione um link de referência a cada resposta.
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