P3 Agent 应用交付报告 — 图谱问答
P3 Agent 应用交付报告 — 图谱问答
阶段三 P3:在 P1 图谱(31,748 实体/54,707 关系)基础上,构建 图谱问答 Agent 并集成进 blockchain.yanghaofeng.xyz 网站。
硬约束不变:raw 只读;挖掘产物只写tools/output/+reports/;融资额取文档原值不追求精确;诚实声明。
一、关键结论(先说人话)
- 图谱问答 Agent 上线:
https://blockchain.yanghaofeng.xyz/ask— 首页导航"问知识库"直达。 - 四类查询全部调通:机构投赛道 / 项目融资 / 人物关联 / 赛道头部项目,答案带图谱证据链。
- Tier 1 纯图谱架构:只依赖 sqlite3(kg.db 18MB),零重依赖——远端 2 核/7.5G 小机装得下,无 faiss/torch。
- 配套完成网站"去素材、上提炼"重建:远端 wiki 2.9G → 50M,全文库 421MB → 2.7MB(原始素材删除,提炼层+挖掘产物上线)。
二、Agent 架构
问题
│ g.resolve(): 实体识别
│ (贪心长匹配 + 已覆盖跨度去重 + 赛道中文别名 + 通用名词黑名单)
▼
图谱检索(kg.db 内存图)
├─ neighbors(): 1-hop 邻域关系(带原文 evidence)
├─ sectors_of(): 2-hop 赛道聚合 → "X 投了哪些赛道"
└─ top_in_projects(): 赛道/链头部项目榜单(L1 LLM 锚定优先)
│
▼
LLM 合成(DeepSeekClient, 复用网站 core/deepseek.py)
└─ 带证据答案(区分事实/推断, 矛盾点明说, 覆盖有限明说)
关键设计决策:
- Tier 1 去向量:图谱问答 80% 价值不需要向量库。实体识别/邻域/赛道/榜单全靠 sqlite3;relations 表 86% 关系带原文 evidence 片段,把"Uniswap 融资"这类细节从纯三元组里救回来。向量语义增强(Tier 2)留待远端内存评估。
- 赛道中文别名:实体存英文白名单名(如
AI+Blockchain),问题常写中文("AI+区块链")——加SECTOR_ALIAS映射补命中。 - L0/L1 分层榜单:L0 底座 chain_classifier 分类过粗(Uniswap/Paradigm 被误标进 AI+Blockchain),按证据来源分层,L1(LLM 从原文语义抽取)锚定的项目优先——避免主流项目霸榜。
- 通用名词黑名单:LLM 抽取时把大量概念塞进"区块链"这类节点,命中只灌垃圾证据——直接跳过。
三、四类查询实测效果
| 类型 | 问题 | 效果 |
|---|---|---|
| 机构 | Coinbase Ventures 主要投了哪些赛道 | 赛道分布:AI+Blockchain(51)/Stablecoin(35)/Infra(21)/Payments(19)/DEX(15)/GameFi(15)/DeFi(15)/RWA(14) |
| 项目 | Uniswap 的融资情况 | 答出 UNI 空投(2020.9 每人≥400枚共1.5亿)、收购 Genie、费用开关,并正确区分"空投≠传统融资" |
| 人物 | Vitalik 关联了哪些项目 | Ethereum/ENS/以太坊,指出中英文重复实体矛盾 |
| 赛道 | AI+区块链赛道有哪些头部项目 | L1 锚定的真 AI 项目:Bluwhale/Conflux/EOS/Worldcoin/Stacks/PlatON/Talus Network/Sapien 等 |
四、部署:集成进 blockchain.yanghaofeng.xyz
[独立微服务 sites/kgask :5012] ← systemd kgask.service(venv gunicorn, 单worker)
│ KgEngine 启动时把 kg.db 加载进内存(~300MB)
▼
[nginx] location /ask { proxy_pass http://127.0.0.1:5012/; }
│ ← 尾斜杠剥离 /ask 前缀(kgask 只认 / 与 /api/ask)
▼
blockchain.yanghaofeng.xyz/ask ← 主站导航 EXTRA_NAV 加"问知识库"
接口:POST /ask/api/ask {question} → {answer, entities, graph_ev, sector_tops, elapsed}。页面答案下折叠展示证据链(图谱关系 + 原文片段),页脚带诚实声明。
五、网站"去素材、上提炼"重建(配套)
问题:远端 wiki 塞满原始素材(2.9G),提炼层(concepts/entities/reports)全加起来才 1.5MB——方向反了。
方案与效果:
| 项 | 重建前 | 重建后 |
|---|---|---|
| 远端 wiki 大小 | 2.9G(raw/articles 2.2G + mirror 643M) | 50M |
| blockchain.db 全文库 | 421MB(12,723 页 Raw) | 2.7MB(265 页提炼层) |
| 原始素材 | articles + mirror 双份 | 删除,本地为权威源 |
| 挖掘产物 | 未上网站 | 11 份报告 + 洞察/公链/月度目录 + tools/output 全部上线 |
工程要点(重建踩的坑):
1. rsync 尾斜杠陷阱:rsync a/b.py dest/ 会把 b.py 丢到 dest 根(丢目录层级),必须用 -R 保留路径——kg_ask.py/config.py 都因此错位过。
2. nginx 同域名多 conf 冲突:.disabled 旧配置 + 独立 conf 抢同一 server_name,按加载顺序旧的 ignored——删掉残留。
3. /ask 剥离前缀:nginx location /ask 原样转发,kgask 没有 /ask 路由 → 404;proxy_pass ...5012/(尾斜杠)才正确。
4. FTS5 外部内容表残留:schema content=wiki_pages 但 wiki_pages 无 content 列,rebuild 报错;cleanup 删 wiki_pages 后 FTS data 残留 52K 行(占 200MB)。修复:重建为纯存储 fts5(title, content) + INSERT SELECT 填充。
5. 主站导航不生效:config.py 错位没同步,主站进程启动早——-R 正确同步 + 重启。
六、诚实声明
- 图谱由 LLM 从个人研究语料抽取,含噪声(实体中英文重复、L0 分类过粗已尽力缓解)。
- 语料覆盖 2020–2026,2023 缺失、2026 仅 1-8 月;趋势反映个人资料库关注分布,不代表市场全貌。
- 答案区分事实(图谱关系)与推断;证据不足时明确说明;矛盾点不强行调和。
- 远端 raw 已删,本地
/home/fangxia/文档/我的区块链wiki/wiki/raw(615M)为完整权威源。
七、交付物清单
| 产物 | 位置 |
|---|---|
| 图谱问答引擎 | 本地 ~/projects/knowledge-platform/core/kg_ask.py |
| 问答微服务 | ~/projects/knowledge-platform/sites/kgask/app.py |
| 问答页面 | ~/projects/knowledge-platform/templates/kgask/index.html |
| systemd 服务 | deploy/kgask.service(远端运行中, :5012) |
| nginx 反代 | deploy/blockchain.yanghaofeng.xyz.conf(/ask → 5012) |
| 同步脚本(排 raw) | scripts/sync_wiki.sh(区块链 wiki 不再传原始素材) |
| 线上入口 | https://blockchain.yanghaofeng.xyz/ask |
八、下一步(可选)
- Tier 2 向量增强:远端内存评估后,加 faiss 语义召回补长尾问法("哪个项目做数据可用性层")。
- 图谱可视化:kg_graph.json / kg_insight.json 上网站做交互式图谱浏览。
- 多轮对话:当前单轮问答,可加对话历史。
- 研报 Agent:基于图谱 + 报告出定制研报。
P3 Agent 应用完成 · 2026-08-11 · 图谱问答上线 blockchain.yanghaofeng.xyz/ask · 网站重建 2.9G→50M