![]()
作者 | Abhijit Ubale
译者 | 张卫滨
引 言
企业 AI 团队长期面临着一个难题,那就是大多数检索增强生成 (RAG) 系统要么擅长结构化的数据查询,要么擅长文档检索,但当两者需要同时使用时就会无能为力。比如财务分析师提出“为什么欧洲业务表现不佳?”这类问题时,既需要 SQL 数据库中的结构化数据 (营收、利润率、员工数量),也需要非结构化文档 (市场报告、竞争分析、监管文件)。现有 RAG 系统往往会返回缺少监管上下文的营收数据,或给出缺乏量化校验的市场报告,最后仍需分析师手工补齐。当前 RAG 方法把这些模式当成彼此独立的问题,迫使工程师要么构建定制的编排层,要么接受不完整的答案。
本文将探讨如何通过分层多智能体编排解决这一“模态鸿沟(modality gap)”问题,并以 Protocol-H 作为参考实现来说明这些概念如何落地。文中讨论的模式,也就是带有自主纠错能力的 supervisor-worker 拓扑,建立在 LangGraph/LangChain 的 agentic 模式之上,类似 xAI 和 Databricks 等团队采用的方法。配套的开源 代码 展示了这些模式如何在 Docker/K8s 环境下实现企业级部署;读者也可在自己偏好的框架中复用同样的架构原则。
本文中的架构基于参考实现和面向生产环境的企业数据集实验。为了聚焦架构模式而非某个特定系统的具体实现,一部分部署细节做了泛化处理。
模态鸿沟问题:
为什么传统 RAG 无能为力
传统 RAG 系统通常是线性的流水线:向量化用户问题、检索文档、交给 LLM、生成答案。它在文档中心型的问题上表现尚可,但在企业多模态数据环境中就无能为力了。
以客户流失分析为例:“哪些客户群体流失率最高?结合工单看常见原因是什么?”这个问题执行如下步骤:
结构化推理 (SQL):连接客户、交易和流失表,计算群体的流失率。
语义推理 (向量检索):检索与流失语义相关的支持工单。
跨模态汇总:将 SQL 结果与文档洞察进行关联,识别因果关系。
大多数 RAG 系统会尝试“一次性完成”:
查询 → 向量检索 + SQL 查询 → LLM → 答案
但是,结果往往是不完整甚至幻觉化的答案,原因包括:如果预先固定检索路径,开发者必须首先决定查询哪些 SQL 表、检索哪些文档,这常常会漏掉关键的数据;上下文窗口有限时,即使检索到了相关的结果,也可能无法在单次 LLM 推理中实现完整的汇总;初始 SQL 可能会找到高流失群体,却遗漏关键工单;缺乏重试机制 (比如,迭代修正) 时,系统会直接基于不完整的信息作答。尤其当结构化与非结构化信号冲突时,LLM 仍会给出“看起来很自信”的答案。
真实影响
在针对三家金融服务场景的内部评估中 (Q4 2025,大约 1500 条多跳查询),约 30% 的案例出现“静默失败”:即答案表面权威,但遗漏了超过 20% 的相关数据点 (比如,绩效分析中缺失监管上下文),且推理路径不透明,不利于审计。
这正是需要分层 Agentic 推理的原因。
分层 Agentic 解决方案:
架构总览
Protocol-H 引入了受组织层级与人类问题求解方式启发的 supervisor-worker 拓扑结构:
就像管理者会先把专业分析分派给数据分析师 (SQL) 和研究员 (文档) 再汇总结论一样,supervisor 负责拆解问题,worker 负责执行各自模态的任务。
![]()
图 1:Protocol-H 架构。supervisor 将查询路由到专用 SQL/ 向量 worker,并借助 reflective retry 进行纠错,其设计灵感来自组织层级 (来源:Protocol-H 仓库)。
这里的核心在于基于编排进行专业化:每个 worker 专注自身的模态 (SQL 或语义检索),supervisor 负责管理推理流并处理复杂的多跳(multi-hop)场景。
组件详解
Supervisor 智能体:元认知编排器
Supervisor 是系统的推理中枢。它不直接执行查询,而是扮演策略的指挥者。
核心职责:
查询分析:判断问题需要 SQL、语义检索,还是两者都需要。
任务分解:把复杂问题拆成原子步骤 (例如“先找欧洲客户,再取其工单,再与流失数据关联”)。
Worker 路由:基于任务与当前状态决定下一步由哪个 worker 执行。
结果综合:将各 worker 输出整合成连贯的最终答案。
错误管理:检测失败并触发 reflective retry。
实现模式:
return {"next_step": decision.next_worker, ...}SQL Worker:Schema 感知查询引擎
SQL Worker 专注于确定性、结构化推理。
关键特性:
Schema 自省
SQL worker 会通过数据库元数据 API(比如,INFORMATION_SCHEMA) 自动发现表与列。关系识别会通过两种机制来实现:一是元数据中的显式外键约束 (作为权威依据);二是在缺少外键时,基于列命名规范的 LLM 启发式推断 (比如,跨表匹配 customer_id)。
为降低推断关系带来的正确性风险,系统使用了多层防护:首先,实现置信度评分,基于字符串相似度与命名约定强度打分;低置信度的推断 (相似度<0.8) 不会自动使用,而是要求显式确认。其次,由 supervisor 仲裁:推断关系以“带置信度的候选建议”而非硬约束形式提交,需要 supervisor 逐条批准后才可生成查询。再次,做运行时验证:使用推断 join 的查询会先以行数受限的形式执行;如果结果异常 (比如,空结果、笛卡尔积或类型不匹配),会触发 reflective retry 并提醒 supervisor 重审 join 的有效性。最后是显式外键优先:一旦元数据存在显式外键,相关表将完全跳过启发式推断阶段。
查询校验
生成的 SQL 在执行前会先基于 schema 进行校验。
方言优化
为生成特定数据库方言的 SQL(比如,Snowflake、Redshift、BigQuery),系统会把目标方言与 schema 上下文注入 LLM 提示词,并在执行前进行语法校验。复杂的方言特性 (如 Snowflake 的 QUALIFY、BigQuery 的 STRUCT) 是该方法的已知限制。reflective retry 能处理失败,但无法保证首轮就完全正确。对于严重依赖方言或合规敏感场景 (例如,要求精确 QUALIFY 语义的监管财报、对 STRUCT 校验严格的医疗数据),团队可优先采用 connector 级模板或查询构建器 (SQLAlchemy、dbt 等),由 Protocol-H 编排已验证的查询片段,而非从零生成 SQL。
工作流:
![]()
图 2:工作流
安全机制:
在 SQL 注入防护方面,系统通过参数化查询 API(比如,cursor.execute(query, params)) 执行 SQL,而不是字符串拼接,确保用户输入不会被当作可执行 SQL。行级访问控制方面,worker 使用已认证用户的凭据和会话上下文访问数据库,把权限控制交给数据库原生 RBAC,而不是在应用层重复实现。为防止出现失控的查询,每次执行都带有可配置的超时时间 (默认 30 秒);超时后会取消查询并通知 supervisor 缩小范围重试或返回部分结果。
为保护内存,会限制结果的大小。查询结果在进入 LLM 上下文前会按可配置行数 / 字节上限截断,避免超大负载耗尽内存或超过 token 限制。
Vector Worker:语义检索智能体
vector worker 负责面向文档的语义推理。
关键特性:
语义检索通过查询向量化、检索向量索引并返回相关文档来实现。
混合检索将 BM25 关键词匹配与稠密向量余弦相似度结合,并通过 RRF(Reciprocal Rank Fusion)融合排序结果。该方案在精确性 (精确词命中,比如,表名或产品码) 与召回 (概念相关的内容) 之间取得了平衡,优于单一的方法。
相关性过滤通过阈值抑制伪匹配。
摘要步骤用于提取检索文档中的关键信息。
关键挑战:
当不存在相关文档时会出现冷启动的问题,worker 不会臆造结果,而是向 supervisor 返回显式的 null 信号,触发回退到 SQL 形式或向用户发起澄清。对于语义过宽、可能产生多种冲突解释的查询,worker 会将其标记为歧义,并把 Top-N 结果及其相关性分数交给 supervisor 仲裁,而非盲目合并。如果时效性非常重要 (时间感知),可在相关分数中加入时间衰减因子,使近期报告、文件或工单优先。本文报告的 EntQA 测试未启用该能力;基准结果基于无时间加权的标准向量检索。
Reflective Retry 机制:自主的错误恢复
这正是 Protocol-H 与标准智能体系统的根本差异。当 worker 遇到错误时,系统不会把错误“包装成答案”继续传播,而是会进入 reflective retry 模式。
错误流
![]()
图 3:Reflective Retry 节点——Protocol-H 中的自主错误恢复流程
示例:SQL 语法错误恢复
return attempt_alternative_approach(correction)与标准 RAG 相比,这套机制使幻觉率下降约 60%(7.1% 对 28.5%,见表 1)。但这并非 retry 机制单独的贡献,而是 Protocol-H 整体架构 (supervisor-worker 拓扑、schema 感知查询生成和 reflective retry) 协同作用的结果。通过这种集成设计,错误会在传播到最终答案生成前被捕获并修正。
理解 Protocol-H“为什么这样设计”只是第一步。上述 supervisor-worker 拓扑和 reflective retry 机制只有在确保同等健壮性的时候,才能实现其收益。接下来将展开介绍关键架构决策、状态管理、数据库抽象和 worker 的设计,说明如何把概念框架落成可用于生产环境的系统。
实现与集成:架构决策
使用 LangGraph 进行状态管理
Protocol-H 使用 LangGraph 的 StateGraph 进行确定性工作流编排:
error_message: Optional[str] # Error context for debuggingStateGraph 保证的是图级别的确定性执行:在相同输入下,控制流图 (访问哪些节点、按什么顺序访问) 会保持一致 (路由决策通过 temperature=0 约束)。确定性的部分包括:节点访问的顺序、状态迁移、重试触发逻辑,以及何时调用哪个 worker。非确定性的部分包括:worker 生成的具体文本 (SQL、文档摘要、推理解释),这些内容即使输入相同也可能因 LLM 采样而产生变化。也就是说,编排逻辑与状态迁移可完全复现并可审计;worker 输出在结构上可复现,但不保证逐字一致性。
StateGraph 具备良好可审计性,可完整追踪决策与数据流;同时通过重试计数器与超时机制提升安全性,避免循环失控。
云中立的数据库适配器
通过 Adapter 模式,Protocol-H 对数据库差异做了抽象:
pass这种设计使团队可以在不修改编排逻辑的前提下替换数据库后端,这对异构基础设施企业非常重要。在实践中,各个 connector 会在内部处理方言差异 (例如,Snowflake 的大写标识符、Redshift 的 pg_catalog 元数据、BigQuery 的嵌套 STRUCT 类型),从而让 supervisor 和 worker 始终面向统一的 QueryResult 接口。但它仍有一定的局限性:高度依赖方言的特性 (比如,Snowflake 的 QUALIFY、BigQuery 的 ARRAY_AGG、Redshift 的 DISTKEY hint) 通常需要 connector 级定制,无法实现自动抽象。团队在新数据库后端接入 Protocol-H 时,应先审计这些边界场景再假定可完全地移植。
专用 Worker 智能体
每个 worker 都运行自己的 ReAct 循环 (推理与行动):
}基准测试结果
本次评估比较了以下方法。
Protocol-H 在 EntQA 基准上进行评估。该基准包含 200 道企业问题,需要同时在 SQL 与文档数据上进行多跳推理。
Protocol-H:即本文描述的分层 supervisor-worker 架构,带有 reflective retry 功能。
同时,评估了扁平化的智能体,也就是,单个通用 LLM 智能体可以访问 SQL 和向量检索工具,但不具备分层编排和专用 worker。这代表了最常见的“把所有工具都交给 LLM”的方案。
最后评估的是标准 RAG,这是一个传统的“先检索后生成”流程 (向量化查询→检索文档→交给 LLM→生成答案),不具备 agentic 推理和 SQL 能力。
性能对比
![]()
表 1:性能对比
“推理步数”指系统在生成最终答案前触发的独立工具调用次数 (SQL 查询或向量检索)。数值越高,通常表示多跳推理更充分;数值越低,往往表示系统尝试了更少的轮次就尝试给出答案,在该基准中这会与更高的幻觉率密切相关。
基准方法论
EntQA 是 Protocol-H 团队内部构建的基准,用于评估异构企业数据上的多跳推理能力。它目前并不是公开的基准,但为了保证可复现性,评估脚本与匿名化问题集已放在 Protocol-H 仓库) 中。
该数据集包含 200 道企业问题,分为三个复杂度层级。Tier 1(简单,n=60):单模态问题,一次 SQL 或一次向量检索即可解决;Tier 2(中等,n=80):需要一次 SQL 和一次向量检索并做基础汇总;Tier 3(复杂,n=60):需要跨两种模态进行 3 步及以上的多跳推理,并进行跨模态汇总 (例如,“哪些客户分群流失率最高,他们的工单揭示了什么根本原因?”)。
本文中所有的准确率数据均针对 Tier 3 的问题,即最难、也最贴近企业真实需求的子集。
测试配置:
LLM:GPT-4o(三套系统统一使用,以隔离编排差异的影响)
Embedding 模型:text-embedding-3-large(OpenAI)
向量库:Pinecone(standard tier)
SQL 后端:Snowflake Enterprise
硬件:Docker 容器,4 vCPU / 16GB RAM
评估方式:由 GPT-4o 对照标准答案打分,并对 20% 响应做人类抽检。局限:GPT-4o 既是三套系统的推理引擎又是评估器,可能引入循环偏差;基于人类抽检校验评估可靠性。
可复现性:完整评估脚本、提示词和标准答案已在仓库提供。说明:EntQA 所用的企业数据源没有公开,复现实验需使用具有类似 schema 复杂度的 SQL/ 向量数据集。
关键发现
准确率提升
与扁平化的智能体相比,分层路由在多跳准确率上相对提升了 34.6%(84.5% vs 62.8%);与标准 RAG 相比相对提升 87.0%(84.5% vs 45.2%)。换算为绝对值,分别提升 21.7 和 39.3 个百分点。
延迟方面的权衡
Protocol-H 的 p95 延迟为 2.1 秒,相比标准 RAG(0.8 秒) 慢约 1.3 秒,相比扁平化的智能体 (1.4 秒) 慢约 0.7 秒,主要是由更高的推理步数 (3.2 vs 1.0 vs 1.8) 导致的。这是多跳推理的直接成本。作为参照,同步仪表盘查询通常可接受 2-3 秒的响应,因此 Protocol-H 对多数分析型负载仍在可接受的范围之内。
对于延迟敏感的场景 (比如,面向客户的实时应用),建议采用基于 webhook 的异步模式。以 2.1 秒延迟换来 21.7% 的准确率提升,在“决策质量优先于速度”的企业分析场景中这通常是更优的权衡。
健壮性
在高错误率查询 (有意制造的 schema 不匹配) 方面,Protocol-H 的正确恢复率为 89%,而扁平化的智能体仅为 12%。
生产环境的部署考量
安全与合规性
企业部署不仅要准确率,还要确保安全与可治理。Protocol-H 在这方面实现了:
确定性的控制流
StateGraph 保证执行路径可复现,这对合规审计至关重要。
Schema 感知
初始化时,每个 worker 都会读取数据库元数据 (如 INFORMATION_SCHEMA),构建在已认证用户 RBAC 权限范围内可访问表 / 列的运行时映射。worker 只会针对可证实有权限的数据生成查询,从执行前就阻断未授权的访问。
策略控制
团队可在 schema_policy.yaml 中定义额外的业务规则 (比如,exclude_tables:['pii_raw']),在数据库权限之外再加一层数据边界控制,适用于多租户部署或监管分区场景。
错误诊断
系统会返回完整的上下文解释“为何会失败”,而不是直接给出幻觉化的答案。
限流
限流可防止智能体失控并保护基础设施。
结果校验
在结果返回给 supervisor 前,worker 输出会经过可配置的校验层,对如下情况进行检查:数值异常 (如营收超阈值)、NULL 主导结果 (如超过 80% 为 NULL,提示 schema 不匹配)、按上下文不应为空却为空的结果集,以及预期类型与返回类型不一致。校验失败时会触发 Reflective Retry Node,而不是把可疑数据继续传递到最终答案。
部署模式
同步 API
print(result["final_answer"])基于 Webhook 的异步方式
})Docker 容器化
CMD ["python", "main.py"]常见的挑战与解决方案:
Schema 漂移
企业数据库会持续演进,比如,列重命名、表废弃、引入新的业务逻辑。
Protocol-H 通过两种互补机制应对 schema 的漂移。第一是周期性的 schema 校验,应用运行时的轻量级后台线程会按照可配置的周期 (默认 24 小时,或在出现“unknown column”错误时触发) 重新抓取INFORMATION_SCHEMA元数据,并更新各 worker 内存中的 schema 映射。高可用部署中,也可改用 Kubernetes CronJob 或外部调度器实现,避免实例级轮询。
第二是基于替代建议的优雅错误处理。worker 在查询时遇到“unknown column”不会静默失败,而会触发恢复流程,也就是,先对当前 schema 做模糊匹配 (例如,识别profit_margin已改名为net_margin),通过字符串相似度打分;如果命中高置信的候选者 (>0.8),会把建议列名连同原始错误上下文 (如“Column profit_margin not found - did you mean net_margin?”) 提交给 supervisor。随后由 supervisor 决定按建议重试、请求澄清还是将问题升级给用户;如果没有命中候选者,则附带完整诊断信息通知 supervisor 改写查询或告知用户存在数据不匹配的问题。
这种做法避免了 schema 漂移变成“静默失败”。每一次漂移相关的错误都会产出可执行的信号,而不是幻觉化的答案。
复杂 Join 下的幻觉问题
当查询涉及 3 张及以上表的连接时,LLM 有时会生成错误的 join 条件。
reflective retry 机制可以通过捕获失败查询并建议替代 join 策略,或将查询拆分成更小的步骤来解决该问题。
多跳场景下的延迟
每增加一步推理都会引入增量延迟。在需要 3-5 步串行推理的多跳场景中,总查询延迟可能超过同步交互界面的容忍阈值。
解决方式包括,对常见子查询进行结果缓存,在步骤相互独立时进行并行执行。
Protocol-H 通过 LangGraph 的 Send API 支持该模式,同时保持确定性的图结构。这里的“确定性”指编排逻辑 (哪些节点执行、执行顺序) 可复现,而非必须串行执行。如果一个查询同时需要 SQL 聚合和向量检索且两者无依赖,supervisor 会并行分派给两个 worker,再在确定性的同步点汇合结果后做最终汇总。也就是说,控制流图仍完全可复现,只在 worker 层执行并行化。(见图 1 中的并行 worker 路径)。
还应缓存 schema 信息以避免重复自省:schema 元数据按可配置 TTL(默认 24 小时) 缓存,并与 Schema Drift 章节中的校验周期保持一致,确保缓存与漂移检测同步。缓存失效与刷新节奏与后台 schema 校验一致,从而在性能 (减少会话内重复INFORMATION_SCHEMA查询) 与新鲜度 (保证 worker 不使用超过 TTL 窗口的旧 schema) 之间取得平衡。
成本管理
每次智能体调用都要触发 LLM,规模化后成本会明显累积。
为了控制成本,可以采用更快更便宜的模型做路由决策 (比如,supervisor 使用 GPT-4o mini)。这是面向未来成本优化的通用架构建议。需要强调的是,本文基准结果 (84.5% 准确率、7.1% 幻觉率) 均来自统一使用 GPT-4o 的 supervisor 和 worker。我们尚未正式评估混合模型配置下的成本 / 准确率权衡;采用该模式的团队应先结合自身的准确率门槛完成验证,再进行规模化部署。另外,可以对相同查询缓存推理结果,并批处理相似查询以提升效率。
经验总结
专业化优于泛化
专用的 SQL 和 Vector worker 在各自模态上持续优于单一的通用智能体:SQL worker 擅长结构化推理,vector worker 擅长语义检索。这种专业化会在端到端上形成复利化的收益。
错误恢复至关重要
在内部测试中 (n≈1500,覆盖三套金融服务部署,Q4 2025),对幻觉响应的错误分析显示:大约 60% 并非源于 LLM 基础推理能力不足,而是来自未处理执行错误、SQL 失败、向量检索为空或 schema 不匹配,并被静默传播到最终答案阶段。这意味着恢复机制的价值极高:仅通过修复错误处理,就能覆盖大部分幻觉问题,而不必升级模型。
Schema 感知是关键
理解可用数据边界 (schema 与访问控制) 的 worker,比只处理原始数据的 worker 能做出更好的决策。
确定性带来信任
企业往往把“可复现执行”看得比“最大化准确率”更重要,因此确定性工作流编排是生产级智能体系统的关键设计要求。StateGraph 的图级确定性 (相同输入下节点访问顺序与状态迁移一致) 提供了这种可复现性。具体来说,Protocol-H 会为每次决策生成可追踪的审计日志:调用了哪些 worker、顺序如何、输入是什么。对于受 SOC 2、GDPR 或内部模型治理约束的企业团队,这种可复现能力是刚需,它能把答案追溯到具体数据来源和推理步骤,使合规审计相较非确定性系统更具可操作性。
多模态推理需要编排
没有单一的智能体能够同时在 SQL 与语义数据上都推理得足够好,分层委派是必需的。
未来展望
本文框架是当前企业级 agentic RAG 实践的一个阶段性切片。后续重点研究方向包括:
自适应路由
研究目标是学习“不同查询类型最有效的 worker 组合”。当前主要在探索两条互补的路径。第一是查询日志分析:挖掘历史执行轨迹,找出与高准确性、低重试相关的 supervisor 路由决策,再将这些模式反馈到未来路由 (例如,“财务的阶段性问题通常先需要 SQL,再执行向量检索以补全上下文”)。第二是轻量 RL 优化:把 supervisor 路由决策建模为可优化的策略,以“答案准确率 + 幻觉率 + 查询延迟”的组合作为奖励信号,让系统在无需人工调参下逐步学习查询类型的特定路由。两者仍处于早期研究阶段;考虑到实现的复杂度,日志分析是更接近阶段性可落地的路径。
语义化缓存
缓存向量检索结果,减少重复 embedding 计算。
跨模态融合
探索更高级的 SQL 证据与语义证据融合方法。
可解释性
为多跳的推理路径生成人类可读的阐述形式,这可能是企业采用的最关键前沿领域。当前 Protocol-H 能输出完整的执行轨迹 (调用了哪些 worker、顺序如何、输入输出是什么),但这仍是技术日志,不是业务可读的阐述形式。下一步是把轨迹转成自然语言推理摘要,例如:“为回答你关于欧洲业务表现不佳的问题,我先按地区查询营收与利润率数据 (SQL),再检索欧盟最新监管文件和市场报告 (向量检索),并发现德国利润率下滑与 2024 年 Q3 三份监管文档提到的新 VAT 合规成本相关 ”。这种透明度对分析师信任、合规性审计和模型治理都至关重要。欧盟 AI 法案对高风险 AI 系统要求保留系统运行日志 (第 12 条),其中就包括决策的可追溯性。
结 论
企业 RAG 中的“模态鸿沟”(结构化与非结构化数据协同) 本质上不是单纯的技术能力不足,而是编排方面的挑战。Protocol-H 证明,具备自主错误恢复的分层多智能体系统可以达到企业级准确性、安全性和可审计性。
通过职责分离 (supervisor 负责编排、worker 负责专长执行) 并实现 reflective retry 机制,团队可以构建在异构企业数据上稳定推理的 agentic 系统,同时满足确定性与合规要求。
对构建企业级 agentic 系统的团队而言,核心架构原则很简单:先编排再委派,先专业化再泛化,先恢复再传播错误。带自主纠错的分层多智能体设计,能够在异构数据模态上实现可靠推理,弥合理论能力与生产可用之间的鸿沟。参考实现 Protocol-H 已经在实践中验证了这些原则,也为团队按自身基础设施和合规需求做二次落地提供了基础。
代码示例:本文所有代码片段均来自 Protocol-H 框架的原始 Python 实现。
参考资料:
LangChain v0.3.x
LangGraph v0.2.x
OpenAI Python SDK v1.x
GPT-4o (gpt-4o-2024-08-06) — 用于 Worker 推理
GPT-4o mini (gpt-4o-mini-2024-07-18) — 推荐用于 Supervisor 路由
text-embedding-3-large — 用于向量 embedding
Pinecone v3.x
Snowflake Connector for Python v3.x—Python Connector
注意:版本号对应基准测试时所用版本 (Q4 2025)。
开源仓库可以参见此处。
Building Hierarchical Agentic RAG Systems: Multi-Modal Reasoning with Autonomous Error Recovery (https://www.infoq.com/articles/building-hierarchical-agentic-rag-systems/)
声明:本文由 InfoQ 翻译,未经许可禁止转载。
![]()
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.