热门大型语言模型(LLM)应用开发框架

我们来深入探索这些强大的大型语言模型(LLM)应用开发框架,并且我会尝试用文本形式描述一些核心的流程图,帮助您更好地理解它们的工作机制。由于我无法直接生成图片,我会用文字清晰地描述流程图的各个步骤和连接。


LangChain 🦜🔗:LLM 应用的全能瑞士军刀与编排大师

LangChain 是一个功能极其丰富的开源框架,旨在简化和标准化 LLM 应用的开发。它通过模块化的组件和"链"(Chains)的概念,让开发者能够像搭积木一样构建从简单到复杂的各类 LLM 应用,尤其在 RAG (检索增强生成) 和自主代理 (Agents) 方面表现突出。

  • 核心理念:将 LLM 应用的各个环节(如模型调用、数据连接、任务编排、记忆管理)抽象为可复用的组件,并通过"链"将它们串联起来,实现灵活且强大的工作流。

  • 关键特性详解:

    • LLM 封装 (LLM Wrappers) :提供统一接口调用不同的 LLM,如 OpenAI 的 gpt-4、gpt-3.5-turbo,Hugging Face Hub 上的开源模型(如 Llama, Mistral),以及 Azure OpenAI Service 等。这使得底层模型的切换成本大大降低。
    • 链 (Chains) :这是 LangChain 的灵魂。链定义了一系列操作的执行顺序。
      • LLMChain:最基础的链,包含一个提示模板 (PromptTemplate)、一个 LLM 和一个可选的输出解析器 (OutputParser)。
      • 顺序链 (Sequential Chains) :如 SimpleSequentialChain(单输入单输出)和 SequentialChain(多输入多输出),可以将多个链或原子操作按顺序连接。
      • 路由链 (Router Chains):能根据输入动态地选择执行哪一个子链,实现更复杂的逻辑分支。
      • 文档处理链 (Chains for Document Interaction) :如 load_summarize_chain (加载文档并总结),load_qa_chain (加载文档并进行问答)。
    • 索引与检索器 (Indexes and Retrievers) - RAG 的核心 :
      • 文档加载器 (Document Loaders):支持超过80种数据源,从 PDF、TXT、CSV、JSON、HTML 到 Notion、Google Drive、Slack、Databases (SQL, NoSQL) 等。
      • 文本分割器 (Text Splitters) :将长文档分割成适合 LLM 处理的语义相关的小块 (chunks)。例如 RecursiveCharacterTextSplitter (递归按字符分割,尝试保留段落完整性)、TokenTextSplitter (按 Token 数量分割)。
      • 向量化 (Embeddings):将文本块转换为高维向量,捕捉其语义信息。支持 OpenAI, Hugging Face, Cohere 等多种嵌入模型。
      • 向量存储 (Vector Stores):将文本块及其向量存储起来,以便进行高效的相似性搜索。集成了 FAISS, Chroma, Pinecone, Weaviate, Milvus, Elasticsearch 等25种以上的向量数据库/搜索引擎。
      • 检索器 (Retrievers):根据用户查询(也转换为向量)从向量存储中检索最相关的文本块。除了基本的相似性搜索,还支持 MMR (Maximal Marginal Relevance) 减少结果冗余,以及元数据过滤等。
    • 代理 (Agents) :赋予 LLM "思考-行动"的能力。Agent 内部有一个 LLM 作为决策核心,可以访问一系列工具 (Tools) 来完成用户指定的任务。
      • 工具 (Tools):可以是简单的函数(如计算器、日期获取),也可以是调用外部 API(如 Google 搜索、天气查询、维基百科),甚至可以是其他的链。
      • Agent 执行器 (AgentExecutor):负责运行 Agent 的主循环,包括让 LLM 思考、选择工具、执行工具、观察结果,并循环此过程直到任务完成。
      • Agent 类型 :如 zero-shot-react-description (基于 ReAct 范式,根据工具描述让 LLM 自行决定使用哪个工具),self-ask-with-search (模拟人类先自问问题再通过搜索找答案的过程)。
    • 记忆 (Memory) :为链和 Agent 提供短期或长期的记忆能力,使对话能够保持上下文连贯。
      • 类型 :ConversationBufferMemory (存储完整对话历史),ConversationBufferWindowMemory (仅存储最近 K 轮对话),ConversationSummaryMemory (对历史对话进行摘要),VectorStoreRetrieverMemory (将对话历史存入向量数据库,根据当前输入检索相关历史片段)。
    • 回调 (Callbacks):允许开发者在链或 Agent 执行的各个阶段(如开始、结束、出错、接收到 LLM 输出等)注入自定义逻辑,用于日志记录、监控、流式输出、调试等。
  • RAG 流程示意图 (文本描述):

