在本方案中,通过使用经同行评审的领域特定科学文献,经由向量嵌入机制增强,从而提升基础大语言模型的响应质量。此外,还提供了代码以辅助在不同大语言模型之间进行性能比较。
在本方案中,通过使用经同行评审的领域特定科学文献,经由向量嵌入机制增强,从而提升基础大语言模型的响应质量。此外,还提供了代码以辅助在不同大语言模型之间进行性能比较。
大语言模型(LLMs)已成为生成与用户查询相关的信息的一种流行资源。此类模型通过利用大规模静态文本数据集进行资源密集型训练过程而构建。这种静态特性导致其在知识快速更新、涉及专有信息或敏感数据的领域中应用受限。本文概述了一种通过基于嵌入(embeddings-based)的方法,将最新、经同行评审的科学文献等特定领域信息整合到通用大语言模型(即基础模型)中的技术路径。该方法采用开源工具如 Llama-Index 和公开可用的模型如 Llama-2,以最大程度地提升透明度、用户隐私与控制权以及可重复性。尽管以科学文献作为示例应用场景,但该方法可扩展至任意文本数据源。此外,本文还讨论了在增强后对模型性能进行评估的方法。这些方法使得无论训练语料库中信息的覆盖程度如何,均可快速构建适用于高度专业化领域的 LLM 系统。
诸如 OpenAI 的 ChatGPT 或 Meta AI 的 Llama 等大语言模型(LLM)已迅速成为生成与用户提示相关文本的流行资源。这些模型最初的功能是预测序列中的下一个词汇单元,现已发展为能够理解上下文、编码临床信息,并在多种任务上表现出高性能1,2,3,4。尽管语言模型的出现比这些功能及其当前的流行程度早了几十年5,但近年来深度学习和计算能力的进步使得通过基于网络的技术和应用程序编程接口(API)向用户广泛提供预训练的高质量商业大语言模型成为可能6。然而,以这种形式使用大语言模型存在若干显著局限性。
挑战1:静态训练语料库
大语言模型(LLM)的训练依赖于海量但静态的文本数据(例如,Llama 2 的训练数据包含约两万亿个词元7)。这种静态训练方式在应对快速发展或文献持续更新的领域时面临挑战。在此模式下,为跟上最新数据,LLM 需要频繁重新训练,而这既不现实也不具备可扩展性。此外,当提示(prompt)所要求的回答基于训练数据中未包含的信息时,可能导致无法生成有用文本,或引发“幻觉”现象8。出现幻觉或事实捏造的情况,严重引发了人们对 LLM 可靠性的担忧,尤其是在信息准确性至关重要的应用场景中9。
挑战2:缺乏领域特异性
预训练模型通常面向通用用途而创建,而用户可能需要针对特定领域性能进行专门优化的模型。此外,训练模型所需的计算资源和数据 从头合成 或进行大量精细调整对许多用户而言是不现实的。
挑战3:缺乏隐私保护
在涉及敏感数据或专有信息的应用中,用户可能因不了解数据的存储或使用方式,而不愿或无法使用某些大语言模型服务。
挑战4:缺乏稳定的保障
使用专有大语言模型(LLM)的服务可能会随时更改可用模型或调整其行为,这使得依赖这些服务的应用程序在实施过程中面临稳定性问题。
检索增强生成(Retrieval-augmented generation, RAG)是一种旨在提升大语言模型(LLM)性能的技术,尤其适用于涉及模型训练语料库之外信息的查询10,11。这类系统通过在生成用户查询响应时引入上下文信息,从而增强大语言模型的能力。近年来多项研究已描述了RAG系统的应用及其潜在优势12,13,14。
本方法旨在展示此类系统的构建过程,并为研究人员提供一个框架,以快速开展针对特定领域、增强型大语言模型(LLM)的实验。该方法适用于希望利用外部基于文本的数据源来增强大语言模型的用户。具体而言,本实验方案的主要目标是提供可扩展的逐步代码,适用于多种实际的大语言模型(LLM)与检索增强生成(RAG)实验,而无需在语言建模领域具备深厚的技术专业知识,尽管若要直接应用此方法,需具备 Python 的基本操作知识。为最大限度提升用户对解决方案的控制性、透明度、可移植性与经济性,本方案采用开源且公开可用的工具。所提出的系统通过以下方式解决前述问题:
解决方案1和2:静态训练语料库及缺乏领域特异性
本文提供的方法采用检索增强生成(RAG)策略,利用嵌入(embeddings)技术提供原始训练数据中未包含的领域特定信息。从高层次来看,嵌入模型将文本或其他数据转换为向量形式,即一维数字数组。该技术的优势在于,可将文本中包含的语义信息转化为密集的数值表示形式。通过将用户查询投影到相同的嵌入空间中,可利用多种算法计算用户查询与文本片段之间的距离15,从而近似衡量语义相似性。因此,将文档分割为离散片段并从中构建此类向量数据库,有助于在大量文档中检索出与用户查询最相关的文本内容(图1)。该方法可扩展至任意文本文档。尽管其他方法(如在线搜索功能)正逐步被用于增强大语言模型(LLM)的能力,但本方法允许用户自主选择其应用场景下质量足够高的信息来源。
解决方案2:缺乏隐私保护
在本实施方案中,采用安全的云环境进行托管,用户输入、生成的响应及其他数据均不会离开该生态系统。所有代码均以平台无关的方式编写,以确保可替换为其他云服务提供商或本地硬件。
解决方案3:缺乏稳定性保障
该方法利用开源库,侧重于使用公开可用权重来增强大语言模型,可根据需要提供更高程度的透明性、稳定性和版本控制。
我们所提出的系统的完整示意图如图2所示,复制该系统或类似系统的详细操作步骤已在方案部分中说明。通过微调或增强来改变模型行为时,还需额外考虑性能评估问题。在语言生成模型中,这带来了一个独特的挑战,因为许多传统的机器学习评估指标并不适用。尽管存在多种评估技术16,但在本研究中,采用了专家编写的多项选择题(MCQ)来评估准确性,并对增强前、增强后以及主流替代大语言模型(LLM)的性能进行比较。
在本文展示的用例中,向量数据库是根据芝加哥共识工作组发布的指南生成的17。该专家组成立的目的是制定腹膜癌管理的指导原则。选择这一主题领域是因为其属于研究人员的临床专业范围。相关论文集从包括《癌症》(Cancer)和《外科学肿瘤学年鉴》(Annals of Surgical Oncology)在内的在线期刊数据库中获取。采用由北京人工智能研究院(BAAI,https://www.baai.ac.cn/english.html)开发的紧凑型(3340万参数)嵌入模型 bge-small-en,从源文档中生成嵌入向量。所生成的数据库随后用于增强 Llama 2 和 Open-AI 基础模型7。为方便读者使用,代码已通过 GitHub(https://github.com/AnaiLab/AugmentedLLM)公开提供。为确保可重复性,建议使用所提供依赖列表中相同版本的库以及相同版本的 Python。有关以下方法中所用工具的安装或文档的更多详细信息,可访问 Python(https://www.python.org)、git(https://git-scm.com)、Llama-Index(https://llamaindex.ai)和 Chroma(https://trychroma.com)的官方网站获取。
1. 先决条件:审查代码并安装所需库
2. 使用 Llama-Index 创建向量数据库
3. 使用第2节生成的向量数据库增强羊驼模型
4. 替代大语言模型的程序化比较
采用芝加哥共识工作组(Chicago Consensus Working Group)管理指南的22篇出版物,用于增强基础Llama-7b模型17。这些文献通过Llama-Index工具被转换为向量索引,从而生成Llama-2-7b-CCWG-Embed模型。类似地,也对GPT-3.5和GPT-4等主流OpenAI模型进行了增强,以生成GPT-XX-CCWG-Embed模型。共开发了20道多项选择题(MCQ),用于评估与多种腹膜表面恶性肿瘤管理相关的知识水平。这些多项选择题由一名经认证的外科肿瘤学专家设计,旨在测试达到外科肿瘤学专科培训医师预期知识水平的能力。Llama-2-7b-CCWG-Embed模型的表现显著优于基础模型(见表1),经增强的OpenAI模型亦表现出类似优势。该结果表明,相较于基线模型,通过增强方法提升了模型性能,属于积极成果。

图 1:从学术论文生成向量数据库的示意图。 请点击此处查看此图的放大版本。

图 2:增强型大语言模型的整体系统示意图。 请点击此处查看该图的放大版本。

图 3:在 Linux 终端中运行的增强型 Llama-2 模型。请点击此处查看此图的放大版本。

图 4:增强型 Llama-2 模型的查询结果。 请点击此处查看此图的放大版本。
| 大语言模型(LLM) | 得分(正确率) |
| Llama-2-7b-chat-hf | 65% |
| Llama-2-7b-CCWG-Embed | 75% |
| Openchat-3.5-010618 | 65% |
| Mistral-7B-v0.119 | 70% |
| GPT-3.5 | 75% |
| GPT-3.5-CCWG-Embed | 85% |
| GPT-4 | 85% |
| GPT-4-CCWG-Embed | 90% |
表1:各类大语言模型在一组关于腹膜恶性肿瘤管理的20个问题上的得分(正确率百分比)。
本文提供的方法旨在促进大语言模型(LLM)在特定领域应用中的研究,而无需从头开始训练或进行大量微调。de novo 训练或精细调优。随着大语言模型逐渐成为研究热点,增强知识库并提高响应准确性的方法将变得愈发重要18,19,20,21。如所提供的结果所示,相较于未增强的相同大语言模型,本文所述方案在回答领域特定问题时表现出性能提升,并接近 OpenAI GPT 等更复杂模型的表现。由于大语言模型在生成响应时可能需要巨大的计算资源22,23,增强较简单的模型可能为资源受限的应用场景提供可行的实施路径。此外,检索增强生成(RAG)系统在增强 OpenAI 提供的高复杂度模型时也展现出优势。尽管本文结果聚焦于腹膜癌管理,但近期已有大量关于 RAG 系统的研究,涵盖多种领域和不同规模的数据源,表明此类系统具有广泛适用性21,24,25,26。然而,由于响应质量与用于增强的文本数据密切相关,用户必须审慎评估哪些数据源最适合自己特定的领域和应用需求。这一点在医疗健康等领域尤为重要,而该领域正是当前大语言模型相关研究的重点。目前正积极探索大语言模型在疾病诊断27,28、临床试验匹配29,30及其他众多应用中的潜力,这些应用需要基于经过验证且可信的文本资源,而非依赖来源不明的训练语料库。
通过由腹膜癌及其临床管理领域专家编写的多项选择题(MCQ)的正确率来衡量表现。回答由人工审查分类为正确或错误;然而,为了减少研究人员的重复性任务,本文提供了用于初步实现对不同大语言模型(LLM)性能进行更自动化比较的基本代码。
本方案的一个关键优势在于提供了可编程访问多种大语言模型(LLM)的代码。过去,缺乏相应技术能力的用户若要评估大语言模型在多项选择题(MCQ)上的表现,可能只能依赖通过网页界面进行重复的手动测试。所提供的代码包含用于对接多个主流大语言模型的基本类,以及代码执行示例。提供这些工具的目的是使更多研究人员能够实现跨多种大语言模型的提示响应评估流程自动化,从而提升开展比较研究的能力。
此外,所概述的方法旨在强调灵活性和可扩展性。尽管代码可以开箱即用,但其编写初衷是可根据具体需求进一步定制,例如采用不同的大语言模型(LLM)和嵌入模型以实现功能增强或对比分析。鉴于大语言模型领域正在快速演进,这种可扩展性将日益重要,以满足不同领域用户多样化的需求。此外,Llama-Index 库提供了大量在本示例方法中未使用的功能,用户在构建类似系统时可进一步探索这些选项。相关内容可参见 Llama-Index 官方文档。
读者还应仔细考虑最适合其使用场景的评估方法。尽管由于多项选择题(MCQ)具有易于量化的特性而被广泛用于大语言模型的比较31,32,但在将其视为生成式系统的全面性能指标时应保持谨慎。近期文献采用了多种评估方法,包括定性分析、人工评审、斯坦福语言模型整体评估(Stanford Holistic Evaluation of Language Models, HELM)33,以及标准的自然语言处理指标,如双语评估替代法(Bilingual Evaluation Understudy, BLEU)、通用语言理解评估(General Language Understanding Evaluation, GLUE)、ROUGE、困惑度(perplexity)和F1分数34,35,36,37,38,39。
这些方法如本文所述仍存在一定的局限性。例如,尽管已为多家主流大语言模型(LLM)提供商实现了接口,但由于该领域发展迅速且应用场景差异较大,当前实现可能并不全面。然而,如前所述,代码设计时已充分考虑了这一问题。此外,尽管提供了向自动化评分方向发展的基础代码,但仍可进一步扩展,例如采用HELM或BLEU等替代工具对回答进行评分。进一步地,还可结合使用其他工具,通过预定义语法约束模型输出,例如语言模型查询语言(Language Model Query Language, LMQL),以拓展本研究并提升大语言模型比较研究的自动化程度。此外,鉴于潜在应用场景的多样性,还需进一步研究检索增强生成(RAG)系统对通用性、域外任务性能的影响,以明确可能存在的性能权衡。最后,仍需持续探索提高大语言模型响应可靠性与评估效果的新方法。
请注意,由于技术原因,需要 Python 3.10 或更高版本。Shell 提示符适用于 bash、zsh 或其他类 UNIX 终端。只需输入命令文本后按回车键,即可执行命令(在实验方案中称为“运行命令”)。对于实验方案中的每一步,用户可检查正在执行的文件中的代码,以更全面地理解工作流程背后的机制。
作者声明无利益冲突。
本工作得益于多个开源库的支持,尤其是 llama-index(https://www.llamaindex.ai/)、ChromaDB(https://www.trychroma.com/)和 LMQL(https://lmql.ai/)。
| 姓名 | 公司 | 目录编号 | 评论 |
|---|---|---|---|
| pip3 版本 22.0.2 | |||
| Python 版本 3.10.12 |