用图数据库做房产尽调Agent:隐藏风险检出率81%

开源项目Khoj用图数据库和Agent做房产尽调,隐藏风险检出率81%且零误报。
Khoj是一个开源房产尽调Agent,核心洞察是风险不在单一记录中,而在开发商、公司、土地、承包商之间的多跳关系里。它用知识图谱建模这些关系,以Katz中心性对通向红色标记的路径求和计算可解释的风险分,在200个表面干净的项目上检出率81%、零误报。Agent不直接写Cypher,而是调用八个参数化工具,由确定性验证器重算分数并拦截幻觉。结构性规则(路径不穿过其他项目、土地所有权边最多一次)将中位数分数从94降到28。每个购房者拥有独立记忆图,两个Agent通过图节点交接,支持跨会话记忆和主动预警。
用图数据库做房产尽调Agent:隐藏风险检出率81%
如果你看过班加罗尔的新楼盘宣传册,你会熟悉那套话术:效果图、会所、“RERA认证”、开盘优惠。看不到的是背后那些人的历史。开发商通常为每个项目注册新公司——这合法且常见,但也意味着一个全新、清白记录的公司,可能由同一批董事运营,而他们上一家公司已经破产,留下购房者面对半建成的楼。地块的前任所有者可能深陷产权诉讼,承包商可能在另外三个工地已经延期两年。
这些信息并不隐蔽,它们存在于RERA备案、公司记录、法院记录和土地记录中,只是从未被连接起来呈现给购房者。一个名为Khoj的开源项目试图解决这个问题:它不依赖单一记录,而是把“谁和谁有关”建成图,用图算法沿着关系路径计算风险分。在200个表面干净、实则暗藏风险的测试项目上,只看项目自身记录的方法检出率为0%,而Khoj的图方法检出率达到81%,且零误报。