查询与生成 数据处理与存储 检索相似向量 用户查询 嵌入模型 Embedding Model 查询向量 相关文本块 Relevant Chunks LLM Chain 带提示模板 生成的答案 原始数据 文档/网页等 文档加载器 Document Loader 文本分割器 Text Splitter 文本块Chunks 嵌入模型 Embedding Model 向量 Vectors 向量数据库 Vector Store

  • Agent 执行流程示意图 (文本描述):

    1. 思考 (Thought) 2. 决定行动 (Action) 3. 工具输出 (Observation) 4. 再次思考/判断是否完成 如果任务未完成 如果任务完成 用户输入/目标 Agent Agent LLM作为大脑 选择工具及输入 工具执行 Search API 最终答案/行动结果
  • 应用场景:

    • 高级 RAG 系统:构建能理解复杂文档、回答专业问题的客服机器人或研究助手。
    • 个性化聊天机器人:利用记忆模块记住用户偏好,提供更贴心的对话体验。
    • 自主任务执行代理:如自动化预订、信息搜集与整理、代码生成与解释。
    • 数据分析与报告生成:连接数据库或 API,自动提取数据、进行分析并生成结构化报告。

Haystack 🌻 (由 deepset AI 开发):生产级语义搜索与问答专家

Haystack 是一个专注于构建端到端、可扩展、生产就绪的语义搜索和问答系统的开源框架。它强调信息检索流程的健壮性和评估能力。

  • 核心理念:通过模块化的"管道"(Pipelines)将文档处理、嵌入、检索、阅读/生成等步骤清晰地组织起来,构建高性能的神经搜索系统,并提供评估工具以确保系统质量。

  • 关键特性详解:

    • 管道 (Pipelines):Haystack 的核心工作流机制。开发者通过 YAML 文件或 Python 代码定义管道,将不同的组件(节点)连接起来。
    • 文档存储 (DocumentStores):用于存储文本数据及其元数据和向量表示。支持多种后端,如 Elasticsearch, OpenSearch, FAISS, Milvus, Pinecone, Weaviate 等。Haystack 提供了统一的接口来管理这些存储。
    • 文件转换器 (FileConverters) :将不同格式的文件(PDF, DOCX, TXT, Markdown 等)转换为 Haystack Document 对象。
    • 预处理器 (Preprocessors) :对 Document 对象进行清洗(如移除多余空格、特殊字符)和分割(按句子、单词或固定长度分割成更小的文档单元)。
    • 嵌入器 (Embedders) / 检索器 (Retrievers) :
      • 稠密检索器 (Dense Retrievers) :如 EmbeddingRetriever,使用句子Transformer等模型将文档和查询转换为向量,然后进行相似度搜索。
      • 稀疏检索器 (Sparse Retrievers) :如 BM25Retriever (基于 Elasticsearch 或 OpenSearch),使用传统的词频统计方法(如 BM25)进行检索。
      • 混合检索:可以结合稠密和稀疏检索器的结果。
    • 阅读器 (Readers):通常是基于 Transformer 的抽取式问答模型(如 RoBERTa, MiniLM 的微调版本),它们从检索器返回的文档中直接抽取答案片段。
    • 生成器 (Generators) :使用 LLM(如 GPT, T5)基于检索到的上下文生成更流畅、更全面的答案。PromptNode 是 Haystack 中用于与 LLM 交互的核心组件,可以配置不同的提示模板和模型。
    • 排序器 (Rankers):对检索器或阅读器返回的结果进行重新排序,以提升最终答案的相关性。
    • 评估 (Evaluation):Haystack 提供了专门的评估流程,可以评估检索阶段的指标(如 Recall@K, MAP)和问答阶段的指标(如 Exact Match, F1-score, SAS - Semantic Answer Similarity)。
    • REST API 与 UI:可以方便地将构建的 Haystack 管道通过 REST API 暴露出来,并且提供了一个简单的 Streamlit UI 用于演示和测试。
  • Haystack 索引管道示意图 (文本描述):

    文档处理与索引 原始文档 PDF, TXT 文件转换器 FileConverter Haystack 文档对象 预处理器 Preprocessor 清洗和分割后的文档单元 嵌入模型/编码器 EmbeddingRetriever/Encoder 文档向量 + 元数据 文档存储 DocumentStore

  • Haystack 查询管道示意图 (文本描述):

    查询与回答 获取候选文档 Reader Generator 用户查询 检索器 Retriever 候选文档列表 Reader 或 Generator? 阅读器 Reader 抽取式答案 生成器 Generator - PromptNode 生成式答案 文档存储 DocumentStore

  • 应用场景:

    • 企业级语义搜索引擎:为公司内部知识库、产品文档、法律合同等提供智能搜索。
    • 智能客服问答系统:准确理解用户问题并从 FAQ 或知识库中找到或生成答案。
    • 文档分析与洞察提取:从大量报告或文献中快速定位关键信息。
    • 金融、法律等行业的合规性检查与信息检索。

