2026下半年AI工具链投资指南:LangChain、向量DB、Agent框架的选型建议

作者:钟伊人(钟哩哩)
日期:2026年7月31日
标签:AI工具链、LangChain、向量数据库、Agent框架、技术选型


模块一:AI工具链的生态全景与演进趋势

2026年的AI工具链已经形成了相对成熟的生态。但变化仍然很快。

AI应用开发的技术栈可以分为四层:模型层、工具链层、应用层、基础设施层。

本文聚焦工具链层的三大核心组件:编排框架(LangChain等)、向量数据库、Agent框架。

# AI工具链技术栈全景(Python字典表示)
AI_TOOLCHAIN_LANDSCAPE_2026 = {
    'model_layer': {
        'llm_providers': ['OpenAI', 'Anthropic', 'Google', 'Meta', 'DeepSeek', 'Qwen'],
        'multimodal_models': ['GPT-4V', 'Claude 3', 'Gemini 2.0'],
        'embedding_models': ['text-embedding-3', 'BGE', 'M3E'],
        'fine_tuning_frameworks': ['LoRA', 'QLoRA', 'PEFT'],
    },
    'toolchain_layer': {
        'orchestration_frameworks': ['LangChain', 'LlamaIndex', 'Haystack', 'DSPy'],
        'vector_databases': ['Pinecone', 'Weaviate', 'Qdrant', 'Milvus', 'Chroma', 'pgvector'],
        'agent_frameworks': ['AutoGPT', 'BabyAGI', 'LangGraph', 'CrewAI', 'AutoGen'],
        'evaluation_tools': ['RAGAS', 'TruLens', 'DeepEval'],
        'observability': ['LangSmith', 'Phoenix', 'Helicone'],
    },
    'application_layer': {
        'chatbots': ['ChatGPT', 'Claude', '智能客服'],
        'coding_assistants': ['GitHub Copilot', 'Cursor', 'Codeium'],
        'knowledge_management': ['Notion AI', 'Obsidian+AI'],
        'enterprise_search': ['Glean', 'SearXNG'],
    },
    'infrastructure_layer': {
        'model_serving': ['vLLM', 'TGI', 'TensorRT-LLM'],
        'gpu_orchestration': ['Kubernetes + NVIDIA GPU Operator'],
        'caching': ['Redis', 'Memcached'],
        'rate_limiting': ['Redis Cell', 'Kong'],
    }
}

模块二:LangChain vs LlamaIndex vs DSPy——编排框架选型

编排框架是AI应用的"胶水"。负责将模型、数据、工具串联起来。

LangChain:生态最丰富,但复杂度高

LangChain是2023-2024年最火的AI编排框架。2026年的地位依然稳固,但面临挑战。

# LangChain 2026版示例代码(RAG流水线)
from langchain_openai import ChatOpenAI, OpenAIEmbeddings
from langchain_community.vectorstores import Chroma
from langchain.chains import create_retrieval_chain
from langchain.chains.combine_documents import create_stuff_documents_chain
from langchain_core.prompts import ChatPromptTemplate
import langchain

# 启用LangSmith追踪(可观测性)
langchain.debug = False  # 生产环境关闭debug

# 1. 初始化模型和Embedding
llm = ChatOpenAI(model="gpt-4o", temperature=0.1)
embeddings = OpenAIEmbeddings(model="text-embedding-3-small")

# 2. 加载向量数据库
vectorstore = Chroma(
    collection_name="my_docs",
    embedding_function=embeddings,
    persist_directory="./chroma_db"
)

# 3. 创建Retriever
retriever = vectorstore.as_retriever(
    search_type="mmr",  # Maximum Marginal Relevance,多样性检索
    search_kwargs={'k': 5, 'fetch_k': 20}
)

# 4. 定义Prompt模板
prompt = ChatPromptTemplate.from_messages([
    ("system", """你是一个专业的技术文档助手。
    请基于以下上下文回答问题。如果上下文不足以回答问题,请说"我无法从提供的文档中找到答案"。
    
    上下文:
    {context}"""),
    ("human", "{input}")
])

# 5. 创建RAG链
document_chain = create_stuff_documents_chain(llm, prompt)
retrieval_chain = create_retrieval_chain(retriever, document_chain)

# 6. 执行查询
response = retrieval_chain.invoke({
    "input": "如何在生产环境中部署LangChain应用?"
})