为什么风险藏在关系里
Khoj作者将尽职调查的核心洞察概括为一句话:“这个项目安全吗?”的答案不在任何单一记录中,而在记录之间的关系里。一个刚开盘的项目可能拥有干净的RERA备案、A-khata土地和零投诉,但它的公司可能与一家正在破产程序中、留下两个烂尾项目的开发商共享两位董事。传统方式下,购房者需要手动翻阅多个数据库才能发现这层关联,而图数据库的天职就是处理这类多跳关系。
知识图谱的建模方式模仿了一位谨慎的房产律师会关注什么:开发商品牌CONTROL公司,个人DIRECTOR_OF公司;公司DEVELOPS项目,项目BUILT_ON地块,地块PREVIOUSLY_OWNED_BY某人;承包商BUILDS项目,审批挂在项目下;投诉AGAINST项目,法院案件INVOLVE土地、公司、个人或承包商。任何单独构成警示信号的实体——烂尾项目、破产公司、待决诉讼、B-khata地块——都被打上:RedFlag标签,附带严重程度和原因。
演示数据是合成但贴近现实的:91个项目、46家公司、100个人,分布在班加罗尔真实区域,固定种子生成,所有名称虚构。作者埋下的典型故事是Skyvista Altura:Sarjapur Road上一个全新开盘,RERA齐全、A-khata土地、零投诉,看起来完美,直到你发现其公司与Northstar Habitats共享两位董事,而后者正在破产程序中,留下两个烂尾项目。
RERA、A-khata、B-khata:RERA是印度《房地产(监管与发展)法》(2016)的简称,要求各邦设立房地产监管机构,开发商须备案项目并披露 promoter、土地权属、审批和施工进度等信息,购房者可据此查询项目合规性。Khata是班加罗尔等地市政税籍登记文件,相当于房产的“税务户口”。A-khata为完全合规、已缴纳土地税且产权清晰的房产,可正常交易和申请贷款;B-khata通常指未完全合规、产权或审批存在瑕疵的房产,交易和贷款受限,因此在尽调中构成警示信号。这些记录是公开的,但分散在不同系统中,正是知识图谱需要连接的数据源。
把路径变成可解释的分数
Khoj的风险分设计目标是“构造上可解释”——每一分背后都有一条路径。对每个项目,一条Cypher查询找出所有最多四跳、通向红色标记的路径,过滤掉经过其他项目的路径,并限制土地所有权边最多使用一次。每条路径贡献其标记的严重程度,按距离和每段关系强度衰减,最终汇总为类似Katz中心性的分数:
K(p) = Σ 路径P: severity(f) · 0.6^(hops−1) · Π 边权重
score = 100 · (1 − e^(−K))
对Skyvista Altura,10条路径加总K=1.87,得分84.6/100。这种设计刻意求和所有路径:与失败开发商共享两位董事的公司,应该比只共享一位的更危险。
教训一:校准要针对全图,而非演示样本
第一版正确识别了Skyvista Altura,但把中位数项目也打到了94分。原因在于承包商和土地聚合商是枢纽节点,路径从项目到承包商、再到另一个项目、再到那个项目的30条投诉,一切看起来都危险。两条结构性规则修复了这个问题:路径不能穿过另一个项目(烂尾项目本身已是红旗,其投诉不应再算到邻居头上);一条路径最多使用一条土地所有权边(避免土地聚合商把无关项目连在一起)。中位数降到28,干净项目得0分,埋设的故事仍然突出。
Katz中心性是一种基于路径的中心性度量,它不仅考虑节点之间的最短路径,还对所有长度的路径按长度衰减求和,从而衡量节点在整个网络中的影响力。公式通常为 (C_{Katz}(v)=\sum_{k=1}^{\infty}\alpha^k\sum_{u}A^k_{vu}),其中 (\alpha) 是衰减因子,(A) 是邻接矩阵。Khoj 借用这一思想,将项目到红色标记的所有路径按跳数指数衰减后求和,使风险分同时反映直接关联和间接关联,且每条路径可追溯、可解释。
图算法作为Agent工具
购房者该问的两个问题——“这个品牌背后到底是谁?”和“这里有没有连环操盘手?”——直接映射到FalkorDB的内置算法。弱连通分量在董事-公司图上运行,同一分量的公司构成一个隐藏集团,无论它们以什么品牌运营。介数中心性找出桥接不同公司的董事:演示中一个人同时在四个品牌、六块董事会任职,其中两个品牌失败,他在全市场董事中排名第一。
教训二:算法对方向有意见
FalkorDB的介数中心性遵循边方向。作者的边都指向Person → Company,导致没有最短路径“穿过”一个人,所有得分返回零。为每条董事关系添加反向HAS_DIRECTOR边后修复,该问题及最小复现已记录在仓库中。
弱连通分量(Weakly Connected Component)指在有向图中忽略边方向后仍相互连通的节点集合。在董事-公司图上,同一弱连通分量内的公司通过共享董事(无论方向)形成关联集团,可用于发现表面品牌不同、实则由同一批人控制的隐藏集团。介数中心性(Betweenness Centrality)衡量一个节点作为其他节点间最短路径“桥梁”的频率,分数越高,说明该节点越能连接不同群体。在董事网络中,高介数中心性的个人往往是跨多家公司的关键连接者,可能揭示连环操盘手。FalkorDB 等图数据库内置这些算法,可直接作为 Agent 工具调用。
Agent不写Cypher
让模型直接写查询很诱人,但作者没有这么做。Agent获得的是八个手工编写、参数化的工具,通过MCP提供,模型只负责选择工具并填入参数,所有查询只读执行。每个结果还标注答案类型:ANSWERED_WITH_PATH(图中有关系,这是路径)、ANSWERED_FROM_MEMORY(较早发现,附日期)、NOT_IN_GRAPH(无已知连接,但这不等于安全)、UNKNOWN_ENTITY(名称无法解析,不执行查询)。
“Agent提议,代码裁决。”在发现被保存前,一个确定性验证器会从图重新计算分数、按固定规则检查结论,并拒绝任何提及工具从未返回实体的证据。模型自己给出的数字总是被计算值替换。
这种设计把LLM的灵活性和图查询的确定性分开,避免了模型幻觉污染尽职调查结论。
MCP(Model Context Protocol)是一种开放协议,用于标准化大语言模型与外部工具、数据源之间的连接方式。它允许模型以统一接口发现和调用工具,而不必将查询逻辑硬编码在提示词中。在 Khoj 中,MCP 将八个手工编写、参数化的图查询工具暴露给 Agent,模型只负责选择工具和填入参数,所有查询以只读方式执行。这种架构把 LLM 的语义理解能力与图查询的确定性分离,既降低了模型生成错误查询的风险,也便于对工具进行审计和权限控制。
记忆,以及两个通过图协调的Agent
一个每次忘记你预算的尽调助手没有多大用处。FalkorDB在一个实例中可容纳多个图,因此每个购房者拥有独立记忆图,彼此不泄露。记忆图保存偏好及其历史(修改预算会创建新节点SUPERSEDES旧节点)、常设规则(如“总是检查土地产权”)、会话、候选清单和案卷。
系统有两个Agent:Concierge与你对话并拥有记忆,Investigator拥有市场图。它们通过图本身交接:Concierge打开一个Case节点,Investigator向其中写入Finding节点,Concierge再读回。作者最喜欢的时刻是:候选清单里有两个干净项目,然后图中加入市场事件(承包商的破产申请、新的产权诉讼),当你回来时,Khoj在你开口前就打招呼:“Whispering Woods从0变成了52”,并给出确切的新路径。
证明图真的在起作用
“去掉数据库就失效”很容易声称,所以作者做了测量。基准测试向图的副本注入200个新项目,每个表面干净,一半隐藏四种风险模式之一,一半是带陷阱的干净对照(比如与烂尾项目共享区域和银行)。结果中最令人惊讶的一行是:不使用两条结构性规则的消融实验几乎找出所有风险,但误标了93%的干净项目。图很重要,但如何在图上行走同样重要。作者还用纯Python路径枚举重算了每个分数,与FalkorDB结果零不一致。
教训三:让基准测试让你难堪
一个只涉及地块前任所有者的产权诉讼得分略低于阈值,因为模型将其像其他跳数一样衰减。但在财产法中这是错误的:你继承卖方的产权。因此产权链上的跳数现在不衰减。这个改动是在看到基准测试结果后做出的,报告中也如实记录。
下一步与启示
该schema直接映射到真实公共数据源:K-RERA、MCA公司备案、eCourts和Bhoomi土地记录。有了真实结果数据,手工设定的严重程度可以被拟合而非选择。作者的核心结论是:图不只是Agent的存储,它让Agent的答案可核查。当Khoj说“避开”,它展示路径,你可以自己验证。
Khoj已开源,技术栈为FalkorDB、MCP、Streamlit。对于关注AI Agent落地的人来说,这个项目的价值不在于房产领域本身,而在于示范了一种模式:把LLM限制在固定工具集内、用图算法做确定性评分、用验证器拦截幻觉、用路径展示实现可解释性。这套组合拳可以迁移到供应链尽调、投资标的筛查、合规审查等任何“风险藏在关系里”的场景。
相关推荐

花旗14000名工程师用Devin,技术外包账单砍掉30%
花旗集团14000名工程师使用AI编程智能体Devin,一年内将技术供应商账单削减30%,产品发布提速30-40%。但30%仅限单一成本项,摩根大通同期表示AI收益尚未体现在财报中,揭示企业AI落地的真实分化。

AI写代码,程序员要失业?Devin自主编程真相
Devin等自主AI编程代理正改变软件开发:从Copilot辅助编码到全自动工程代理,程序员角色从写代码转向系统设计与监督。本文分析AI编程对就业、代码安全、初级开发者培养的影响,以及效率悖论下程序员需求的真实走向。

AGENTS.md 实战指南:让编程 Agent 真正好用
AGENTS.md 和 CLAUDE.md 能显著提升编程 Agent 表现,但研究发现用错反而让成本上升 20%。本文详解该写什么、该删什么、200 行与 32KB 的硬边界、Monorepo 嵌套规则及安全提醒。