AutoGen 🤖💬 (由 Microsoft 开发):赋能多智能体协作与自动化

AutoGen 是一个用于构建和管理多个能够相互对话、协作完成任务的 LLM 代理的框架。它强调通过对话来实现复杂工作流的自动化,并支持人类在环的监督与干预。

  • 核心理念:将复杂任务分解给多个具有不同角色和能力的 AI 代理,这些代理通过对话进行协作,共同达成目标。人类可以作为参与者或监督者加入对话。

  • 关键特性详解:

    • 可对话代理 (Conversable Agents) :AutoGen 的核心。每个代理都可以配置其 LLM(或不使用)、系统消息(定义其身份和行为准则)、工具(函数调用)。
      • UserProxyAgent:代表人类用户,可以发起对话,也可以配置为执行代码(如 Python 脚本,通过 code_execution_config 设置)或调用函数。
      • AssistantAgent:由 LLM 驱动的助手代理,根据对话历史和指令生成回复或决定调用哪个函数。
      • GroupChatManager:用于协调多个代理在群聊中的发言顺序和流程。
    • 多代理对话 :代理之间通过发送和接收消息进行通信。开发者可以设计不同的对话模式:
      • 两代理对话 :例如,一个 UserProxyAgent 和一个 AssistantAgent 相互对话。
      • 群聊 (Group Chat) :多个代理(包括 UserProxyAgent)在一个群组内讨论,由 GroupChatManager 控制流程。
      • ** سلسله对话 (Sequential Chats)**:任务在一个代理序列中传递。
    • 函数调用 (Function Calling) / 工具使用:代理可以调用预定义的 Python 函数。这与 OpenAI 的函数调用功能紧密集成,使得 LLM 可以请求执行特定的代码逻辑,从而与外部环境交互或执行复杂计算。
    • 代码执行 :UserProxyAgent 可以配置为在本地或 Docker 容器中执行 LLM 生成的代码块(如 Python, Shell 脚本),并将结果返回给对话。这对于编程、数据分析等任务非常强大。
    • 人在回路 (Human-in-the-loop):人类用户可以随时介入对话,提供反馈、修正方向、批准代码执行或手动执行某些步骤。这对于确保任务的正确性和安全性至关重要。
    • 可定制性:可以自定义代理的行为,例如它们如何回复、何时请求人类输入、何时终止对话等。
  • AutoGen 基础双代理对话流程示意图 (文本描述):

    发起任务/问题 传递任务 1. 思考/生成回复/决定使用工具 是 工具执行结果 否 接收结果后 继续生成/总结 人类用户 UserProxyAgent AssistantAgent LLM驱动 需要工具/代码 UserProxyAgent 执行工具/代码 AssistantAgent 生成回复 UserProxyAgent 呈现给人类 继续

  • AutoGen 群聊流程示意图 (简化) (文本描述):

    选择下一个发言者 发言内容/结果 选择下一个发言者 发言内容/结果 循环直到满足条件 发言内容/结果 任务完成 人类用户/发起者 GroupChatManager 代理A 发言 执行 代理B 根据A的发言回应 执行 代理N 最终结果呈现给用户

  • 应用场景:

    • 自动化复杂任务:如"让一个代理写代码,另一个测试,第三个写文档",或者"一个代理负责搜集最新新闻,另一个总结,第三个写评论"。
    • 代码生成、调试与优化:代理可以协作编写、运行和改进代码。
    • 研究与内容创作:多个代理分工合作,进行文献回顾、数据分析、报告撰写。
    • 模拟与决策支持:模拟不同角色(如CEO, CFO, CTO)在特定场景下的决策过程。
    • 交互式学习与辅导:代理扮演老师、学生、提问者等角色。

