专栏名称: 阿里开发者
阿里巴巴官方技术号,关于阿里的技术创新均将呈现于此
目录
相关文章推荐
51好读  ›  专栏  ›  阿里开发者

大模型输入输出语义分析与评估

阿里开发者  · 公众号  · 科技公司  · 2025-03-24 18:00

正文

阿里妹导读


本文主要描述如何通过语义富化和搜索技术,帮助用户更好地理解大模型的输入输出,从而更有效地构建大模型应用。

大模型内容评估的挑战

当我们开发一段代码,可以精确地用测试用例来测试这段代码,固定的输入对应固定的输出,测试所有的输入就可以覆盖所有的代码逻辑。然而大模型输入输出是自然语言 ,自然就会接收千奇百怪的输入 。例如:

  • 产品研发时,需要对大模型的输入输出做调试,确定任务拆解能力是否符合预期;

  • 业务上线后,需要评估大模型面向真实场景的质量,是否解决实际问题;

  • 日常经营中,需要对所有输入输出做审计、以保持合规性。

结合以上需求,我们需要对大模型应用的输入与输出具备评判的能力,对内容进行检索、分析与评估,确保应用整体行为符合预期。

语义分析:从多角度理解大模型输入输出

为了更好的处理大模型输入输出日志,从而更好的理解用户需求、评估大模型的表现。这就要求日志管理工具具备面向自然语言的搜索、处理、分析的能力,包括:

  • 语义富化:多角度提炼结构化信息,包括用户意图、主题、情绪等内容;

  • 向量检索:一站式向量检索能力,集成 embedidng/vector_index 能力,开箱即用。除了关键字、子串匹配外,还能够根据意图来检索内容。

  • 混合检索:同时使用关键字精确匹配和向量近似匹配,融合多字段检索需求。

  • 聚类:同更高视角对自然语言进行聚类分析,掌握热点和离群点。


(1)语义富化

在 RAG 领域,要把文件转化为结构化 Markdown 信息,再对 Markdown 文件切分 chunk 构建向量索引。在 RAG 场景中,传统文档处理流程存在信息损耗问题。需要通过多模态特征提取,构建多维度语义特征空间,从不同的角度来观察 LLM 输入输出,这些角度包括:

  • 用户意图:用户在会话中所展示出来的意图,例如是翻译、技术咨询、法律咨询、查询与检索;

  • 所属主题:会话所属主题,例如教育、云计算、法律;

  • 总结:原始的会话往往叠加复杂的上下文,语义索引用一句话描述会话的信息,用户搜索总结可以快速命中记录;

  • 情绪:用户在会话中所展示的情绪,是正面、负面、中性;

  • 关键词:抽取会话中的关键词;

  • 问题:针对原始会话提出几个问题,而原始会话是问题的答案。当用户使用问题去召回历史会话时,可以直接通过该字段召回;

  • 实体抽取:抽取出现的实体,例如国家、地名、人名等。

借助于 LLM 评估、向量索引,给 Prompt/Response 提取出结构化信息,并且以可视化的形式展示分析结果。基于评估结果,从而实现对用户意图、情绪、关注点、常见问题的理解,了解 LLM 响应质量,方便下一次训练积习难改调优,对输入、输出进行合规审计,避免法律风险。

利用日志服务 SLS 的语义处理能力,在数据加工过程中提供开放式接口的方案,对接百炼托管模型 API 或者自研 LLM API,从而实现基于 LLM 进行语义富化。

LLM 评估架构包括以下几个关键组件:

  • 通用 HTTP 函数:数据加工 SPL 语法提供了通用的 HTTP 调用函数,传入URL、 Body、Header等信息,调用外部服务来处理数据,获取处理结果。

  • 调用 Qwen 模型:在通用 HTTP 函数之上,封装出 Qwen 的 AIGC 函数,传入 Qwen 地址,百炼 access-key,system prompt,user prompt 来调用百炼的 Qwen 模型。

  • 系统/自定义 Prompt 库:SLS 提供用于评估功能的 Evaluation System Prompt 模板库,选择需要的评估功能所对应的 Evaluation System Prompt,并把日志中的 prompt/response 作为普通文本传入 User Prompt。也可以传入自己的 Prompt,自定义处理逻辑。

通过可自定义 Prompt,自定义 endpoint,自定义 model 来实现独特的业务需求。以下是 SLS内置的语义富化语句:

  *  | extend "__tag__:__sls_qwen_user_tpl__" = replace(replace(replace(replace(replace(replace(replace(replace("__tag__:__sls_qwen_user_tpl__", '', "output.value"), '\', '\\'), '"', '\"'), chr(8), '\b'), chr(12), '\f'), chr(10), '\n'), chr(13), '\r'), chr(9), '\t')  | extend "__tag__:__sls_qwen_sys_tpl__" = replace(replace(replace(replace(replace(replace(replace("__tag__:__sls_qwen_sys_tpl__", '\', '\\'), '"', '\"'), chr(8), '\b'), chr(12), '\f'), chr(10), '\n'), chr(13), '\r'), chr(9), '\t')  | extend request_body = replace(replace("__tag__:__sls_qwen_body_tpl__", '', "__tag__:__sls_qwen_sys_tpl__"), '', "__tag__:__sls_qwen_user_tpl__")  | http-call -method='post'    -headers='{"Authorization": "Bearer xxxxxx", "Content-Type": "application/json", "Host": "dashscope.aliyuncs.com", "User-Agent":"sls-etl-test"}'    -timeout_millis=60000    -body='request_body'    'http://dashscope.aliyuncs.com/api/v1/services/aigc/text-generation/generation' as status, response_body   | extend tmp_content = json_extract_scalar(response_body, '$.output.choices.0.message.content')    | extend output_enrich = regexp_replace(regexp_replace(tmp_content, '^([^{]|\s)+{', '{'), '}([^}]|\s)+$', '}')   | project-away "__tag__:__sls_qwen_sys_tpl__", "__tag__:__sls_qwen_user_tpl__", "__tag__:__sls_qwen_body_tpl__", trimed_input, tmp_content, request_body , response_body
语义评估结果:


(2)向量检索







请到「今天看啥」查看全文