在本方案中,通过使用经同行评审的领域特定科学文献,经由向量嵌入机制增强,从而提升基础大语言模型的响应质量。此外,还提供了代码以辅助在不同大语言模型之间进行性能比较。
需要JoVE订阅才能观看此内容。 请登录或开始免费试用
在本方案中,通过使用经同行评审的领域特定科学文献,经由向量嵌入机制增强,从而提升基础大语言模型的响应质量。此外,还提供了代码以辅助在不同大语言模型之间进行性能比较。
大语言模型(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模型亦表现出类似优势。该结果表明,相较于基线模型,通过增强方法提升了模型性能,属于积极成果。
访问受限。请登录或开始试用以查看此内容。
本文提供的方法旨在促进大语言模型(LLM)在特定领域应用中的研究,而无需从头开始训练或进行大量微调。de novo 训练或精细调优。随着大语言模型逐渐成为研究热点,增强知识库并提高响应准确性的方法将变得愈发重要18,19,20,21。如所提供的结果所示,相较于未增强的相同大语言模型,本文所述方案在回答领域特定问题时表现出性能提升,并接近 OpenAI GPT 等更复杂模型的表现。由于大语言模型在生成响应时可能需要巨大的计算资源22,23,增强较简单的模型可能为资源受限的应用场景提供可行的实施路径。此外,检索增强生成(RAG)系统在增强 OpenAI 提供的高复杂度模型时也展现出优势。尽管本文结果聚焦于腹膜癌管理,但近期已有大量关于 RAG 系统的研究...
访问受限。请登录或开始试用以查看此内容。
作者声明无利益冲突。
本工作得益于多个开源库的支持,尤其是 llama-index(https://www.llamaindex.ai/)、ChromaDB(https://www.trychroma.com/)和 LMQL(https://lmql.ai/)。
访问受限。请登录或开始试用以查看此内容。
| 姓名 | 公司 | 目录编号 | 评论 |
|---|---|---|---|
| pip3 版本 22.0.2 | |||
| Python 版本 3.10.12 |
访问受限。请登录或开始试用以查看此内容。