【FLARE】Active Retrieval Augmented Generation
論文題目:Active Retrieval Augmented Generation
論文地址:Active Retrieval Augmented Generation - ACL Anthology
會(huì)議:EMNLP 2023 main (Proceedings of the 2023 Conference on Empirical Methods in Natural Language Processing)
github 鏈接:jzbjyb/FLARE: Forward-Looking Active REtrieval-augmented generation (FLARE) (github.com)
筆記參考: Better RAG with Active Retrieval Augmented Generation FLARE (lancedb.com)
Abstract
傳統(tǒng)方法采用retrieve-and-generate 的范式進(jìn)行檢索增強(qiáng),這種方式一般僅檢索一次。本文提出了一種名為Forward-Looking Active REtrieval augmented generation (FLARE)的主動(dòng)檢索的方法,可以在生成過程中主動(dòng)決定何時(shí)檢索以及檢索的內(nèi)容。
具體來(lái)說(shuō),它迭代式地對(duì) 待生成的句子進(jìn)行預(yù)測(cè),如果預(yù)測(cè)的句子中含有低置信度的token,就使用預(yù)測(cè)的結(jié)果作為query檢索相關(guān)文檔,然后重新生成句子。
long-form / short-form
單次檢索增強(qiáng)大模型比純參數(shù)化的模型在 short-form knowledge-intensive generation task上表現(xiàn)更好,這種任務(wù)的信息需求在用戶的輸入中是明確的,并且僅基于輸入來(lái)檢索相關(guān)知識(shí)就足夠了。
short-form knowledge-intensive generation task 比如 factoid question answering
long-form knowledge-intensive generation task 比如long-form QA, open-domain summarization,chain-of-thought reasoning 任務(wù)。
而long-form的任務(wù)需要的信息常常在輸入中不明顯,與人類寫文章時(shí)的過程類似,往往需要在生成的過程中多次收集信息。
多次檢索方法的策略
之前的文章提出了兩類多次檢索的策略,但這些都不是主動(dòng)決定何時(shí)檢索以及檢索內(nèi)容。
-
每生成固定的n個(gè)token就找回一次【1】(In-Context RALM)【2】(IRCoT)
-
將問題分解為多個(gè)子問題,每個(gè)子問題檢索一次,如多跳QA問題
multihop QA問題指需要閱讀多個(gè)段落才能回答問題
核心思想
主動(dòng)決定何時(shí)檢索和檢索的內(nèi)容,并將檢索到的內(nèi)容會(huì)拼接在用戶輸入之前以輔助未來(lái)的生成。
何時(shí)檢索: 當(dāng)模型缺少相關(guān)知識(shí)時(shí)。因此作者認(rèn)為當(dāng)模型產(chǎn)生低概率或低置信度的token時(shí)說(shuō)明LLM缺乏相關(guān)知識(shí),需要進(jìn)行檢索。
檢索什么:通過生成一個(gè)臨時(shí)的下一個(gè)句子來(lái)預(yù)測(cè)未來(lái),使用它作為查詢來(lái)檢索相關(guān)文檔,然后結(jié)合檢索到的文檔重新生成下一個(gè)句子。
FLARE
原則
- 當(dāng)需要信息時(shí)LLM才去檢索
- 使用的query應(yīng)該考慮未來(lái)生成的內(nèi)容
提出了兩類方法:
- F L A R E i n s t r u c t FLARE_{instruct} FLAREinstruct? ,此方法使用鼓勵(lì)檢索的instruction,指示大模型在需要檢索的時(shí)候生成檢索query
- F L A R E d i r e c t FLARE_{direct} FLAREdirect?,此方法直接使用LLM生成的內(nèi)容作為檢索query,它迭代地生成下一個(gè)句子,如果生成的句子中有低概率的token,就進(jìn)行檢索并重新生成下一個(gè)句子。
使用檢索 instruction的FLARE ( F L A R E i n s t r u c t FLARE_{instruct} FLAREinstruct?)
這種方式參考了Toolformer【3】的方式,模型通過輸出**[Search(query)]**來(lái)表達(dá)檢索信息的需求。
Toolformer 可以決定調(diào)用哪些 API、何時(shí)調(diào)用它們、傳遞哪些參數(shù)以及如何最好地將結(jié)果合并到未來(lái)的令牌預(yù)測(cè)中
如上圖,分別產(chǎn)生了兩個(gè)[Search(query)]進(jìn)行檢索信息。
這種方式在使用時(shí)既需要指導(dǎo)大模型完成任務(wù)的指令,又需要指導(dǎo)大模型生成檢索query的指令,同時(shí)可能還需要指導(dǎo)大模型i將兩者結(jié)合起來(lái)的指令。如下圖
疑問,當(dāng)需要檢索時(shí),模型生成會(huì)停止。而當(dāng)檢索到內(nèi)容后,怎么讓LLM結(jié)合檢索的內(nèi)容在停止的地方接著生成?
應(yīng)該是在檢索到相關(guān)文檔后,將文檔放在用戶query的前部,然后去掉上一步生成的檢索query,指示大模型繼續(xù)生成。
缺陷
- LM不太愿意生成主動(dòng)召回的標(biāo)識(shí)。解決方法:將"[“對(duì)應(yīng)的logit乘以2,以提高生成”["的概率。
- 過于頻繁的主動(dòng)召回可能導(dǎo)致生成經(jīng)常被打斷,影響生成的質(zhì)量。解決方法:每當(dāng)LLM生成一個(gè)"[“時(shí),得到一個(gè)query,從而得到相關(guān)文檔后,從生成中去掉檢索query,并再接下來(lái)幾個(gè)token的生成過程中,給”[“的logit加上一個(gè)較大的負(fù)值,從而禁止LLM生成”["。
- 這種方案需要微調(diào)大模型才能得到很好的生成檢索query的效果。
根據(jù)置信度進(jìn)行檢索的FLARE( F L A R E d i r e c t FLARE_{direct} FLAREdirect?)
- 根據(jù)用戶的input作為初始query,進(jìn)行第一次召回,檢索到相關(guān)文檔
- FLARE迭代地生成一個(gè)臨時(shí)的下一句(沒生成64個(gè)token,用NLTK工具從里面找到第一個(gè)完整的句子,扔掉多余的token)
- 檢查是否有低概率的token,如果有,針對(duì)這個(gè)句子進(jìn)行檢索,召回相關(guān)文檔。
- 利用召回出來(lái)的文本,重新生成這個(gè)句子,然后進(jìn)行下一個(gè)句子的生成。
如果重新生成的句子中也有置信度低的怎么辦?
利用含有低概率token句子進(jìn)行檢索的方法有兩種。
- 屏蔽掉低置信度的token,然后進(jìn)行向量召回
- 利用大模型的能力,對(duì)置信度低的部分進(jìn)行提問,生成一個(gè)問題,用生成的問題進(jìn)行檢索
Self-ask 【4】也實(shí)現(xiàn)了在回答初始問題前生成顯示query,但這種方法需要手動(dòng)在下游任務(wù)中插入后續(xù)問題作為示例。
實(shí)驗(yàn)
在text-davinci-003的API上測(cè)試本方法
檢索器:BM25用來(lái)檢索Wikipedia dump, Bing search engine用來(lái)檢索開放的網(wǎng)絡(luò)信息
數(shù)據(jù)集
-
MultihopQA:2WikiMultihopQA
-
Commonsense reasoning:StrategyQA
-
Long-form QA:ASQA
-
Open-domain summarization:WikiAsp
結(jié)論
-
前瞻性的主動(dòng)檢索是非常有效的,而使用前一個(gè)句子進(jìn)行檢索的改進(jìn)相對(duì)較小,我們假設(shè)這主要是因?yàn)榍耙粋€(gè)句子經(jīng)常描述與下一個(gè)句子不同的實(shí)體或關(guān)系。
-
F L A R E i n s t r u c t FLARE_{instruct} FLAREinstruct?效果不算好,說(shuō)明教LM使用任務(wù)通用檢索指令和范例生成搜索查詢是具有挑戰(zhàn)性的。
-
對(duì)40%-80%的句子進(jìn)行觸發(fā)檢索,通常會(huì)導(dǎo)致跨任務(wù)/數(shù)據(jù)集的良好表現(xiàn)
相關(guān)工作
在文本和代碼生成任務(wù)中人們研究了迭代檢索和細(xì)化?!?】【6】【7】本文與它們的不同在于生成的粒度和檢索策略的不同。
在主動(dòng)檢索方面,一些研究【8】【9】關(guān)注于單次檢索場(chǎng)景,基于問題流行度以及生成概率,而本文關(guān)注需要主動(dòng)信息訪問的長(zhǎng)文本生成任務(wù)。
限制
- 在Wizard of Wikipedia上,需要生成較短文本(20token)時(shí),本方法不那么有效
- 在ELI5(需要深入研究開放式問題的長(zhǎng)篇QA數(shù)據(jù)集)上,由于檢索和評(píng)估時(shí)的真實(shí)生成困難【10】導(dǎo)致單次檢索和FLARE相比于不見所都沒有明顯提升
- 直接的方式實(shí)現(xiàn)交替進(jìn)行生成和檢索會(huì)導(dǎo)致成本增加
- LLM需要被激活多次(每次檢索一次),而一個(gè)無(wú)緩存的實(shí)現(xiàn)還需要在每次檢索后重新計(jì)算之前的激活值。
References
【1】[2302.00083] In-Context Retrieval-Augmented Language Models (arxiv.org)
【2】ACL 2023 long Interleaving Retrieval with Chain-of-Thought Reasoning for Knowledge-Intensive Multi-Step Questions - ACL Anthology
【3】[2302.04761] Toolformer: Language Models Can Teach Themselves to Use Tools (arxiv.org)
【4】EMNLP 2023 findings Measuring and Narrowing the Compositionality Gap in Language Models - ACL Anthology
【5】[2302.12813] Check Your Facts and Try Again: Improving Large Language Models with External Knowledge and Automated Feedback (arxiv.org)
【6】EMNLP 2023 [2303.12570] RepoCoder: Repository-Level Code Completion Through Iterative Retrieval and Generation (arxiv.org)
【7】COLING 2022 Generate-and-Retrieve: Use Your Predictions to Improve Retrieval for Semantic Parsing - ACL Anthology
【8】ACL 2023 long [2212.10511] When Not to Trust Language Models: Investigating Effectiveness of Parametric and Non-Parametric Memories (arxiv.org)
【9】ACL 2023 findings [2305.10998] The Web Can Be Your Oyster for Improving Large Language Models (arxiv.org)文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-841661.html
【9】ACL 2023 findings [2305.10998] The Web Can Be Your Oyster for Improving Large Language Models (arxiv.org)
【10】NAACL 2021 main[2103.06332] Hurdles to Progress in Long-form Question Answering (arxiv.org)文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-841661.html
到了這里,關(guān)于【論文筆記】Active Retrieval Augmented Generation的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!