赞
踩
英文名称: T-RAG: LESSONS FROM THE LLM TRENCHES 中文名称: T-RAG:来自LLM战壕的经验教训 链接: https://arxiv.org/abs/2402.07483 作者: Masoomali Fatehkia, Ji Kim Lucas, Sanjay Chawla 机构: 卡塔尔计算研究所, 哈马德·本·哈利法大学 日期: 2024-02-12 引用次数: 0 |
这篇文章的创新点逻辑比较简单:除了基本的 RAG 外,定位了问题中的实体,在事先定义好的实体树中寻找其父实体,并将其加入到问题的上下文中。可以视为对问题中实体抽象的方法。
我个人比较喜欢有两点:
第一点是:这是一个对问题抽象化,并与现有知识融合的范例。对问题进行规范化和抽象化后再提问或存储,构建更复杂的存储结构,与原有知识融合,这可能是大模型领域一个重要的问题。与此相比,之前 RAG 直接将文档打散成碎片的方式确实过于简单粗暴。
第二点是:论文描述了本地 RAG 的具体实现方法,一些在实践中的常见问题的总结,例如在 LLAMA-7B 模型上精调所需的硬件,以及精调对原模型能力的影响。干货很多,看完可以少走一些弯路。
图 1:Tree-RAG(T-RAG)的工作流程。对于给定的用户查询,在向量数据库中搜索要用作上下文的相关文档块。此外,如果查询提及组织中的实体,则会从实体树中提取有关这些实体的信息并将其添加到上下文中。我们在从组织文档生成的指令数据集上对 Llama-2 7B 模型进行了微调。我们使用微调模型来生成响应。
先使用 LangChain 库将原始 PDF 文件解析为文本格式,表格和结构图则由人工专家手动转化为文本。
然后,根据文档中的各个节标题,将每一节分解成一个独立的块。通过在几轮迭代中为每个块生成一组(问题、答案)对。
汇总各种迭代过程中产生的问题和答案,以此创建一个数据集。对生成的问题和答案进行了人工检查,并剔除了重复的问题。最后,得到了一个包含 1,614 个问答对的数据集。我们将这个数据集随机分成了 90% 的训练集和 10% 的验证集。
使用 QLoRA(Hugging Face 'peft' 库)对基本的 LLM 模型,在 Q&A 指令数据集上进行训练。微调过程在 4 个内存为 24G 的 Quadro RTX 6000 GPU 的设备上进行。
实体树包含了组织内实体及其在层次结构中位置的信息。好像树中,每个节点都代表一个实体,父节点表示它所在的组。例如,在图 2 所示的难民署组织结构中,难民署创新处是隶属于副高级专员的一个实体。
在检索过程中,实体树被用来增强向量数据库检索到的上下文。解析器模块会在用户查询中寻找与组织内实体名称匹配的关键字。如果找到匹配项,就会从树中提取有关每个匹配实体的信息,并将其转换为文本语句,这些语句提供了关于实体及其在组织层次结构中的位置的信息。然后,这些信息会与从向量数据库中检索到的文档块结合起来,形成上下文。这样,当用户询问有关实体的问题时,模型就能访问到有关实体及其在组织层次结构中位置的信息。
在本地部署应用程序时,使用 Llama-2 模型,并采用 Chroma DBvector 数据库来存储文档块以进行上下文检索。
表 -2 展示了几种实验配置,其中,第二行的 Finetuned 在提问时并未使用上下文。而第三行的 T-RAG 则使用了来自两个来源的上下文信息:从原始文档生成的指令数据集中的问题和答案对,以及树上下文,该上下文为用户查询中提到的实体提供从实体树中提取的信息。
采用自动和人工方式来评估语言模型(LLMs)。在自动评估中,使用 GPT-4 语言模型作为评估工具。研究表明,语言模型的评估结果与人类对各种任务的评估结果是一致的。
表 -3 中 N 代表每组问题的数量,将回答手动评分为“正确”(C),“正确但冗长”(CV)。T 是回答正确的总数(T = C + CV)。可以看出,尽管 T-RAG 的效果较好,但它有可能生成冗长的答案(测试数据不多)。
模型微调可能导致模型忘记其在训练前所学习的内容。为了评估过拟合情况,使用了大规模多任务语言理解(MMLU)基准测试来对比微调前后的效果。结果显示,其影响较小。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。