print(response['answer'])

LangChain的优缺点(2026年评估)

优点:生态最丰富、文档最完善、社区最大。

缺点:抽象层级过多、性能开销大、版本迭代快导致API不稳定。

LlamaIndex:RAG场景的最佳选择

LlamaIndex(原名GPT Index)专注于RAG场景。比LangChain更简洁、更高效。

# LlamaIndex 2026版示例代码
from llama_index.core import VectorStoreIndex, SimpleDirectoryReader
from llama_index.core.query_engine import RetrieverQueryEngine
from llama_index.core.retrievers import VectorIndexRetriever
from llama_index.llms.openai import OpenAI
from llama_index.embeddings.openai import OpenAIEmbedding
from llama_index.core.settings import Settings

# 1. 全局配置
Settings.llm = OpenAI(model="gpt-4o", temperature=0.1)
Settings.embed_model = OpenAIEmbedding(model="text-embedding-3-small")

# 2. 加载文档
documents = SimpleDirectoryReader('data/technical_docs').load_data()

# 3. 构建索引
index = VectorStoreIndex.from_documents(
    documents,
    show_progress=True
)

# 4. 配置检索器
retriever = VectorIndexRetriever(
    index=index,
    similarity_top_k=5,
)

# 5. 构建查询引擎
query_engine = RetrieverQueryEngine.from_args(
    retriever,
    response_mode='tree_summarize',  # 适合长文档总结
)

# 6. 执行查询
response = query_engine.query("LangChain和LlamaIndex的主要区别是什么?")
print(response)

# 7. 持久化索引(生产必备)
index.storage_context.persist(persist_dir="./storage")

LlamaIndex的优缺点

优点:RAG性能优秀、API简洁稳定、默认配置质量高。

缺点:通用性不如LangChain(主要聚焦RAG)。

DSPy:声明式AI编程的革命

DSPy是2025-2026年最受关注的新框架。用声明式编程替代手工提示工程。

# DSPy 2026版示例代码
import dspy
from dspy.teleprompt import BootstrapFewShot
from dspy.evaluate import Evaluate

# 1. 配置LM
lm = dspy.LM('openai/gpt-4o', temperature=0.1)
dspy.configure(lm=lm)

# 2. 定义签名(Signature)——声明式定义任务
class AnswerQuestion(dspy.Signature):
    """回答技术问题。基于提供的上下文给出准确答案。"""
    context = dspy.InputField(desc="相关技术文档段落")
    question = dspy.InputField(desc="用户提出的问题")
    answer = dspy.OutputField(desc="基于上下文的准确答案")

# 3. 构建模块
class RAGModule(dspy.Module):
    def __init__(self, num_passages=3):
        super().__init__()
        self.retrieve = dspy.Retrieve(k=num_passages)
        self.generate_answer = dspy.ChainOfThought(AnswerQuestion)
    
    def forward(self, question):
        context = self.retrieve(question).passages
        answer = self.generate_answer(context=context, question=question)
        return answer

# 4. 编译(优化Prompt和Few-shot示例)
rag_module = RAGModule()
teleprompter = BootstrapFewShot(metric=dspy.evaluate.answer_exact_match)
compiled_rag = teleprompter.compile(
    rag_module,
    trainset=[  # 训练集(用于优化Prompt)
        dspy.Example(
            question="什么是LangChain?",
            answer="LangChain是一个AI应用编排框架。"
        ).with_inputs('question'),
        # ... 更多训练样本
    ]
)

# 5. 使用编译后的模块
prediction = compiled_rag(question="DSPy相比LangChain有什么优势?")
print(prediction.answer)

DSPy的优缺点

优点:自动优化Prompt、减少手工调参、可复现性好。

缺点:学习曲线陡峭、生态较新(2025年才成熟)。

选型建议

# 编排框架选型决策树
def choose_orchestration_framework(use_case: str, team_size: int, 
                                    need_customization: bool) -> str:
    """根据使用场景选择编排框架"""
    
    if use_case == 'rag' and not need_customization:
        return 'LlamaIndex(RAG场景最佳选择)'
    
    elif use_case == 'complex_agent' and team_size >= 3:
        return 'LangChain(生态丰富,适合复杂场景)'
    
    elif use_case == 'research' or need_customization:
        return 'DSPy(声明式编程,适合研究和高度定制)'
    
    elif use_case == 'simple_chatbot':
        return 'LlamaIndex(简单易用)或直接使用OpenAI API'
    
    else:
        return 'LangChain(通用选择,但需注意复杂度)'

