
Este repositório fornece a implementação oficial do POISONCRAFT: Envenenamento Prático de Geração Aumentada por Recuperação para Modelos de Linguagem Grande.
Este repositório fornece a implementação oficial do POISONCRAFT: Envenenamento Prático da Geração Aumentada por Recuperação para Grandes Modelos de Linguagem.

POISONCRAFT tem como objetivo demonstrar como um agente malicioso pode plantar conteúdo "envenenado" no corpus usado por pipelines de Geração Aumentada por Recuperação (RAG), enganando um Grande Modelo de Linguagem para que ele alucine ou faça referência a conteúdo malicioso. Este código fornece scripts para:
Abaixo está um guia de alto nível para configurar o ambiente. Os requisitos exatos estão listados em requirements.txt. Recomendamos criar um novo ambiente virtual para evitar conflitos:
# Exemplo usando conda
conda create -n PoisonCraft python=3.10
conda activate PoisonCraft
# Instalar dependências
pip install torch==2.4.1 torchvision==0.19.1 torchaudio==2.4.1 --index-url https://download.pytorch.org/whl/cu118
pip install -r requirements.txt
Certas partes deste projeto, como classificação de domínio e categorização de consultas, dependem de chamadas de API (por exemplo, modelos GPT da OpenAI). Você precisa configurar a chave de API e as configurações do modelo da seguinte forma:
"api_key_info": {
"api_keys": ["sua_chave_de_api_openai"],
"api_key_use": 0
}
Nota: Este projeto suporta vários provedores de LLM (por exemplo, OpenAI, Llama e PaLM2). Certifique-se de selecionar o arquivo de configuração apropriado para o seu modelo.
Fornecemos vários scripts bash na pasta scripts para diferentes estágios do pipeline. Abaixo está uma referência passo a passo:
1. Baixar e Preparar Conjuntos de Dados
Execute scripts/run_prepare_dataset.sh para baixar e descompactar os conjuntos de dados, e criar divisões de treino/teste:
bash scripts/run_prepare_dataset.sh
Este script chama internamente:
2. Pré-processar Conjuntos de Dados
Para calcular as pontuações de similaridade ground truth top-k para cada domínio, execute:
bash scripts/run_process_data.sh
3. [Opcional] Avaliando BEIR para Ground Truth
Execute esta etapa apenas se quiser avaliar um modelo de recuperador, pois pode levar um tempo considerável. Siga estes passos:
python src/beir_eval/eval_beir.py --model_code bge-small --dataset nq --top_k 100
bash scripts/run_process_data.sh
Para gerar sufixos adversariais (ou seja, "venenos"), você pode usar:
bash scripts/run_multi_poisoncraft.sh
Você pode personalizar parâmetros como:
Após gerar os sufixos adversariais, você pode avaliar quantas consultas obtêm referências "envenenadas" executando:
bash scripts/run_retrieval_attack.sh
Este script:
Alternativamente, para avaliação no nível do LLM (ou seja, geração final de texto com resultados de recuperação top-k incluídos), você pode usar:
bash scripts/run_target_attack.sh