phycholosogy/RAG-privacy
요약
RAG 시스템의 프라이버시 취약점과 이점을 분석한 연구 논문을 소개합니다. 새로운 공격 방법론을 통해 검색 데이터베이스 유출 위험을 입증하는 동시에, RAG가 LLM의 학습 데이터 유출을 완화할 수 있다는 양면성을 밝혀냈습니다.
핵심 포인트
- RAG 시스템의 개인 검색 데이터베이스 유출 취약성 입증
- RAG가 LLM 학습 데이터 유출을 완화할 수 있는 가능성 확인
- 실험을 위한 Llama 2 및 다양한 라이브러리 설치 가이드 제공
- 데이터 전처리부터 평가까지의 4단계 실험 프로세스 안내
저희의 논문은 'The Good and The Bad: Exploring Privacy Issues in Retrieval-Augmented Generation (RAG)'에서 확인하실 수 있습니다.
검색 증강 생성 (Retrieval-augmented generation, RAG)은 언어 모델 (Language model)에 독점적이고 개인적인 데이터를 활용할 수 있게 하는 강력한 기술이지만, 데이터 프라이버시 (Data privacy)가 핵심적인 관심사입니다. 광범위한 연구를 통해 대규모 언어 모델 (Large language models, LLMs)의 프라이버시 위험이 입증된 반면, RAG 기술은 LLM 생성의 고유한 동작을 잠재적으로 재구성하여 현재 충분히 탐구되지 않은 새로운 프라이버시 문제를 제기할 수 있습니다. 본 연구에서 저희는 새로운 공격 방법론을 사용하여 광범위한 실증적 연구를 수행하였으며, 이를 통해 개인적인 검색 데이터베이스 (Retrieval database)를 유출하는 RAG 시스템의 취약성을 입증했습니다. RAG가 검색 데이터에 가져오는 새로운 위험에도 불구하고, 저희는 RAG가 LLM의 학습 데이터 (Training data) 유출을 완화할 수 있다는 점을 추가로 밝혀냈습니다. 전반적으로, 본 논문은 검색 증강 LLM (Retrieval-augmented LLMs)의 프라이버시 보호에 대한 새로운 통찰력을 제공하며, 이는 LLM 및 RAG 시스템 구축자 모두에게 도움이 될 것입니다.
먼저, 귀하의 CUDA 버전과 호환되는 버전을 선택하여 GPU 관련 라이브러리를 수동으로 설치할 것을 권장합니다. 호환되는 버전은 torch 설치 가이드 (torch install guide)에서 찾을 수 있습니다.
pip3 install torch torchvision torchaudio
그 다음, Llama 2 설치 가이드 (Llama 2 install guide)를 따라 Llama 2를 설치하십시오. 주의 사항으로, 모델( tokenizer.model 파일을 포함하여 Llama의 파라미터를 저장하는 폴더)을 .\\Model 폴더에 다운로드해야 합니다.
예를 들어, 다음과 같은 파일 구조를 가질 수 있습니다.
|-- Model
|-- tokenizer.model
|-- llama-2-7b-chat
...
마지막으로, 다른 필요한 패키지들을 설치하려면 다음 방법 중 하나를 사용할 수 있습니다.
requirements.txt 파일로부터 설치:
pip install -r requirements.txt
또는 특정 패키지들을 개별적으로 설치:
pip install langchain langchain_community sentence_transformers FlagEmbedding chromadb chardet nltk
저희의 전처리된 데이터셋은 구글 드라이브 (Google drive) 링크를 통해 확인하실 수 있습니다.
데이터셋을 .\Data 폴더에 압축 해제해 주세요. 다음과 같은 파일 구조를 확인할 수 있습니다.
|-- Data
|-- chatdoctor
|-- enron-mail
...
원본 데이터셋은 여기에서도 찾을 수 있습니다: chatdoctor, wikitext-103-raw-v1 및 enron-mail.
저희의 실험을 실행하는 데에는 검색 데이터베이스 (retrieval database), 프롬프트 생성 (generate prompt), 언어 모델 실행 (run language model), 그리고 평가 결과 (evaluation results)의 4단계가 있습니다. 아래는 이 Python 스크립트 파일들을 실행하는 방법에 대한 간략한 소개이며, 각 파일 내에 참조할 수 있는 상세한 주석이 포함되어 있습니다.
이 섹션에서는 데이터셋에 대한 전처리 (필요한 경우)를 수행하고 벡터 데이터베이스 (vector database)를 구축합니다.
bge-large-en-v1.5 모델을 사용하여 chatdoctor 학습 세트 (training set)를 위한 데이터베이스를 구축하려면 다음 코드를 사용할 수 있습니다.
export CUDA_VISIBLE_DEVICES=1
python retrieval_database.py \
--dataset_name="chatdoctor-train" \
...
encoder_model 파라미터를 bge-large-en-v1.5, all-MiniLM-L6-v2, e5-base-v2, open-ai 또는 Hugging Face에 있는 임베딩 모델 (embedding model)의 정확한 모델 이름으로 변경할 수 있습니다.
dataset_name 파라미터는 enron-mail 및 chatdoctor 값으로 변경할 수 있습니다. enron-mail-body는 데이터셋의 메일 본문만 남겨두는 것이며, enron-mail-strip은 데이터셋의 모든 줄 바꿈을 삭제하는 것입니다.
chatdoctor-train과 같이 데이터셋 이름 뒤에 -train을 추가할 수도 있습니다. 이 경우 데이터셋은 학습 세트 (training set)와 테스트 세트 (test set)로 분할됩니다. 그리고 성능을 자동으로 평가하기 위해 ./Data/{dataset_name}-test 폴더에 eval_input.json 정보를 생성합니다.
혼합 데이터셋 (mix datasets)을 생성하려면 flag_mix 파라미터를 True로 설정하면 됩니다. 데이터셋은 wikitext-103과 혼합되며, 검색 데이터베이스는 mix_{dataset_name}_wikitext-103으로 명명됩니다.
공격 (attack) 또는 성능 (performance)을 실행하려면 다음 코드를 실행하면 됩니다.
export CUDA_VISIBLE_DEVICES=1
python generate_prompt.py
generate_prompt.py에는 24개의 파라미터가 사용 가능하며, 더 자세한 정보는 주석을 참조해 주세요.
예를 들어, 다음과 같은 설정을 사용하여 chatdoctor-train에 대한 타겟 공격 (target attack)을 실행할 수 있습니다:
if __name__ == '__main__':
exp_name = 'chat-target'
settings = {'question': {'question_prefix': ['I want some advice about'],
...
generate_prompt.py를 실행한 후에는, 폴더 최상단에 {exp_name}.sh 파일이 생성됩니다. 다음 코드를 직접 실행할 수 있습니다:
sh ./{exp_name}.sh
또는, .sh 파일을 열어 내부의 명령어를 다른 머신에 전달하거나 다른 GPU를 사용할 수도 있습니다.
이전 코드 부분이 실행 완료된 후에는, 다음 코드를 사용하여 결과를 평가 (evaluate)할 수 있습니다:
python evaluation_results.py \
--exp_name="chat-target"
exp_name은 이전 코드와 동일해야 합니다.
파일의 디렉토리 및 구조는 다음과 같습니다:
|-- imgs ... # Readme.py에 있는 모든 이미지
|-- intro.png
|-- Data ... # 검색 데이터 (retrieval data) 구축을 위한 모든 데이터셋이 여기에 저장됨
...
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub AI Tools의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기