最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
本体论语义建设新思路:另类RAG来解决检索问题
时间:2026-07-04 08:46:53 编辑:袖梨 来源:一聚教程网
用结构化聚合图SAG解决本体论语义建设难题,实现多跳问答精准检索。核心内容:1. SAG将RAG思想应用于本体论,建立轻量索引2. 通过事件、实体、关系三重结构弥补向量检索不足3. 结合MySQL精确查询与ES向量搜索,优化多跳问答性能
有没有想过一个问题,本体论有一半的篇幅在讨论如何定义标准数据和数据间的关系,之所以要这么做,就是需要为所有的分析和Action提供精准的上下文。所以,这实质上是一个高纬度的RAG问题。
chunk → event、event ↔ entities、chunk → entities),用"双存储协同 + 多跳扩展"弥补单靠向量检索无法覆盖的多跳场景。chunks → processor(LLM调用) → filter(过滤) → parser(解析) → saver(持久化)
stmt = select(EventEntity.event_id).where(EventEntity.entity_id.in_(entity_ids) # 精确 JOIN
).join(SourceEvent...).where(source_config_id.in_(...))
| ES 索引 | 向量来源 | 用途 |
|---|---|---|
event_vectors | 事件标题、title+content 分别 embed | 事件语义召回 |
entity_vectors | entity.name embed | 实体向量召回(NER 命中后找相似实体) |
event_entity_vectors | EventEntity.description embed | 关联关系检索 |
| 步骤 | 职责 | 存储 | 关键参数 |
|---|---|---|---|
| Step1 NER | query → 实体名 | LLM(multi)/ BM25(multi_es) | — |
| Step2 实体召回 | 实体名 → entity_ids | ES entity_vectors | top_k=20, 阈值 0.9 |
| Step3 双通道召回 | 召回初始事件 | MySQL JOIN + ES kNN | k=20(入口窄) |
| Step4 事件详情 | 取 content + 关联 entities | MySQL / ES | — |
| Step5 多跳扩展 | 沿实体图遍历补全桥梁 doc | MySQL JOIN / ES 反查 | max_hops=1(默认) |
| Step6 粗排 | 向量相似度去噪打分 | ES kNN | max_events=100(5倍冗余) |
| Step7 LLM 精选 | 多跳推理选 top_k | LLM | top_k=5/10,不看分数 |
| Step8 chunk 回溯 | event → 原始 chunk | MySQL | chunk_id 去重 |
| hop | gold doc 的 query 语义相关性 | 召回方式 |
|---|---|---|
| hop1(query 含实体) | 高 | Step3 向量直接召回 |
| hop2(中间桥梁) | 极低(主题域不交叉) | 只能靠 Step5 图遍历 |
| hop3-4 | 中-高 | 向量 + 图遍历互补 |
Step3 入口窄(k=20,严苛语义筛选)
↓
Step5 多跳注入(绕过相似度,图可达性注入)
↓
Step6 缓冲池宽(max=100,5倍冗余给注入doc留存活空间)
↓
Step7 LLM 不看分数(候选池内一律平等,靠推理选)
| 方面 | 传统 reranker | SAG Step7 |
|---|---|---|
| 任务 | query-doc 语义匹配度 | doc 对多跳推理链的贡献度 |
| 能力 | 相似度打分 | 理解 "First find X, then find Y" |
| 成本 | 毫秒级 | 秒级(万 token 量级) |
#)定义 chunk 边界。无标题、非 markdown 格式(PDF/Word/HTML)会致命。甚至可以说,SAG的Load就只能处理结构清晰的数据,否则很容易GG。| 阶段 | 每次 input token 量级 |
|---|---|
| 抽取 | 每个 chunk ~500-2000 token + system prompt + few-shot |
| 检索 | NER 较小;rerank 100 候选 × ~200 token = ~20000 token |
为每张表建立一个wiki,详细的描写表的内容、业务含义、适用场景、可能的关联关系等;
这个wiki作为一个chunk,提取其event和entity,入MySQL和ES;
按照cube的标准,定义关联字段、视图等;
使用SAG的检索流程,进行相关表检索;
综合表、wiki、cube定义,生成一个/多个SQL语句,进行查询和聚合,并且生成答案。
用户 query
↓
查询意图分类(LLM)
├── 明细查询 → SAG 检索(召回行)
├── 聚合查询 → CubeSQL(生成 SQL)
└── 混合查询 → SAG 召回 + SQL 聚合
登录查看剩余 70% 内容
相关文章
- Debian中怎么查看反汇编指令 07-04
- Ubuntu SELinux 是如何管理文件访问的 07-04
- debian readdir 编译安装步骤 07-04
- Debian readdir依赖库有哪些 07-04
- debian readdir 更新日志详解 07-04
- debian readdir实例代码解析 07-04