Semantic Kernel 🧠💡 (由 Microsoft 开发):轻量级 AI 服务编排 SDK

Semantic Kernel (SK) 是一个轻量级的开源 SDK,旨在将 LLM 和其他 AI 服务(如嵌入模型)的能力无缝集成到传统的应用程序中。它提供了一种将自然语言处理能力与现有代码库(C#, Python, Java)结合的优雅方式。

  • 核心理念:通过一个"内核"(Kernel)对象来编排"技能"(Skills),其中技能可以包含"语义函数"(由自然语言提示驱动)和"原生函数"(用传统代码编写),从而实现 AI 与业务逻辑的深度融合。

  • 关键特性详解:

    • 内核 (Kernel):SK 的中心协调器。它加载技能、管理记忆、连接AI服务,并执行用户请求。
    • 技能 (Skills) :组织功能的单元,可以包含一个或多个函数。技能可以来自文件系统、代码定义或插件。
      • 语义函数 (Semantic Functions) :核心是带有模板的提示词(Prompt Templates)。这些模板定义了如何与 LLM 交互以完成特定任务(如总结、翻译、情感分析、代码生成等)。SK 的提示模板语言支持变量、内置函数和复杂的逻辑。函数定义通常包含 skprompt.txt (提示模板) 和 config.json (配置,如LLM参数)。
      • 原生函数 (Native Functions) :用 C#, Python 或 Java 编写的普通代码函数,可以通过装饰器(如 Python 中的 @sk_function)暴露给 Kernel。这些函数可以访问本地资源、调用外部 API、执行复杂计算等,弥补了 LLM 在某些方面的不足。
    • 记忆 (Memories):为 LLM 提供上下文信息和长期知识。SK 的记忆连接器支持多种向量数据库(如 Azure Cognitive Search, Qdrant, Chroma, Weaviate, Pinecone),用于存储和检索文本嵌入,实现 RAG 功能。
    • 连接器 (Connectors):用于 Kernel 与外部服务(主要是 LLM 和记忆存储)的连接。支持 OpenAI, Azure OpenAI, Hugging Face 等 LLM 服务。
    • 规划器 (Planners) :SK 的一个高级特性,能够根据用户的高层目标和 Kernel 中可用的技能,自动生成一个多步骤的执行计划(Plan)。规划器会分析用户意图,并尝试找到一系列技能调用的组合来达成该意图。
      • 例如,用户请求"给我查一下明天北京的天气,然后根据天气写一首关于春天的短诗",Planner 可能会生成一个计划:1.调用一个WeatherSkill的GetTomorrowWeather函数获取天气;2.调用一个WritingSkill的WritePoem函数,并将天气信息作为输入。
    • 跨语言支持:目前主要支持 C#, Python 和 Java,并致力于提供一致的开发体验。
  • Semantic Kernel 技能调用流程示意图 (文本描述):

    调用 MySkill.Summarize 语义函数 原生函数 用户请求 例如:总结这段文字 内核 Kernel 技能类型? 语义函数 Prompt Template + 输入 LLM 连接器 LLM 服务 OpenAI/Azure LLM 响应 原生函数 C#/Python/Java 代码 代码执行结果 格式化输出给用户

  • Semantic Kernel 规划器流程示意图 (文本描述):

    分析目标, 查找可用技能 顺序执行计划 结果 ... 用户目标 (e.g., 查询股价并发送邮件) 内核 (Kernel) 规划器 (Planner) (技能注册表) 生成计划 (Plan: 步骤1, 步骤2...) 步骤1: 执行技能A 步骤2: 执行技能B (可能使用步骤1的结果) 最终结果

  • 应用场景:

    • 为现有企业应用赋能:在 CRM、ERP 或 Office 插件中嵌入智能助手 (Copilot) 功能。
    • 构建智能业务流程自动化:将需要人类判断和自然语言理解的环节交由 LLM 处理,其他环节由传统代码执行。
    • 创建可重用的 AI 插件 (Skills):将特定领域的 AI 能力封装成技能,供不同应用调用。
    • 将自然语言作为应用程序的新接口:允许用户通过自然语言与复杂系统交互。

LlamaIndex 🦙📄:LLM 的专业级数据框架与 RAG 利器

LlamaIndex 是一个专注于将 LLM 与外部数据源连接的数据框架,是构建高效、强大的 RAG 应用的核心工具。它提供了从数据摄取、索引构建到查询执行的完整解决方案。

  • 核心理念:为 LLM 提供一个简单、灵活且优化的方式来访问和利用私有或领域特定的数据,从而增强 LLM 的知识范围和回答相关性。

  • 关键特性详解:

    • 数据连接器/读取器 (Data Connectors / Readers) :极其强大的数据摄取能力,支持超过150种数据源。
      • 文件类:PDF, DOCX, TXT, Markdown, CSV, Excel, PowerPoint, Images (OCR), Audio (transcription)。
      • SaaS 应用:Notion, Slack, Salesforce, Google Drive, OneDrive, Asana, Trello, Jira, GitHub, Discord。
      • 数据库:PostgreSQL, MySQL, MongoDB, Snowflake, SQL Server, Elasticsearch。
      • APIs:可以自定义连接器调用任意 API。
    • 节点 (Nodes) :文档被加载和解析后,会转换成 Node 对象。一个 Node 代表一个文本块 (chunk),并包含文本内容、元数据 (metadata)、以及与其他节点的关系 (relationships)。
    • 索引结构 (Index Structures) :LlamaIndex 提供了多种索引类型来组织 Node,以适应不同的查询需求。
      • VectorStoreIndex:最常用的索引,将 Node 的文本嵌入存储在向量数据库中,通过语义相似度进行检索。与 FAISS, Pinecone, Weaviate, Chroma, Qdrant 等深度集成。
      • ListIndex:按顺序存储 Node,适合顺序问答或对所有内容进行总结。
      • TreeIndex:将 Node 组织成层级树状结构(通常是摘要树),父节点是子节点的摘要。查询时可以自顶向下或自底向上遍历。
      • KeywordTableIndex:从 Node 中提取关键词,构建关键词到 Node 的映射,支持基于关键词的检索。
      • KnowledgeGraphIndex:从文本中提取实体和关系,构建知识图谱索引,支持结构化查询和推理。
      • 组合索引 (Composable Indexes):可以将不同类型的索引组合起来,例如先用关键词索引粗筛,再用向量索引精排。
    • 检索器 (Retrievers) :从索引中检索与查询相关的 Node。LlamaIndex 提供了多种配置选项,如 similarity_top_k (返回最相似的k个节点)、元数据过滤等。
    • 节点后处理器 (Node Postprocessors) :在检索到 Node 之后,但在传递给 LLM 合成答案之前,对 Node列表进行进一步处理,如重新排序、过滤低分节点、关键词高亮等。
    • 响应合成器 (Response Synthesizers) :获取检索到的 Node 列表和原始查询,然后使用 LLM 来生成最终的自然语言答案。提供了多种合成策略:
      • refine:逐个处理检索到的文本块,迭代地优化答案。
      • compact:将尽可能多的文本块塞进 LLM 的上下文窗口进行一次性回答。
      • tree_summarize:层级式总结,先总结小块,再总结小块的总结,适合大量文本。
    • 查询引擎 (Query Engines):封装了从查询到生成答案的整个流程(检索 -> 后处理 -> 合成)。
    • 聊天引擎 (Chat Engines):在查询引擎的基础上增加了对话记忆,支持多轮 RAG 对话。
    • 代理 (Agents):LlamaIndex 也提供了 Agent 框架,其 Agent 可以使用 LlamaIndex 的查询引擎作为工具 (QueryEngineTool) 来访问和推理数据。
  • LlamaIndex 数据索引流程示意图 (文本描述):

    附加元数据 数据源 (PDF, API, DB等) 加载器 Reader/Connector 文档对象 (Documents) 解析器/文本分割器 NodeParser 节点 (Nodes) / 文本块 带元数据的节点 嵌入模型 Embedding Model 节点向量 索引结构 Index e.g., VectorStoreIndex

  • LlamaIndex 查询流程示意图 (文本描述):

    从索引查询 用户查询 查询引擎 (QueryEngine) 检索器 (Retriever) (索引结构 Index) 相关节点 (Relevant Nodes) 可选: 节点后处理器 NodePostprocessor 精选/排序后的节点 响应合成器 ResponseSynthesizer LLM驱动 生成的答案

  • 应用场景:

    • 构建任何基于私有数据的问答系统:无论是公司内部文档、个人笔记、研究论文库还是特定领域的知识库。
    • 多模态 RAG:结合文本、图像、音频数据进行问答。
    • 结构化数据分析与问答:将结构化数据(如 SQL 数据库)与非结构化数据结合起来,通过自然语言进行查询和分析。
    • 知识图谱构建与问答:从文本中自动构建知识图谱,并基于图谱进行复杂推理。
    • Agentic RAG:创建能够主动查询、分析和综合来自不同数据源信息的智能代理。

总结与选择考量

这些框架各有侧重,但目标都是为了让开发者更高效地利用 LLM 的强大能力。

  • 如果您需要一个功能全面、社区庞大、拥有大量预置组件和灵活编排能力 的框架,并且希望快速原型化和构建复杂的Agentic应用或RAG流程,LangChain 通常是首选。
  • 如果您专注于构建生产级别的、高性能的语义搜索或问答系统 ,并且非常重视系统的评估、可扩展性和与传统信息检索技术的结合,Haystack 会是一个非常专业的选择。
  • 如果您想探索多智能体协作、任务自动化和人类参与的复杂对话系统 ,特别是需要代理之间进行精细的交互和代码执行,AutoGen 提供了独特的范式。
  • 如果您希望以一种**更接近传统软件工程的方式将AI能力(尤其是LLM)轻量级地集成到现有应用程序(特别是C#, Python, Java技术栈)**中,并强调技能的复用和AI与业务逻辑的融合,Semantic Kernel 是一个优秀的选择。
  • 如果您项目的核心在于处理和连接多样化的外部数据源以增强LLM(即RAG是关键) ,并且需要对数据的摄取、索引、查询进行深度优化和精细控制,LlamaIndex 在数据处理方面提供了无与伦比的深度和广度。

在实际项目中,这些框架并非完全互斥,有时甚至可以结合使用它们各自的优势组件。例如,使用 LlamaIndex 构建强大的数据索引和检索器,然后将其作为 LangChain Agent 的一个工具。理解它们的核心设计理念和优势,将帮助您为您的 LLM 应用选择最合适的架构和工具。

相关推荐
sell-cloud6 小时前
Prompt Engineering要凉了?Fable 5.5能“猜“意图,但银行正在封杀AI Agent——企业AI的真正护城河是什么
人工智能·prompt
Navicat中国8 小时前
Navicat 18 内置 AI 助手让数据库开发从繁琐操作迈向智能协作
大数据·人工智能·数据库开发
4SAPI8 小时前
多模型请求路由怎么设计?成本、速度和能力如何平衡
人工智能·python·gateway·php
魔乐社区9 小时前
翼芯・智算测试与适配优化专区,让国产算力“选得准、跑得通、用得好“
人工智能·开源·大模型
XCDoris10 小时前
郴州logo设计机构
大数据·人工智能·python
Goboy11 小时前
一个人带三个Agent,我用全新TRAE从0到1搭了个资讯周刊站
人工智能·trae
俊哥V11 小时前
每日 AI 研究简报 · 2026-10-19
人工智能·ai
AI_AGENT_DEV_AI11 小时前
AI英语教培智能体的开发
人工智能
物联网软硬件开发-轨物科技11 小时前
【技术白皮书】光伏清检一体化机器人系统解决方案技术白皮书
大数据·运维·网络·人工智能·机器人
海宇数据11 小时前
零信任架构实战:基于海宇网上踪迹欺诈行为识别构建自动化信贷资信评估网关
运维·人工智能·架构·自动化