본 논문에서는 특정 상품에 대한 문서를 조작해서 LLM의 추천 상위 순위에 위치하도록 하기 위한 논문이다.
예를들어,
쿼리: "노트북 괜찮은걸로 5개 추천해줘"
대답: "1등: dell, 2등: apple, 3등: 삼성 ..."
위 대답을 하기 위해 LLM은 웹사이트에서 각 제품(P)에 대한 컨텐츠 문서(D)을 가져오며, 사실상 이러한 정보는 벡터로써 지식 DB에 저장되어있을 것이다.
이러한 지식 DB를 기반으로 RAG가 각 P에 대한 D을 가져오고 최종적으로 대답을 하며, 대답하는 과정에서 우선순위를 매겨 대답하게 된다.
본 논문은 여기서 우리가 조작하고자 하는 제품이 이미 지식 DB에 있으며, RAG가 해당 제품-문서을 가져온다고 가정하고 시작한다.
그래서 제품 혹은 문서의 정보를 adversarial attack을 통해 조작하여 우리 제품이 상위에 랭크하도록 조작한다.

위 그림은,
제품을 추천해달라는 쿼리를 입력 받으면,
지식 DB에 있는 각 제품별 문서를 참고하여 LLM에 입력한다. RAG 시스템이라고 생각하자. 다만 Product B에 대해선 injection(adversarial attack)을 하여 B 제품을 상위로 올리려는 악성 행위를 수행한다.
RAG 시스템은 본래 Q(쿼리), D(문서), P(제품) 정보 등을 LLM prompt로 작성하여 LLM 모델에 입력해주는 역할을 하는데, 본 논문에서는 이 부분을 수동으로 템플릿을 작성하여 LLM 모델에 입력한다.
그에따라 LLM 응답을 받고, LLM response에서와 같이 상품 B가 상위에 위치한다.

위 수식(1)에서
는 n개의 documents에 대한 집합이며, 이 문서들은 사용자의 질문 쿼리인 Q와 연관 있는 문서이다.
이 문서들은 임베딩으로 부터 가져와진것으로 보며, 지식 DB에서 RAG가 연관 정보를 가져오는 메커니즘과 사실상 같다.
는 사용자 쿼리이며, "상품 여러개 추천해줘"와 같은 질문이다.
는, n개의 상품의 집합을 뜻하며, 각 상품을 뜻하는 는 각 문서를 뜻하는 와 연관되어있다고 가정한다.
에는 상품의 브랜드와 상품의 모델명을 포함한다.
이제 이러한 정보들을 이용하여 RAG가 LLM에게 주입하듯 LLM prompt을 작성해야하는데, 본 논문에선 이걸 template 라고 한다.
로 표현되며, 당연하게도 LLM prompt에는 Q, D, P가 들어있어야한다.
여기서 는 템플릿을 랜덤화 하는것인데, 이게 필요한 이유는 기법을 평가할때 10번 반복할텐데 이에 대해 항상 같은 응답이 나오면 안되기에 랜덤화 변수를 추가해주는 것이다.

위 수식에서 는 대답 R에서 상품 P들의 랭킹 스코어를 뜻한다.
특히, 는 대답 R에서 i번째 상품의 랭킹 스코어를 뜻한다.
랭킹 스코어 산정은, 만약 5개의 제품을 추천받고, i번째 상품이 두번째에 위치한다면, 5 - 2 + 1 = 4점이 된다.
즉, 랭킹 스코어가 높을수록 상위 랭크에 위치한다는 의미이다.

수식 (2)에서 가운데 수식을 집중적으로 보면 된다.
위 수식은 제품 점수의 분포를 나타낸다.
는 x와 y가 같으면 1, 다르면 0이다.
왼쪽 소괄호 부분의 은 상품1,...,상품n에 대한 랭킹 점수이다.
오른쪽 대괄호는 똑같이 상품1,...,상품n에 대한 랭킹 점수이지만, 응답을 랜덤으로 받기 위해 이 추가로 삽입되었다.
그리고 이 소괄호과 대괄호가 같으면 1, 다르면 0으로 해서 점수의 분포를 알수 있게된다.
아래 수식과 함께 보면 더 이해가 잘된다.

세번째는, 상품1의 점수가 1점이고, 상품2의 점수가 2점인 경우의 확률을 구하는것이다. 40%에 달한다.
뭔가 내가 생각했을땐 상품1이 1,2,3,4,5점일 확률분포를 구하는건지 알았는데 그렇진 않아서 좀 의아했다.

위는 템플릿 구성이며 위에서 언급했듯이 Q, D, P, 을 입력한다.
는 에 의해 랜덤화된 것이다.

는 공격자가 순위를 올리고 싶은 타깃 제품,
는 에 대응된 문서를 뜻한다.
그리고 a는 을 조작하기 위한 adversarial prompt이다.
수식 (4)의 목표는,
adversarial prompt a을 연관 문서 의 수정은 최소화 하면서, 특정 제품 의 예측된 랭킹은 최대화 하기 위한 수식이다.
여기서 a는 prompt-injection setting으로 가정하고, 기존 문서에 악성 text을 삽입하는 형태이다.
데이터셋으론 RAGDOLL을 사용하며 유명한 소비자 상품 웹사이트들의 집합이다.
5개의 그룹, 10개의 카테고리(총 50개 카테고리), 8개의 브랜드, 1~3개의 모델로 구성된다.
특이사항으론 아마존같은 3rd 웹사이트 문서 내용 수정이 어려워 제외한다. 예를들어 그 페이지가 스크래핑 된다면, 제품 설명서 뿐 아니라 별점 및 리뷰 내용도 같이 스크래핑 되기에, 컨텐츠 제작자가 수정할수 없는 내용들이 포함되어 조작 가정이 어렵기 때문이다.

