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은 다양한 메시징 플랫폼을 지원하도록 설계되었으며 앞으로도 지원될 것입니다. 현재 Rocket.Chat은 MIT 라이선스를 취득하여 로컬 환경에 설치할 수 있다는 점을 고려하면 유일하게 지원되는 플랫폼입니다. 로컬 Rocket.Chat 인스턴스를 시작하는 가장 쉬운 방법은 Docker Compose를 사용하는 것입니다. 자세한 내용은 이 지침을 참조하세요.
txtchat을 추가 플랫폼으로 확장하려면 해당 플랫폼에 대한 새로운 Agent 하위 클래스만 필요합니다.
페르소나는 응답 유형을 결정하는 채팅 에이전트와 워크플로의 조합입니다. 각 에이전트는 메시징 플랫폼의 계정에 연결되어 있습니다. 페르소나 워크플로우는 메시징 플랫폼에 구애받지 않습니다. 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 프롬프트의 조합입니다.
모든 답변에는 데이터의 출처와 관련된 참조가 표시됩니다. Wikitalk는 답변이 없으면 "나는 그것에 대한 데이터가 없습니다"라고 말할 것입니다.
역사에 관해 Wikitalk와 대화합니다.
스포츠에 대해 이야기하십시오.
예술과 문화에 관한 질문입니다.
과학에 관한 Wikitalk에 퀴즈를 풀어 봅시다.
모든 워크플로에 LLM이 필요한 것은 아닙니다. 특정 작업을 수행하는 데 사용할 수 있는 훌륭한 소형 모델이 많이 있습니다. 요약 페르소나는 단순히 입력 URL을 읽고 텍스트를 요약합니다.
요약 페르소나와 마찬가지로 Mr. French는 입력 텍스트를 프랑스어로 변환하는 간단한 페르소나입니다.
txtchat을 자신의 데이터에 연결하고 싶으십니까? 당신이 해야 할 일은 txtai 작업 흐름을 만드는 것뿐입니다. Hacker News 색인 작업 흐름과 txtchat 페르소나를 구축하는 예를 살펴보겠습니다.
먼저 인덱싱 워크플로를 정의하고 인덱스를 작성하겠습니다. 이는 편의를 위해 워크플로우를 통해 수행됩니다. 또는 데이터 세트에서 임베딩 인덱스를 구축하는 Python 프로그램일 수도 있습니다. 데이터를 txtai로 가져오는 다양한 방법을 다루는 50개 이상의 예제 노트북이 있습니다. 이 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
이 워크플로는 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