# 示例
print(choose_orchestration_framework('rag', 2, False))
print(choose_orchestration_framework('complex_agent', 5, True))

模块三:向量数据库选型——性能、成本与生态的三角权衡

向量数据库是RAG应用的基石。2026年向量数据库市场已经分化。

第一梯队:专用向量数据库

Pinecone、Weaviate、Qdrant、Milvus是专用向量数据库的第一梯队。

# 主流向量数据库对比(Python字典)
VECTOR_DATABASE_COMPARISON = {
    'Pinecone': {
        'type': 'fully_managed',
        'deployment': 'cloud_only',
        'pricing_model': 'pay_per_pod',
        'max_vectors': 'unlimited',
        'dimensions': 'up_to_20000',
        'supported_metrics': ['cosine', 'dotproduct', 'euclidean'],
        'hybrid_search': True,
        'metadata_filtering': 'powerful',
        'sdk_languages': ['Python', 'Node.js', 'Go'],
        'pros': ['完全托管,无需运维', '性能稳定', 'API简洁'],
        'cons': ['成本高', '厂商锁定', '无法自建'],
        'best_for': '快速原型、小团队、无运维能力',
    },
    'Weaviate': {
        'type': 'open_source_plus_cloud',
        'deployment': 'self_hosted_or_cloud',
        'pricing_model': 'open_source_free / cloud_pay_as_you_go',
        'max_vectors': 'unlimited',
        'dimensions': 'any',
        'supported_metrics': ['cosine', 'dotproduct', 'l2', 'manhattan'],
        'hybrid_search': True,  # BM25 + 向量混合
        'metadata_filtering': 'powerful',
        'sdk_languages': ['Python', 'JavaScript', 'Go', 'Java'],
        'pros': ['开源可自建', '混合搜索强大', '多模态支持'],
        'cons': ['自建需要运维', '文档不如Pinecone清晰'],
        'best_for': '需要自建、多模态场景、混合搜索需求',
    },
    'Qdrant': {
        'type': 'open_source_plus_cloud',
        'deployment': 'self_hosted_or_cloud',
        'pricing_model': 'open_source_free / cloud_usage_based',
        'max_vectors': 'unlimited',
        'dimensions': 'any',
        'supported_metrics': ['cosine', 'dotproduct', 'euclidean', 'manhattan'],
        'hybrid_search': True,
        'metadata_filtering': 'very_powerful',  # 支持复杂布尔表达式
        'sdk_languages': ['Python', 'Rust', 'Go', 'JS'],
        'pros': ['性能极佳(Rust实现)', '过滤功能强大', 'API设计优秀'],
        'cons': ['生态相对较新'],
        'best_for': '高性能需求、复杂过滤场景',
    },
    'Milvus': {
        'type': 'open_source_plus_managed',
        'deployment': 'self_hosted_or_cloud(Zilliz)',
        'pricing_model': 'open_source_free / Zilliz_paid',
        'max_vectors': 'billions',
        'dimensions': 'any',
        'supported_metrics': ['cosine', 'l2', 'ip'],
        'hybrid_search': True,
        'metadata_filtering': 'powerful',
        'sdk_languages': ['Python', 'Java', 'Go', 'Node.js'],
        'pros': ['支持十亿级向量', '国产化(Zilliz)', '企业级特性'],
        'cons': ['部署复杂(依赖 etcd、Pulsar等)', '资源消耗大'],
        'best_for': '大规模生产环境、国产化需求',
    },
}

def print_vector_db_comparison():
    """打印向量数据库对比表"""
    import pandas as pd
    
    summary = []
    for name, info in VECTOR_DATABASE_COMPARISON.items():
        summary.append({
            '名称': name,
            '部署方式': info['deployment'],
            '混合搜索': '✓' if info['hybrid_search'] else '✗',
            '自建选项': '✓' if 'self_hosted' in info['deployment'] else '✗',
            '适用场景': info['best_for'],
        })
    
    df = pd.DataFrame(summary)
    print(df.to_string(index=False))

print_vector_db_comparison()

