1 文献目标

问题:

  • LLM缺乏领域针对性知识的获取,如相关知识及专有名词
  • SOTA LLM通常是黑盒,缺乏透明性且成本高昂导致难以针对领域只是微调
  • 能承担微调费用的用户有隐私暴露风险 解决方案:
  • 通过instruction fine-tuning,在与训练阶段将指定领域的知识融入PKG模块
  • 提问时,PKG先生成领域知识,领域知识传递给黑盒LLM辅助作答

2 具体实现

套用Generate-Read 的Modular RAG范式

2.1 内容生成

得到问题$Q$后,LLM通过最大化后验估计(MAP)来生成回应

$$ \hat{A} = argmax_{A} P(A|Q, M^{LLM}) $$

其中$M^{LLM}$是黑盒LLM的参数。该公式含义为:在给定查询$Q$和LLM参数$M^{LLM}$的情况下,总是返回“最可能”的答案。该公式是直接使用LLM时的答案返回机制。

2.2 知识对齐

此时向问题传入PKG模块,其参数为$M^{PKG}$。该模型同样通过最大后验估计来生成回答,此处仅处理背景知识:

$$ \hat{K} = argmax_KP(K|Q, M^{PKG}) $$

即,通过已有的PKG模块$M^{PKG}$,总是返回“最可能”的背景知识。

这一步的实现具体为使用 instructions, input, response三元组的形式来控制PKG模块的输出,大概模板具体如下:

<元指令告诉模型接下来的输入数据格式是什么让模型清楚知道自己在干啥>
### Instruction
<用于PKG模块的查询>
% 例如: 
### Input
<具体输入的指令和数据>
例如: 
### Response:
<期望输出>
% 在此编写你希望模型回复的形式,例如具体的计算过程,要不要用某些指定框架实现,怎么呈现背景知识

以下是一个具体的例子

The following content is an instruction of how to solve a background knowledge providing problem, which contains "instruction", "input" and "expected output". You need to follow such steps for further queries and return content similar to "expected output" descriped below.
### Instruction
Generate background knowledge that helps with data mining problems.
### Input
What is the average salary.
Table:
| name | salary |
| Alice | 70000 |
| Bob | 80000 |
### Output
To calculate average:
- Sum: 70000+80000=150000
- Count: 2 employees
- Average: 150000 / 2 - 75000

2.3 强化查询

将PKG模块融入到LLM中后,后验概率变更为:

$$ P(A|Q) = P(A|K, Q, M^{LLM}) P(K|Q, M^{PKG}) $$

即,在使用PKG模块的情况下,背景知识$K$由PKG完成建模,LLM再依赖于背景知识、问题和LLM参数做出回答。在已知查询$Q$产生回答$A$的概率被定义为 生成$K$ 的概率 乘以 基于$K$再生成回答的概率。

3 模型表现

黑盒模型:InstructGPT3.5 PKG模块载体:LLaMa-7B

Baseline:

  • 直接生成答案
  • Retrive-Read范式完成RAG,具体使用了BM25和DPR(REPLUG微调)
  • 让InstructGPT自己指导自己,而非挂载PKG - 这将说明微调LLM的必要性,排除通过API反复调用黑盒模型来辅助自己的可能最优

实验数据集:FM2,NQ-Table,MedMC-QA

结果:

  • 对于FM2和NQ-Table, Retrieval-Read和self-guiding都能涨点,但是两者效果平齐,PKG略胜于前两者
  • 对于MedMC-QA,PKG有较显著优势