GraphRAG 阅读器如何按章节限制回答
开源阅读器 LORE 将电子书转为知识图谱,仅依据读者当前进度之前的文本回答,并为每句话提供引用。文章介绍章节切分、实体关系提取及开发过程中遇到的问题。
原文暂未完整获取,基于公开信息的快读
开源电子书阅读器 LORE 想解决一个具体问题:忘了小说里的配角是谁,搜索结果却直接剧透结局。作者把电子书转成知识图谱,让问答依据读者当前章节及之前的文本生成,并要求每句话附带引用。节选里最有借鉴价值的,是它如何把阅读进度变成检索边界,以及如何检查引用是否真的支持回答。
目前能确认什么
LORE 支持上传 EPUB 或 PDF,先切分章节和段落,再用 LLM 提取人物、地点、事件及关系,并合并同一实体的不同称呼。图谱存入 Kuzu,段落向量存入 LanceDB;向量由 Ollama 上的 nomic-embed-text 在本地生成,实体提取则需要用户提供 Gemini、Claude 或 OpenAI 的 key。
GraphRAG 将知识图谱与检索增强生成结合。向量搜索负责寻找相关文本,图谱负责沿实体关系补充线索,适合追踪人物在系列作品中的变化。
防剧透的主要措施,是在检索时限制章节范围。
按节选描述,每次向量搜索、图查询和人物资料查询都会应用阅读进度过滤。回答也不是直接拼出来:系统先提取带原文引句的断言,再检查引句是否存在、是否支持断言,最后生成逐句引用的正文。作者还记录了检查结论反复、人物动作关系写反等问题。
我的判断
程序员最值得借鉴的是把「允许回答什么」落实到数据查询层。类似设计可以用于课程进度问答,让后续章节不进入回答上下文。
但引用存在,不代表回答正确。「A 指责 B」写成「B 指责 A」,照样可以挂上真实出处。逐句引用需要配合语义核验,作者遇到的问题已经说明了这一点。
还有两处边界需要更多材料确认:全书预处理时,后文揭示的身份是否会影响前文实体合并;多跳图查询是否始终保留章节约束。系统也会在受限检索无结果时,额外做一次不限章节的搜索来判断答案是否在后文。节选称这一步不调用模型,但「后面有答案」这条提示本身,仍可能透露悬疑线索。