graphify 中文支持完整指南:jieba 分词让知识图谱中文查询更精准
【免费下载链接】graphifyTurn any codebase, with its docs, SQL schemas, configs, and PDFs, into a queryable knowledge graph. A /graphify skill for Claude Code, Cursor, Codex, and Gemini CLI: local deterministic AST parsing, every edge explained, no vector store.项目地址: https://gitcode.com/GitHub_Trending/graph/graphify
graphify是一款把代码库、文档、SQL 模式和配置文件变成可查询知识图谱的开源工具,它为 Claude Code、Cursor、Codex 和 Gemini CLI 提供/graphify技能,采用本地确定性 AST 解析,不依赖向量库。更值得中文用户关注的是:graphify 内置了jieba 中文分词支持,让"页面路由"这样的复合中文词也能被精准命中。
🤔 为什么中文查询容易"失手"?
graphify 的查询引擎(实现在 graphify/serve.py)采用分词 + IDF 加权的搜索管线:把查询拆成词元,再按词频给节点打分。这套逻辑对英文很友好——空格天然分词;但对中文来说,"页面路由"如果不拆分,就很难命中只含"路由"的节点。
graphify 给出的解法很直接:
- 检测到中文就分词:查询词元中包含 CJK 字符时,自动走分词分支;
- jieba 优先:安装了 jieba 就用它做语义分词(
"页面路由" → ["页面", "路由"]); - 优雅降级:没装 jieba 时退化为双字滑窗(bigram),
"页面路由"也会产生"页面"、"路由"等片段; - 保留原词:完整复合词会和分词结果一起参与匹配,确保"页面路由"这类精确词不丢失。
核心实现在 graphify/serve.py 的_segment_chinese函数:
def _segment_chinese(text: str) -> list[str]: """Segment Chinese text and keep the original term for exact matching.""" if _jieba is not None: segments = [w for w in _jieba.cut(text) if len(w.strip()) > 0] else: segments = [text[i:i + 2] for i in range(len(text) - 1)] or [text] if len(text) > 1 and text not in segments: segments.append(text) return segments🚀 jieba 分词快速安装步骤
jieba 是可选依赖,通过chineseextra 引入(见 pyproject.toml)。推荐用 uv 安装:
uv tool install "graphifyy[chinese]"如果已在用 pip:
pip install "graphifyy[chinese]"💡 不安装 jieba 也能查中文——双字滑窗回退机制保证基本可用;装上 jieba 后,长复合词的分词质量会明显更好。
jieba 模块在 graphify/serve.py 中被"缓存式"导入:导入成功就全程复用,失败则记为None,不阻塞服务启动。
🔍 中文查询是如何被处理的?
整条管线可以概括为:检测中文 → jieba 分词 → 过滤疑问词 → IDF 加权打分 → 子串匹配加分。
以查询"前端 router 路由配置"为例,graphify 会同时得到前端 / router / 路由 / 配置四个可搜索词元(中英混合场景在 tests/test_serve.py 中有对应测试)。
打分阶段有三个细节让中文查询更稳:
- IDF 权重:像"错误"这种出现在上百个节点的词权重低,稀缺的专有名词权重高(graphify/serve.py);
- 子串匹配:中文节点标签常是短语,
"路由"可以直接命中"路由桥接核对表"这类节点(tests/test_serve.py); - 全链路验证:
"页面路由"查询能穿透图谱父子边,找到含"路由"标签的子节点(tests/test_serve.py)。
另外注意:日文假名、韩文不会被误判为中文分词对象,它们会整体保留为词元(tests/test_serve.py)。
⚙️ 中文环境使用清单
- Windows 中文系统:graphify 已修复系统默认编码导致的乱码问题——技能文件统一指定
encoding="utf-8",json.dumps使用ensure_ascii=False,中文标签原样存储(见 CHANGELOG.md)。 - 验证分词行为:跑一下
tests/test_serve.py中test_query_terms_chinese_segments_with_cached_jieba等用例,可直观看到"页面路由"的分词产物。 - 查看更新历史:中文分词特性记录在 CHANGELOG.md。
✅ 常见问题 FAQ
Q:不装 jieba 会影响使用吗?不会。双字滑窗回退能保证基本分词,但复合词边界判断不如 jieba 精准,建议按需安装。
Q:查询支持中英混合吗?支持。同一句里英文按常规分词、中文走 jieba,互不干扰。
Q:查询没命中中文节点怎么办?试试直接用节点标签中的子串(如只查"路由"),子串匹配本身就是一等公民。
📝 总结
graphify 的中文支持体现了"本地确定性"的设计哲学:不上传、不依赖向量库,仅靠 jieba 分词 + IDF 打分,就让中文复合词查询变得精准可靠。配合 docs/translations/README.zh-CN.md 中文版说明,中文用户开箱即用。
【免费下载链接】graphifyTurn any codebase, with its docs, SQL schemas, configs, and PDFs, into a queryable knowledge graph. A /graphify skill for Claude Code, Cursor, Codex, and Gemini CLI: local deterministic AST parsing, every edge explained, no vector store.项目地址: https://gitcode.com/GitHub_Trending/graph/graphify
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考