1. 引言
检索增强生成(Retrieval-Augmented Generation, RAG)已成为提升大语言模型(LLM)内容生成准确性的关键策略,可有效对抗幻觉和其他不准确现象。为了实现 RAG 的高效扩展,必须构建合适的数据架构。数据流方法为此提供了坚实的基础,确保 LLM 能够持续接收丰富、可靠的数据,从而生成精确的结果。此方法还促进了数据与应用团队的独立运作与扩展,加速了创新的步伐。
诸如 GPT 和 Llama 等基础性 LLM,虽然在广泛的主题上能够生成合理的回应,但它们也会产生内容错误。正如 Forrester 所指出,公共 LLM 常常因为依赖公开的互联网数据而产生不相关或错误的结果。此外,这些模型忽略了存储在客户数据库、ERP 系统、公司 Wiki 和其他内部数据源中的公司数据。为了提高准确性并释放商业价值,公司必须整合这些未被利用的数据。
RAG 使得数据团队能够将提示(Prompt)与公司特定领域的数据实时关联,为 LLM 提供了额外的背景信息。这种增强的上下文感知能力,使得 LLM 更有可能在数据中识别正确的模式,从而提供准确、相关的响应。这对于企业关键用例,如语义搜索、内容生成或智能辅助等,至关重要,因为这些应用场景要求输出必须基于精确且最新的信息。
2. 直接在公司特定数据上训练 LLM 的挑战
在 GenAI 领域,创建基础模型(foundation model)的黄金标准是通过训练具有数十亿参数的 Transformer 模型,这通常需要巨大的计算资源和成本。例如,OpenAI 曾透露,训练 GPT-4 的成本超过 1 亿美元。尽管小语言模型和成本较低的训练方法的研究取得了初步成果,但这些方法尚未成熟到能够广泛推广和商业化。微调(fine-tuning)现有模型是一种资源密集度较低的替代方案,但需要深入的专业知识来确保正确实施。
LLM 的民主化优势在于它们为广泛的用户提供了 AI 技术的访问。然而,如果需要聘请一个由博士组成的专家团队来微调模型,这种优势就会大打折扣。
RAG 提供了一个平衡的解决方案,但必须谨慎实施,确保提供准确和最新的信息,并且能够在不同应用程序和团队之间扩展。为了理解为什么事件驱动的架构是这种情况的最佳选择,我们需要了解 GenAI 应用程序开发的四种模式。
2.1 数据增强(Data Augmentation)
数据增强要求应用程序能够提取相关上下文信息,通常通过向量数据库检索编码在文本中的语义相似信息来实现。这涉及到从多个数据源聚合数据,并将其划分为可管理的、保留原始意义的块。这些数据块随后被嵌入到向量数据库中,以便与提示结合使用。
事件驱动的架构在此过程中发挥着关键作用,因为它能够实时地从企业的不同数据源集成信息,确保提供给 LLM 的信息是可靠和及时的。传统的 ETL 管道,依赖批处理操作,往往会导致信息过时。事件驱动架构确保了对操作数据存储的任何更改都能及时反映到向量存储中,从而用于上下文化的提示。将数据组织为流数据产品还提高了可重用性,使得数据转换可以作为可组合的组件,支持多个 LLM 应用程序的数据增强。
代码示例:数据分块与嵌入
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.embeddings import HuggingFaceEmbeddings
# 初始化文本分割器
splitter = RecursiveCharacterTextSplitter(
chunk_size=500,
chunk_overlap=50,
separators=["\n\n", "\n", ".", " "]
)
# 模拟文档加载
raw_text = "这是一段关于公司内部政策的重要文档..."
docs = splitter.create_documents([raw_text])
# 生成嵌入向量
embeddings = HuggingFaceEmbeddings(model_name="sentence-transformers/all-MiniLM-L6-v2")
vector_store.add_documents(docs, embeddings=embeddings)