第二梯队:传统数据库的向量扩展

PostgreSQL的pgvector插件、Elasticsearch的向量搜索功能。

适合已经在使用这些数据库、不想引入新技术的团队。

-- pgvector使用示例(PostgreSQL + pgvector)
-- 1. 安装pgvector扩展
CREATE EXTENSION IF NOT EXISTS vector;

-- 2. 创建表(包含向量列)
CREATE TABLE document_embeddings (
    id SERIAL PRIMARY KEY,
    content TEXT,
    embedding vector(1536),  -- OpenAI embedding维度是1536
    metadata JSONB,
    created_at TIMESTAMP DEFAULT NOW()
);

-- 3. 创建向量索引(IVFFlat或HNSW)
CREATE INDEX ON document_embeddings USING ivfflat (embedding vector_cosine_ops);
-- 或(更慢的构建,但更快的查询):
CREATE INDEX ON document_embeddings USING hnsw (embedding vector_cosine_ops);

-- 4. 插入向量数据
INSERT INTO document_embeddings (content, embedding, metadata)
VALUES (
    'LangChain是一个AI应用编排框架',
    '[0.123, 0.456, ...]'::vector,  -- 实际从OpenAI API获取
    '{"source": "blog", "author": "钟伊人"}'::jsonb
);

-- 5. 向量相似度搜索
SELECT id, content, metadata,
       1 - (embedding <=> '[0.123, 0.456, ...]'::vector) AS similarity
FROM document_embeddings
ORDER BY embedding <=> '[0.123, 0.456, ...]'::vector
LIMIT 5;

选型决策框架

# 向量数据库选型决策树
class VectorDBSelector:
    """向量数据库选型器"""
    
    @staticmethod
    def select(data_scale: str, has_ops_team: bool, 
               need_hybrid_search: bool, budget: str) -> str:
        """选择向量数据库"""
        
        # 决策逻辑
        if data_scale == 'small' and not has_ops_team:
            return 'Pinecone(全托管,最简单)'
        
        elif data_scale == 'small' and has_ops_team:
            return 'Chroma(本地开发)或 Qdrant(自建)'
        
        elif data_scale == 'medium' and need_hybrid_search:
            return 'Weaviate 或 Qdrant'
        
        elif data_scale == 'large' and budget == 'high':
            return 'Milvus(Zilliz Cloud)'
        
        elif data_scale == 'large' and budget == 'low':
            return 'Milvus(自建)但需要运维投入'
        
        elif budget == 'very_low':
            return 'pgvector(如果已有PostgreSQL)'
        
        else:
            return 'Qdrant(平衡性能和成本的最佳选择)'

# 示例
selector = VectorDBSelector()
print(selector.select('medium', True, True, 'medium'))

模块四:Agent框架选型——从AutoGPT到LangGraph

Agent是2026年AI应用的最热方向。Agent框架层出不穷。

框架一:LangGraph(LangChain出品)

LangGraph是目前最成熟的Agent编排框架。基于图结构定义Agent工作流。

# LangGraph示例代码:多步骤Agent
from langchain_openai import ChatOpenAI
from langgraph.graph import StateGraph, END
from typing import TypedDict, Annotated, Sequence
import operator

# 1. 定义状态
class AgentState(TypedDict):
    messages: Annotated[Sequence, operator.add]
    next_step: str
    final_answer: str

# 2. 定义节点函数
def research_node(state: AgentState):
    """研究节点:搜集信息"""
    llm = ChatOpenAI(model="gpt-4o")
    response = llm.invoke(state['messages'])
    return {"messages": [response], "next_step": "analyze"}

def analyze_node(state: AgentState):
    """分析节点:分析搜集到的信息"""
    llm = ChatOpenAI(model="gpt-4o")
    messages = state['messages'] + [
        {"role": "user", "content": "请分析以上信息,提取关键点。"}
    ]
    response = llm.invoke(messages)
    return {"messages": [response], "next_step": "synthesize"}

def synthesize_node(state: AgentState):
    """综合节点:生成最终答案"""
    llm = ChatOpenAI(model="gpt-4o")
    messages = state['messages'] + [
        {"role": "user", "content": "请基于以上分析,生成综合答案。"}
    ]
    response = llm.invoke(messages)
    return {"messages": [response], "final_answer": response.content, "next_step": END}

