cxcscmu/RAGViz
요약
RAGViz는 LLM이 답변 생성 시 참조하는 컨텍스트의 문서 및 토큰 수준 어텐션을 시각화하는 도구입니다. 특정 문서의 추가 및 제거를 통해 검색된 정보가 답변 생성에 미치는 영향력을 진단할 수 있습니다.
핵심 포인트
- 문서 및 토큰 단위의 어텐션 시각화 기능 제공
- 문서 추가/제거를 통한 컨텍스트 영향력 비교 가능
- vLLM 및 HuggingFace transformers 기반 모델 지원
- DiskANN 인덱스와 AnchorDR를 활용한 효율적 검색
RAGViz (Retrieval Augmented Generation Visualization, 검색 증강 생성 시각화)는 LLM(Large Language Model)이 답변 생성을 근거로 삼기 위해 제공받는 검색된 컨텍스트(context)에 대해 문서 및 토큰 수준의 어텐션(attention)을 모두 시각화하는 도구입니다.
- RAGViz는 특정 문서가 컨텍스트에 포함되지 않았을 때 생성되는 토큰을 비교할 수 있도록 문서를 추가/제거하는 기능을 제공합니다.
- 두 기능을 결합하면 특정 검색된 문서나 텍스트 섹션이 LLM의 답변 생성에 미치는 효과와 영향력을 진단할 수 있습니다.
RAGViz의 기본적인 데모는 여기서 확인할 수 있습니다.
다음은 RAGViz 데모의 시스템 구성입니다:
-
검색을 위해 Pile-CC 영어 문서가 사용됩니다.
-
문서는 각각 약 2,000만 개의 문서를 포함하는 별도의 노드에 있는 4개의 DiskANN 인덱스로 분할됩니다.
-
문서는 AnchorDR를 사용하여 특징 벡터(feature vectors)로 임베딩(embedding)됩니다.
RAGViz에서 AnchorDR를 사용하려면 Python 환경이 올바르게 설정되도록 여기 리포지토리의 설치 지침을 따라야 합니다.pip install -r backend/requirements.txt를 실행한 후에 수행하십시오. -
LLaMa2 생성/어텐션 출력은 vLLM 및 HuggingFace transformers 라이브러리를 통해 수행됩니다.
-
프론트엔드 UI는 Lepton 검색 엔진을 기반으로 합니다.
backend/snippet에 새로운 파일과 클래스를 추가하여 RAG의 컨텍스트에 사용되는 스니펫(snippet)을 수정할 수 있습니다.
, backend/ragviz.py`
및 frontend/src/app/components/search.tsx
에 이를 추가하십시오. 현재 다음과 같은 스니펫을 제공합니다:
-
Naive First:
-
문서의 첫 128개 토큰으로 문서를 표현합니다.
-
Sliding Window (슬라이딩 윈도우):
-
128개 토큰의 윈도우와 쿼리(query) 사이의 내적 유사도(inner product similarity)를 계산합니다. 쿼리와 가장 유사한 윈도우를 사용하여 문서를 표현합니다.
검색을 위한 새로운 데이터셋은 backend/search에 새로운 파일과 클래스를 추가하고, 그에 따라 backend/ragviz.py를 수정하여 추가할 수 있습니다.
현재 다음 데이터셋에 대한 구현을 완료했습니다:
- Clueweb22B 영어 문서
- Pile-CC 데이터셋
HuggingFace transformers 라이브러리에서 지원하는 모든 모델을 LLM 백본 (backbone)으로 사용할 수 있습니다.
빠른 추론 (inference)을 위해 vLLM을 적용하려면, LLM 백본이 vLLM에 의해 지원되어야 합니다. vLLM이 지원하는 모델 목록은 여기에서 확인할 수 있습니다.
backend/.env.example 파일 내부에서 RAG를 위한 모델의 경로를 설정할 수 있습니다.
데모를 위해 우리는 meta-llama/Llama-2-7b-chat-hf를 사용했습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub AI Tools의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기