相信大家在使用LLM的时候,经常会把一些背景信息手动喂给他,让他根据这些信息进行推理。这是一个典型的one shot learning的提示工程做法。
我们先做2个小实验:
- 只提供一个项目名称,让LLM写一个小说的世界观设定
- 提供较为详细的背景知识,让LLM写一个小说的世界观设定
1/ 实验
2/ 实验
很明显,提供了详细的背景知识,LLM的回答会更为精准。这背后是LLM的学习能力在起作用,LLM模型具备了one shot学习能力,输入一个样本就可以显著提升效果。同时,通过提示词的方式进行one-shot learning使得LLM更加易用。
很明显,如何有效管理背景知识是用好LLM的一项必备技能。
那么,是不是每次都要自己去人工准备背景知识,然后手动粘贴给LLM呢?当然有更好的方案了 ↓
RAG
Retrieval-Augmented Generation
检索增强生成
那么,什么是RAG?
我们从2份资料中(Azure AI的技术文档、Langchain的实现方案)总结出精华要点。Azure AI 搜索中的检索增强生成 (RAG),是这么描述的:
RAG架构是一种通过添加信息检索系统来增强大型语言模型的功能的方法。
简单来说,信息检索+生成式AI = RAG 。
大型语言模型就是本文提到的LLM,具体产品例如ChatGPT等。RAG,它允许你控制LLM在生成响应时使用的基础数据(知识)。对于企业来说,RAG架构意味着可以将生成式AI限制在企业私有内容(知识)中,这些内容可以来自文档、图像、音频和视频等各种形式。
企业私有内容是现代企业的核心竞争力的一种,RAG也就成为了完成此竞争壁垒的技术之一。
* 信息检索系统关键技术:
- 索引策略可以按照需要的频率大规模加载和更新所有内容。
- 查询功能和相关性调整。系统应以满足 LLM 输入的标记长度要求所需的简短格式返回相关结果。
- 与LLM的整合接口。
RAG 技术在 QA 问题中的案例
github.com/Tongji-KGLLM/RAG-Survey
* RAG 典型的场景是基于知识的问答:
更进一步的抽象就是有目标数据来源的信息加工或处理。有目标非常重要,这个目标决定了LLM的选择和知识的来源(准确性、公开或私有),也决定了此类技术的产品化应该如何设计体验。
* 在实际应用中,RAG架构面临的挑战:
RAG-Survey 总结:
上下文长度。当检索内容过多超出LLM上下文限制时怎么办?
抗噪声能力。检索到错误内容如何处理?如何过滤和验证检索到的内容?如何增强LLM的抗噪声能力?
LLM的进一步能力增强。用于检索的LLM(用 LLM 的生成代替搜索),如何搜索 LLM 的记忆、LLM评估检索能力等等。
RAG 范式对比图
github.com/Tongji-KGLLM/RAG-Survey
*RAG的产品化:
RAG-Survey 也研究了RAG的设计模式,抽象出了涉及到的功能模块,可作为进一步设计RAG产品的参考。
* 在实际应用中,涉及到的几个重点问题:
# 块大小 The Chunk Size
RAG系统应该支持灵活的分块方式,并支持添加上下文,防止信息丢失。一般分块过程就是文本切割过程,粗暴地切割容易导致信息表达不完整或者歧异的情况发生。理想的分块应该像维基百科一样,完整表达某个概念。
> 在构建知识库时,分块后的数据,应该如何评估质量?当RAG获得对应问题的分块后,如何选择适合的?
# top_k
RAG系统,一般使用top_k来决定将多少个得分最高的块输入到LLM中。
> top_k是一个固定的数字,是否可以采用动态的数字?
# 语义搜索
向量的相似性可以用来比较文本的相似程度。但这个方案是有局限性的,因为我们不知道向量提取了哪些信息,以及这些信息在向量中的内在逻辑是什么。因此,语义相似性搜索有时可能会错过目标。假设语义搜索总能获得合理的结果是不现实的。
> 得分最高一般是一个相似性的数值,好的答案可能在top_k尾部。
# 世界知识 World Knowledge
有一个例子,作者提到他正在构建一个哈利·波特问答系统。将所有的哈利·波特故事导入了一个向量数据库。现在,然后问一个问题:一只狗有几个头?
很可能,系统会回答三个,因为有提到一只有三个头的巨大狗,而系统不知道一只普通狗可能有几个头。
::要清楚RAG系统的运行逻辑,不要让LLM的(幻觉)推理误导了你。RAG系统应该提供灵活地知识切换和来源提示功能。知识来源:公共、通用的知识库和私有的、独家的垂直知识库。
RAG产品化实现
总结一个公式:
Retrieval 涉及到语义理解、知识范围、LLM条件等
+
content = public + private 公有和私有知识的预处理和召回优化
+
prompt combo 不同的task对应不同的prompt的组合
+
user_input 转述、改写、原文
+
output 可解释性、可溯源、可视化
> 最近,将会在MixCopilot上实现RAG的功能,更好地打造属于每个人的知识助手。感兴趣可以加入我们的新功能发布群:
入群备注:RAG