# 3. 构建图
workflow = StateGraph(AgentState)

# 添加节点
workflow.add_node("research", research_node)
workflow.add_node("analyze", analyze_node)
workflow.add_node("synthesize", synthesize_node)

# 添加边(定义工作流)
workflow.set_entry_point("research")
workflow.add_edge("research", "analyze")
workflow.add_edge("analyze", "synthesize")
workflow.add_edge("synthesize", END)

# 4. 编译并运行
app = workflow.compile()

result = app.invoke({
    "messages": [{"role": "user", "content": "分析2026年下半年AI工具链的发展趋势。"}],
    "next_step": "research",
    "final_answer": ""
})

print(result['final_answer'])

框架二:CrewAI(多Agent协作)

CrewAI专注于多Agent协作场景。每个Agent有特定角色和工具。

# CrewAI示例代码:多Agent协作
from crewai import Agent, Task, Crew, Process
from langchain_openai import ChatOpenAI

# 1. 定义LLM
llm = ChatOpenAI(model="gpt-4o", temperature=0.1)

# 2. 定义Agent(角色)
researcher = Agent(
    role='技术研究员',
    goal='深入研究指定技术主题,收集全面准确的信息',
    backstory='你是一位资深的技术研究员,擅长从多篇文档中提取关键信息。',
    verbose=True,
    allow_delegation=False,
    llm=llm,
)

analyst = Agent(
    role='技术分析师',
    goal='分析技术趋势,给出客观专业的评估',
    backstory='你是一位经验丰富技术分析师,擅长从技术本质出发进行评估。',
    verbose=True,
    allow_delegation=False,
    llm=llm,
)

writer = Agent(
    role='技术作家',
    goal='将技术分析转化为清晰易懂的文章',
    backstory='你是一位优秀的技术作家,擅长将复杂技术概念讲清楚。',
    verbose=True,
    allow_delegation=False,
    llm=llm,
)

# 3. 定义Task
research_task = Task(
    description='研究2026年下半年AI工具链(LangChain、LlamaIndex、DSPy等)的最新进展。',
    expected_output='一份详细的研究报告,包含每个工具的核心特性、优缺点、适用场景。',
    agent=researcher
)

analysis_task = Task(
    description='基于研究员提供的报告,分析各工具的优劣势,给出选型建议。',
    expected_output='一份技术分析报告,包含选型决策树和适用场景建议。',
    agent=analyst
)

writing_task = Task(
    description='基于分析报告,撰写一篇面向技术决策者的选型指南文章。',
    expected_output='一篇2000字的技术选型指南,包含具体代码示例和决策框架。',
    agent=writer
)

# 4. 创建Crew(团队)
crew = Crew(
    agents=[researcher, analyst, writer],
    tasks=[research_task, analysis_task, writing_task],
    process=Process.sequential  # 按顺序执行
)

# 5. 启动(实际会依次调用每个Agent)
# result = crew.kickoff()
# print(result)

框架三:微软AutoGen(企业级Agent框架)

AutoGen是微软推出的多Agent对话框架。适合复杂的企业级场景。

# AutoGen示例代码(简化)
# 注意:AutoGen API在2026年可能有变化
import autogen

# 1. 配置LLM
config_list = [
    {
        'model': 'gpt-4o',
        'api_key': 'your-api-key',
    }
]

# 2. 定义Assistant Agent(代码执行能力)
assistant = autogen.AssistantAgent(
    name="技术专家",
    llm_config={"config_list": config_list}
)

# 3. 定义User Proxy Agent(用户交互+代码执行)
user_proxy = autogen.UserProxyAgent(
    name="用户代理",
    human_input_mode="TERMINATE",  # 不需要人工输入
    max_consecutive_auto_reply=10,
    code_execution_config={"work_dir": "coding"}
)

# 4. 启动对话(Agent自动协作完成任务)
user_proxy.initiate_chat(
    assistant,
    message="请帮我分析LangChain、LlamaIndex和DSPy的优缺点,并给出选型建议。"
)

Agent框架选型建议

