survey: Enhancing Retrieval-Augmented Large Language Models with Iterative Retrieval-Generation Synergy
Published: 2024-01-07 07:53:30

## 選定理由

EMNLP2023採択。MSRAのAzure AIチームと Tsinghua University (清華大学)の共同研究。

Paper: https://openreview.net/forum?id=QtOybganmT&referrer=%5Bthe%20profile%20of%20Minlie%20Huang%5D(%2Fprofile%3Fid%3D~Minlie_Huang1)
Code: N/A

RAGに関するサーベイ論文[[Gao2023](https://arxiv.org/pdf/2312.10997v1.pdf)]でも Iterative Retrieval の手法の１つとして言及されている。

## 概要

【技術課題】
質問1つに対して検索を１回しか行わない Naive-RAG は複雑な要求を持つ質問文(multi-hop reasoning や long-form question)に対して、正しく回答を行うことが難しい。又、文書リポジトリが巨大で、ノイズとなる文書が多い場合は検索結果の文書集合は low recall, low precision になり、hallucination を誘発しやすい[Gao2023]

【提案】
情報検索と応答生成を反復的に実行することにより、質問文に対してより関連性の高い文書集合へと徐々に近づけていくITER-RETGEN (Iterative Retrieval-Generation)を提案。

【効果】
ITER-RETGENは、multi-hop reasoning(多段推論), Fact Verification(事実検証), Commonsense Reasoning(常識推論) といった複雑なタスクにおいて、柔軟にパラメトリックな知識（モデルが学習した知識）とノンパラメトリックな知識（外部から取得した知識）の両方を活用することができる。RAG関連手法のベースラインより高精度であり、さらに検索や生成のオーバーヘッドを低減化した。

## Iterative Retrieval-Generation

![fig1](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ptq5i0b9hlxmne0ta6mp.png)

ITER-RETGEN は、与えられた質問(q)に対して、必要な情報が含まれる検索コーパス(D)から情報を検索し、LLMを使用して t 反復目の回答(y)を t-1 反復目の生成結果を用いて生成するプロセスを繰り返す（式１）

![eq1](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jecs4wswy2aa46h9dc5g.png)

多くのNLPタスクでは、質問に答えるために必要な情報が、(部分タスクを解くための)サブクエスチョンに答えることによってのみ明らかになることがある。反復を繰り返すうちに、前回の反復で生成された出力を用いて、このセマンティックギャップを埋め、より関連性の高い情報を検索することが可能になる。本研究ではサブクエスチョンの生成にCoTを使用するが、CoTより高度な思考ステップ推論(ToT等)やリファイン手法を組み合わせる点は今後の研究課題とする。

![eq2](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/88on9i593k21r8n8ekgz.png)

Retriver は dense retriver を用いている。検索時のスコアの計算は式２を用いた。(この式からわかるようにエンコードするパラメータが二種類存在する two tower architectureの課題があるが、本研究ではこの課題を扱わない)

![eq3](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6h79wvbbu3sevnffi8i8.png)

多くの場合、Reranker は Retriver よりクエリと文書の関連性をよく捉える知識を持っている。そこで、知識蒸留法を用いてRerankerからRetriever へ知識転移を行った(式３)。

## 実験

![tb1](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/n4m59wsh0xqa8gii7o49.png)

multi-hop reasoning(多段推論), Fact Verification(事実検証), Commonsense Reasoning(常識推論)の３つのタスクで表１のような様々なデータセットで評価した。表１は質問文サンプルである。比較対象となるベースラインは表2にあるように、Direct Prompting, CoT Prompting, ReAct, Self-Ask, DSP である。
GeneratorはGPTの text-davinci-003 と Llama-2 で、デコーディングは greedy を使用した。Retriever は Contriever-MSMARCO を使用し、Re-ranker はTART[Asai2022] を用いた。

![tb2](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/omt74kt3c88n56i842nw.png)

メインの実験結果は表２である。多くのタスク・データセットにおいて、ITER-RETGEN が上回っているのがわかる。反復数の増加とともに改善するが、特に２回目の反復における改善幅が大きい。

![tb6](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tfn8lw3nmxh7av9zofwe.png)

recallでの評価は表６であり、こちらでも２反復目で大きく改善しているのがわかる。

![tb3](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/csz8ampdbi1wv8muce97.png)

表３が示すように ITER-RETGEN はAPIのコール回数も少なく、ランニングコストを抑えることもできる。

![tb4](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jax4jmykdub6mran3rr1.png)

知識蒸留によるAccの改善効果を検証したのが表４である。知識蒸留時に質問文(q)を使用する方がより効果があった。

![tb7](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/teut9gpdd16s31fl0xm6.png)

生成結果のサンプルは表７である。赤い文字は hallucination であるが、反復することで修正されているのがわかる。
エラー解析では必要な情報の取得には成功したが、正しい推論ができなかったケースは10%であった。一方で、エラーの65%は検索に関連しており、そのうち76.9%では、最初の推論が大きく間違っているため次の検索が誤った方向に誘導されているのが観察された。