위 그림은 "mix and match" products and documents에 대한 실험이다.
본 실험에선 일반적으로 제품-문서 쌍을 통해 응답의 상품에 대한 랭킹 점수 도출한다.
그렇기에 랭킹 점수가 제품에 영향을 받은것인지 문서에 받은것인지 명확히 알기가 어렵다.
그래서 제품 x 문서에 대해 실험을 해주고 위 실험 결과를 도출하였다.
해석하자면, CHUWI 문서에 대해선 어느 제품이라도 랭킹이 좋지 못하게 나왔으며, 삼성 제품에 대해선 어느 문서라도 꽤 좋은 랭킹 점수를 얻는다.
참고로 위 실험은 조작된 실험이 아니라, 조작되기 전 제품-문서 쌍에 대한 실험이다.

위 실험은, 문서, 제품 각각에 대한 F-statistic에 대한 실험이다. F-statistic이 높게 나올수록 랭킹 점수 향상과 비례 관계가 있다는 의미이다.
Llama와 같은 경우는 문서, 제품명과 꽤 연관이 있었고,
GPT-4 Turbo같은 경우는 제품명에 따라 랭킹 점수에 영향이 컸다.
즉, LLM 모델 별로 어떤 내용을 조작해야하는지에 대한 전략이 상이하다는 의미이다.
하지만 추측이긴 하지만 점점 더 발전된 모델일수록 Llama와 같은 경향을 보일 것이다.

각 LLM 모델별로 제품명, 문서, 컨텍스트 위치에 대한 F-statistic 점수이다.
제품명과 문서는 이전에 말한바와 같은 양상을 띈다.
컨텍스트 위치는 대부분 큰 영향을 받는데, 여기서 말하는 컨텍스트 위치란 LLM Prompt에 입력되는 제품 순서를 뜻한다.
이에 따라 응답의 랭킹에 큰 영향을 끼친다는것이고, 그렇기에 우리가 제안하는 같은걸 템플릿에 넣어서 랜덤화 하기에 우리 실험 설정이 합리적이다라는 입증이기도 하다.

위 실험에서는 공격 대상이 CHUWI였고, Natural 실험에서는 항상 랭킹이 하위에 위치하였지만 우리 Adversarial Attack을 통해 상위에 위치하게 하였다.
즉, 본 논문이 제안하는 기법이 유효하다는것을 주장한다.

본 논문에서 랭킹 조작을 하기 위해 TAP(Tree of Attacks with Pruning)에 기반한다.
이는 여러개의 공격 프롬프트 후보를 트리처럼 확장한뒤 성능이 좋은 후보만 남기면서 jailbreak prompt 탐색하는 방법으로 쓰인 기법이다. 우리는 이 기법을 응용해 adversarial injection에 쓰이는 a을 찾는데 사용한다.
위와 같이 3가지 절차로 이루어진다.
Branching -> Evaluation -> Pruning

위 세가지 절차를 시각화 하여 표현해보았다.
트리 형식으로 확장하고, 각 단말 노드의 점수를 산정하고, 산정된 점수 기반으로 프루닝 하여 가지를 치고, 다시 첫 단계부터 반복하는 형태이다.

위 테이블을 통해 각 LLM별로 랭킹 조작 행위를 통해 예를들어 Llama같은 경우 6등의 상승이 있었다.라는 사실을 알수 있다. (전체 8등중에)

방금 봤던 테이블을 시각화 하여 표현하였으며 Natural에 비해 Adversarial의 랭킹 점수가 향상한것을 볼수 있다.
마지막으로,
본 논문에서는 GPT4-Turbo에서 수행한 Adversarial 공격에 만들어진 Adversarial text을 그대로 perplexity.ai에 적용해보았는데, 그 결과 역시 좋게 나왔음을 보인다. (위 그림에서 Sonar Large Online)
이를 전송 공격이라 하며 이러한 전송 공격을 한 이유는, 퍼플렉시티에서는 full API을 제공하지 않아 전송에 대한 응답을 API로 받을수 없어 실험하기 제한적인 환경이다. 이를 해결하기 위해 GPT4에서 Adversarial Text을 만들고 그대로 퍼플렉시티에 입력한것이다.
본 논문에서 결국엔 RAG가 타겟하는 제품과 그에 대응하는 조작된 문서를 지식 DB로부터 가져왔다는 가정이 들어간다.
즉, RAG가 우리 제품을 가져왔다는 가정을 하고나서, 그 후에 우리 제품을 그 후보군중에서 어떻게 상위 랭크에 위치 시킬지에 대한 이야기이다.
오히려 RAG가 우리 제품을 가져올 순위(확률)을 높이는 방식이 real-world에서 더 실용적이지 않을까? 싶었다.