# Agent框架选型矩阵
AGENT_FRAMEWORK_SELECTION = {
    'use_case': {
        'single_agent_simple': '直接用LangChain Expression Language (LCEL)',
        'multi_step_workflow': 'LangGraph',
        'multi_agent_collaboration': 'CrewAI',
        'enterprise_complex': 'AutoGen',
        'research_experiment': 'AutoGPT或自定义',
    },
    'team_size': {
        '1-2人': 'LangGraph(与LangChain生态集成好)',
        '3-5人': 'CrewAI(角色分工清晰)',
        '5人以上': 'AutoGen(企业级特性)',
    },
    'complexity': {
        'low': 'LangChain(简单场景)',
        'medium': 'LangGraph',
        'high': 'AutoGen或自定义框架',
    },
}

模块五:技术总结与投资建议

纯技术提炼

2026下半年AI工具链投资的核心建议:

第一:不要all-in单个框架。AI工具链变化太快。用抽象层隔离具体实现。

# AI工具链抽象层示例
from abc import ABC, abstractmethod

class VectorDB(ABC):
    """向量数据库抽象接口"""
    @abstractmethod
    def add(self, embeddings: List[List[float]], metadata: List[Dict]) -> None:
        pass
    
    @abstractmethod
    def search(self, query_embedding: List[float], k: int) -> List[Dict]:
        pass

class LangChainVectorDB(VectorDB):
    """LangChain向量数据库适配"""
    def __init__(self, vectorstore):
        self.vectorstore = vectorstore
    
    def add(self, embeddings, metadata):
        # 适配LangChain接口
        pass
    
    def search(self, query_embedding, k):
        return self.vectorstore.similarity_search_by_vector(query_embedding, k=k)

class QdrantAdapter(VectorDB):
    """Qdrant适配"""
    # 实现Qdrant接口
    pass

# 使用抽象层,可以无缝切换向量数据库
# vectordb = LangChainVectorDB(Chroma(...))  # 开发环境
# vectordb = QdrantAdapter(qdrant_client)     # 生产环境

第二:优先投资可观测性。AI应用的debug比传统应用难10倍。

必须上可观测性工具:LangSmith、Phoenix、或自建。

第三:向量数据库选择Qdrant或Weaviate。避开厂商锁定。

第四:Agent框架选择LangGraph。它最成熟、最灵活。

2026下半年技术路线图建议

# 2026下半年AI工具链学习路线图
AI_TOOLCHAIN_ROADMAP_2026_H2 = {
    'August': {
        'week1-2': 'LangChain深度:LCEL、表达式语言、流式输出',
        'week3-4': 'LlamaIndex深度:高级RAG技术(HyDE、Multi-Query)',
    },
    'September': {
        'week1-2': '向量数据库实战:Qdrant部署与优化',
        'week3-4': 'RAG评估:RAGAS框架使用与指标设计',
    },
    'October': {
        'week1-2': 'LangGraph入门:构建多步骤Agent',
        'week3-4': 'LangGraph进阶:人机协作(Human-in-the-loop)',
    },
    'November': {
        'week1-2': 'Agent可观测性:LangSmith深入使用',
        'week3-4': 'DSPy入门:声明式AI编程',
    },
    'December': {
        'week1-2': '综合项目:构建生产级RAG系统',
        'week3-4': '综合项目:构建多Agent协作系统',
    },
}

def print_roadmap():
    """打印学习路线图"""
    for month, weeks in AI_TOOLCHAIN_ROADMAP_2026_H2.items():
        print(f"\n【{month}】")
        for week, topic in weeks.items():
            print(f"  {week}: {topic}")

print_roadmap()

避坑指南

坑1:过度依赖LangChain的抽象。出问题时会很难debug。

建议:理解底层原理。必要时直接使用原生API。

坑2:向量数据库选了Pinecone,后来发现成本太高。

建议:从一开始就考虑退出策略。用抽象层隔离。

坑3:Agent框架选了一堆,最后都没用好。

建议:聚焦一个框架深度使用,而不是浅尝所有框架。

AI工具链的投资,本质是投资学习时间和试错成本。

选择相对稳定的技术栈,深入使用,比盲目追新更有价值。


本文为"钟哩哩"AI工具链系列的选型指南。下半年将推出各工具的生产级实战教程。

资料说明

本文中的协议、版本、性能、成本和行业趋势应以可核验的一手资料为准。未标注统计口径的比例、时间表和预测仅作工程讨论,不应视为行业事实。可参考 0731 资料来源索引,并在发布前将具体来源贴到对应断言之后。