SuperAPI AI 工具集

Emerging Architectures for LLM Applications

这是一篇关于 LLM 应用栈参考架构的文章。文章介绍了 AI 初创公司和科技公司在构建大语言模型应用时最常用的系统、工具和设计模式,重点围绕上下文学习(in-context learning)这一设计模式,涵盖数据预处理与嵌入、向量数据库、提示构建与检索、提示执行与推理、编排框架、语言模型选择等关键环节,并提供了相关项目的链接。

访问官网

工具介绍

本文介绍新兴的 LLM 应用栈参考架构,展示 AI 初创公司和成熟科技公司最常用的系统、工具和设计模式。

用途

大语言模型是构建软件的强大新原语,但由于其新颖且行为不同于常规计算资源,如何使用并不总是显而易见。本文旨在为正在使用 LLM 的开发者提供有用的参考。

主要能力

上下文学习设计模式

核心思想是直接使用现成的 LLM(无需微调),通过巧妙的提示和对私有“上下文”数据的条件控制来引导其行为。工作流可分为三个阶段:

  1. 数据预处理/嵌入:将私有数据(如法律文档)分块,通过嵌入模型,存储到向量数据库中,以便后续检索。
  2. 提示构建/检索:用户提交查询时,应用构建一系列提示提交给语言模型。编译后的提示通常结合开发者硬编码的提示模板、少样本示例、从外部 API 检索的必要信息以及从向量数据库检索的相关文档。
  3. 提示执行/推理:将提示提交给预训练的 LLM 进行推理,包括专有模型 API 和开源或自训练模型。部分开发者还会在此阶段添加日志、缓存和验证等运营系统。

上下文数据

包括文本文档、PDF 以及 CSV 或 SQL 表等结构化格式。数据加载和转换解决方案因开发者而异。多数使用传统 ETL 工具如 Databricks 或 Airflow。部分使用编排框架中的文档加载器,如 LangChain(由 Unstructured 提供支持)和 LlamaIndex(由 Llama Hub 提供支持)。

嵌入

大多数开发者使用 OpenAI API,特别是 text-embedding-ada-002 模型。一些大型企业也在探索 Cohere。偏好开源的开发者可使用 Hugging Face 的 Sentence Transformers 库。

向量数据库

最常见的市场选择是 Pinecone,因其完全云托管、易于上手且具备大型企业所需的生产功能(如大规模性能、SSO、正常运行时间 SLA)。其他选项包括:

  • 开源系统如 Weaviate、Vespa 和 Qdrant:通常提供优秀的单节点性能,可针对特定应用定制,受有经验 AI 团队欢迎。
  • 本地向量管理库如 Chroma 和 Faiss:开发者体验好,易于为小型应用和开发实验启动,但不一定替代大规模完整数据库。
  • OLTP 扩展如 pgvector:适合偏好 Postgres 或从单一云提供商购买数据基础设施的企业。

提示策略

大多数开发者从简单提示开始,包括直接指令(零样本提示)或一些示例输出(少样本提示)。更高级的提示策略旨在将模型响应建立在真实来源上,并提供模型未训练过的外部上下文。Prompt Engineering Guide 列出了至少 12 种高级提示策略,包括思维链、自一致性、生成知识、思维树、方向性刺激等。

编排框架

LangChain 和 LlamaIndex 等编排框架抽象了提示链、与外部 API 交互、从向量数据库检索上下文数据以及维护多次 LLM 调用记忆的许多细节。它们还提供常见应用的模板。LangChain 是领导者,目前版本为 0.0.201。ChatGPT 也可作为 API 访问,并执行一些与其他编排框架相同的功能,如抽象定制提示、维护状态、通过插件或 API 检索上下文数据。

语言模型

OpenAI 是语言模型领域的领导者。几乎所有开发者都使用 OpenAI API 启动新的 LLM 应用,通常使用 gpt-4 或 gpt-4-32k 模型。当项目进入生产并扩展时,常见选项包括:

  • 切换到 gpt-3.5-turbo:比 GPT-4 便宜约 50 倍且更快。
  • 试验其他专有供应商(尤其是 Anthropic 的 Claude 模型):提供快速推理、GPT-3.5 级别的准确性、更多定制选项,以及高达 100k 的上下文窗口。
  • 将部分请求分流到开源模型:在高流量 B2C 用例中特别有效。相关平台包括 Databricks、Anyscale、Mosaic、Modal 和 RunPod。开源模型的推理选项包括 Hugging Face 和 Replicate 的简单 API 接口、主要云提供商的原始计算资源等。

使用方式

文章提供了 LLM 应用栈的参考架构图,并附有各项目的链接以便快速参考。更全面且持续更新的版本可在 GitHub 上的 LLM App Stack 仓库获取。

适用场景

适用于正在使用 LLM 构建应用的开发者,尤其是刚开始接触 LLM 的开发者。文章基于与 AI 初创公司创始人和工程师的对话,包括 Ted Benson、Harrison Chase、Ben Firshman、Ali Ghodsi、Raza Habib、Andrej Karpathy、Greg Kogan、Jerry Liu、Moin Nadeem、Diego Oppenheimer、Shreya Rajpal、Ion Stoica、Dennis Xu、Matei Zaharia 和 Jared Zoneraich 的输入。

限制

该技术栈仍处于早期阶段,可能会随着底层技术的进步而发生重大变化。关于上下文窗口扩大后嵌入和向量数据库的演变,以及向量数据库是否会像 OLTP 和 OLAP 对应物一样整合,仍存在开放问题。