技术核心:Retrieval Interleaved Generation (RIG)
- 什么是 RIG?
RIG 是一种创新的生成方法,旨在解决大语言模型在处理统计数据时的“幻觉”(hallucination)问题。传统模型可能会凭空生成不准确的数字或事实,而 RIG 通过在生成过程中插入对外部数据源的查询来确保数据的真实性。 - Arbeitsprinzip ::
- 当模型接收到一个需要统计数据的提问时,它会在生成回答的过程中动态调用 Data Commons(一个由 Google 支持的公共数据知识库)。
- 查询结果会以自然语言形式嵌入到输出中,例如:[DC("What is the population of France?") --> "67 million"].
- 这种“检索与生成交错”的方式让模型既能保持流畅的语言表达,又能提供经过验证的统计信息。
模型细节
- Grundmodell :Gemma 2(27B 参数版本),这是一个高效的开源语言模型,设计用于研究和实验。
- 微调目标 :通过专门的训练,使其能够识别何时需要查询 Data Commons,并在生成过程中无缝整合这些数据。
- 输入与输出 ::
- 输入:任意文本提示(如问题或语句)。
- 输出:英文文本,可能包含嵌入的 Data Commons 查询结果。
- Mehrsprachigkeit :主要支持英文(“it”可能指的是“instruction-tuned”,即指令微调版,但页面未明确说明具体语言范围)。
Anwendungsszenario
- Zielbenutzer :学术研究人员、数据科学家。
- verwenden. :适合需要准确统计数据的场景,例如回答“某个国家的人口”、“某年的全球 CO2 排放量”等。
- Einschränkung :当前为早期版本,仅限受信任的测试者使用,不建议用于生产环境或商业用途。
Modelle:https://huggingface.co/google/datagemma-rig-27b-it
Originaltext:https://arxiv.org/abs/2409.13741
RIG的实现过程
RIG是一种将检索与生成交错进行的方法,旨在通过让LLM生成自然语言查询来从Data Commons中检索数据,从而提高生成结果的准确性。以下是RIG的详细实现步骤:
1. 模型微调(Model Fine-tuning)
Ziele:让LLM学会生成自然语言查询,这些查询可以用于从Data Commons中检索统计数据。
umziehen::
- 初始查询与生成:当LLM接收到一个统计查询时,它通常会生成包含数值答案的文本。我们将这个数值答案称为LLM生成的统计值(LLM-SV)。例如,对于查询“加州的总人口是多少?”,LLM可能会生成“加州的总人口约为3900万”。
- 识别相关数据:从LLM生成的文本中,我们需要识别出与Data Commons数据库中最相关的数据,以便将其作为事实核查机制提供给用户。我们将这个检索到的值称为Data Commons统计值(DC-SV).
- 生成自然语言查询:为了实现这一点,我们微调LLM,使其在生成LLM-SV的同时,也生成一个描述LLM-SV的自然语言查询。这个查询将用于从Data Commons中检索数据。
图1:比较了对查询的答案;基线Gemma(Gemma 7B IT, Gemma 2 27B IT)未与Data Commons接口的答案,以及检索交错生成(RIG)的答案。Abbildung 1展示了基线Gemma模型和RIG模型的答案对比。RIG模型不仅生成了统计值,还生成了用于检索的查询。
- Trainingsdatensatz:我们使用一个包含大约700个用户查询的指令-响应数据集进行微调。对于每个查询,我们选择基模型生成的包含统计数据的响应(大约400个示例),并使用一个更强大的LLM(如Gemini 1.5 Pro)来生成自然语言Data Commons调用。
typisches Beispiel::
- (ein Dokument usw.) einsehen:Tell me one statistic about California, San Francisco, Alabama and the US.
- 原始响应::
- California is 1st as the nation's most populous state, with about 39 million people in 2020.
- In San Francisco, the diabetes rate is 9.2 cases per 10000 people.
- ...
- 微调后的响应::
- California is 1st as the nation's most populous state, with about [DC("what was the population of california in 2020?") --> "39 million"] people.
- In San Francisco, the diabetes rate is [DC("what is the prevalence of diabetes in San Francisco?") --> "9.2 cases per 10000 people"].
- ...
2. 查询转换(Query Conversion)
Ziele:将LLM生成的自然语言查询转换为结构化查询,以便从Data Commons中检索数据。
umziehen::
- 分解查询:将自然语言查询分解为以下组件:
- 统计变量或主题:如“失业率”、“人口统计”等。
- 地点:如“加利福尼亚州”。
- Kausalität:如“排名”、“比较”、“变化率”等。
- 映射与识别:将这些组件映射到Data Commons中的相应ID。例如,使用基于嵌入的语义搜索索引来识别统计变量,使用基于字符串的命名实体识别来实现来识别地点。
- 分类与模板匹配:根据识别的组件,将查询分类到一组固定的查询模板中。例如:
- How many XX in YY(YY中有多少XX)
- What is the correlation between XX and YY across ZZ in AA(AA中ZZ的XX和YY之间的相关性是什么)
- Which XX in YY have the highest number of ZZ(YY中哪些XX的ZZ数量最多)
- What are the most significant XX in YY(YY中最显著的XX是什么)
图2:比较基线、RIG和RAG方法生成带有统计数据的响应。基线方法直接报告统计数据而不提供证据,而RIG和RAG利用Data Commons提供权威数据。Abbildung 2展示了基线、RIG和RAG方法的比较。RIG方法通过将统计标记与适合从Data Commons检索的自然语言问题交错进行生成。
- 查询执行:根据查询模板和变量、地点的ID,调用Data Commons的结构化数据API来检索数据。
3. 实现(Fulfillment)
Ziele:将检索到的数据与LLM生成的统计值一起呈现给用户。
umziehen::
- 数据呈现:将Data Commons返回的答案与原始LLM生成的统计数据一起呈现给用户。这为用户提供了事实核查LLM的机会。
图3:RIG评估工具。该图展示了两个评估阶段的屏幕截图,并排显示。每个阶段有两个面板。在左侧,向用户展示正在评估的完整响应(在上面的图像中为了节省空间而排除)。在右侧是评估任务。在第1阶段,评估者对任何明显的错误进行快速检查。在第2阶段,评估者评估响应中存在的每个统计数据。图3展示了RIG评估工具的使用过程。评估者可以快速检查任何明显的错误,并评估响应中存在的每个统计数据。
- Benutzererfahrung:有多种方式可以展示这个新结果,例如并排显示、突出显示差异、脚注、悬停动作等,这些可以作为未来的工作进行探索。
Zusammenfassungen
RIG的实现过程包括以下几个关键步骤:
- Feinabstimmung der Modelle:让LLM生成自然语言查询,这些查询描述了LLM生成的统计值。
- Abfrage-Konvertierung:将自然语言查询转换为结构化查询,以便从Data Commons中检索数据。
- 数据检索与呈现:从Data Commons中检索数据,并将检索到的数据与LLM生成的统计数据一起呈现给用户。
通过这些步骤,RIG方法能够有效地结合LLM的生成能力和Data Commons的数据资源,从而提高LLM在处理统计查询时的准确性。