拆解信源归因引擎:如何把 12 家大模型的引用源统一解析、归并、量化
信源归因引擎,简单说就是一套把 12 家大模型回答里的引用链接,经过"解析 → 归并 → 量化"三步,变成"每个来源平台在你的 AI 回答里占多少权重"这张表的系统。它解决的是一个工程问题:大模型返回的引用格式彼此不兼容,不归一就什么都算不出来。
一、整体架构:四层管线
采集层 → 解析层 → 归并层 → 量化层
12家API/UI citations字段适配 URL→平台/域名 占比/权重/缺口
(探针) (各家格式不统一) (短链/重定向/二级域名) (按企业品类)
- 采集层:用零品牌名的题集逐平台发问,开联网搜索,拿回答 + 引用。
- 解析层:把每家返回的 `citations` / `source_links` / `web_references` 统一抽成 URL 列表。
- 归并层:把 URL 归到来源平台、做域名归一、展开短链与重定向、去重。
- 量化层:按平台 / 域名算引用占比,定位企业自身与竞品的信源缺口。
二、真实难点(都是踩过的坑)
1. citations 字段不统一:Perplexity 是 `message.citations[].url`;ChatGPT 开浏览是 `message.source_links[].url`;文心、豆包各自有 `web_references` 之类私有字段。12 家要逐一适配。
2. 短链与重定向:`dwz.cn`、`t.cn` 这类短链不展开,归并就会漏判平台。
3. 二级域名:`baike.baidu.com` 和 `baijiahao.baidu.com` 都要归到"百度系",不能当独立站。
4. 重复计数:同一 URL 在不同题、不同引擎下会被重复引用,计数口径要先定清楚(我们是"按引用出现次数计",方便看杠杆)。
5. 宁空不假:某家没返回引用源,就标空,绝不用"兜底分"填——一次为了好看填了 0.5,整张占比表失真,误导后续优化方向。
三、核心代码(可运行片段)
from urllib.parse import urlparse
from collections import Counter
1) 各家 citations 字段不统一 → 统一抽 URL
def extract_citations(platform, resp):
msg = resp["choices"][0]["message"]
if platform == "perplexity":
return [c["url"] for c in msg.get("citations", [])]
if platform == "chatgpt":
return [s["url"] for s in msg.get("source_links", [])]
if platform in ("doubao", "wenxin"): # 国产:私有字段
return [c.get("url") or c.get("link")
for c in msg.get("web_references", [])]
# ……其余 8 家逐一适配
return []
2) URL → 来源平台 归并(含二级域名归一)
PLATFORM_MAP = {
"zhihu.com": "知乎", "baijiahao.baidu.com": "百家号",
"baike.baidu.com": "百度系", "toutiao.com": "今日头条",
"douyin.com": "抖音", "mp.weixin.qq.com": "微信公众号",
"csdn.net": "CSDN", "juejin.cn": "掘金",
}
def url_to_platform(url):
host = urlparse(url).netloc.lower()
for domain, name in PLATFORM_MAP.items():
if domain in host:
return name
return "其他/独立站"
3) 量化:按来源平台算引用占比
def compute_weights(url_list):
counter = Counter(url_to_platform(u) for u in url_list if u)
total = sum(counter.values()) or 1
return {k: round(v / total * 100, 1) for k, v in counter.most_common()}
用法
urls = extract_citations("doubao", resp)
print(compute_weights(urls))
=> {'今日头条': 34.2, '抖音': 13.5, '知乎': 21.8, '其他/独立站': 30.5}
四、用外部基准对照,但按自身品类实测
外部研究能帮我们校准"行业大致长什么样"。例如腾讯云开发者社区 2026 年 7–8 月实测显示豆包约 36% 引用来自字节系(抖音+头条),文心约 22% 来自百度系。我们引擎会把这些作为对照基线打印在报告里,但真正的权重一定用企业自己的题集跑出来——因为换一个品类,比例可能天差地别。
这也是我们和"套通用比例"的服务最根本的区别:归因必须贴近企业真实业务场景,通用比例只是地图,不是领土。
五、工程复盘
信源归因看起来是"数链接",实则是对 12 家大模型内容管线的逆向还原。最难的不在算法,而在字段适配的体力活和对"宁空不假"的纪律坚守。把这张表做扎实,后面的五维评分、分平台策略、定期复测,才都有据可依。
← 返回睿贤GEO笔记