feat: semantic query via sentence-transformers embeddings#424
Conversation
* fix: git hooks fail when graphify is installed via pipx When installed via pipx, the graphify module is only available in pipx's isolated venv, not the system python3. The git hooks (post-commit, post-checkout) hardcoded `python3` which cannot import graphify in this case. Detect the correct Python interpreter from the graphify binary's shebang line, matching the approach already used in skill.md Step 1. Falls back to python3 for system installs. * fix: handle env-style shebangs and improve interpreter detection - Use POSIX `command -v` instead of non-standard `which` - Parse `#!/usr/bin/env python3` shebangs correctly (previous `tr -d ' '` would produce `/usr/bin/envpython3`) - Add import validation fallback to python3 if resolved interpreter cannot import graphify
… buffer * fix: suppress graspologic ANSI output that breaks PowerShell scrolling graspologic's leiden() emits ANSI escape sequences (progress bars, colored warnings) that corrupt PowerShell 5.1's scroll buffer on Windows, disabling vertical scrolling. Redirect stdout/stderr to StringIO during leiden() calls to prevent any escape codes from reaching the terminal. Add 2 tests verifying cluster() produces no stdout/stderr output. Fixes Graphify-Labs#19 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * docs: add PowerShell troubleshooting section to Windows skill Document the PowerShell 5.1 scrolling issue and provide 4 workarounds: upgrade graphify, use Windows Terminal, reset terminal, or uninstall graspologic to use Louvain fallback. Fixes Graphify-Labs#19 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
- Register 'trae' and 'trae-cn' in _PLATFORM_CONFIG (skill-trae.md, ~/.trae/skills/ and ~/.trae-cn/skills/, claude_md=False) - Add CLI subcommands: graphify trae install/uninstall, graphify trae-cn install/uninstall (routes to _agents_install/uninstall) - Update help text with new platform entries - Create skill-trae.md (Agent-tool based extraction, AGENTS.md integration, no PreToolUse hook support per Trae limitations) - Update README.md and README.zh-CN.md with Trae platform docs Co-authored-by: lijinshuan <lijinshuan@bytedance.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…utput Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…ean README, save-result CLI
…y-Labs#109: extension drift, click detection, skill coverage, .graphify_python persistence Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…-Labs#93 Graphify-Labs#102 Graphify-Labs#109) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…ify-Labs#126) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…Graphify-Labs#71) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…e relations in innerHTML (#sec) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…y-Labs#127) Tree-sitter resolves call targets directly from source — marking them INFERRED was incorrect. Cross-file class-level uses edges remain INFERRED. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…AST calls Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…Windows git hooks (Graphify-Labs#140) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…sh (Graphify-Labs#137, Graphify-Labs#148, Graphify-Labs#149) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…hify-Labs#105) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…s, fixes Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
… path bug, .graphifyignore subfolder patterns; v0.4.10: Dart, Hermes, 6 CLI commands, PHP improvements Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…NTS.md python3 fix Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…e plugin, cache root, PHP missing edges, Windows stability, cross-file calls - Graphify-Labs#352: add skill-kiro.md to pyproject.toml package-data - Graphify-Labs#341: guard edge_betweenness at >5000 nodes; use approximate k=100 for suggest_questions on large graphs - Graphify-Labs#354/Graphify-Labs#229: add Step 6b in skill.md to call to_wiki() when --wiki given (before Step 9 cleanup) - Graphify-Labs#356: call _install_opencode_plugin() from install --platform opencode path - Graphify-Labs#350: add cache_root param to extract() so subdirectory runs keep cache at ./graphify-out/cache/ - Graphify-Labs#230: PHP class_constant_access_expression emits references_constant edges - Graphify-Labs#232: PHP scoped_call_expression (static method calls) emits calls edges - Graphify-Labs#287: os.replace fallback for Windows WinError 5; graphify update exits 1 on failure; templates use graphify update . instead of python3 -c - Graphify-Labs#348: cross-file call resolution for all languages via raw_calls + global label map pass in extract() Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…js, macOS watch, god_nodes degree rename Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…correct rustworkx APIs, git fetch strategy
…aphify-Labs#401 Graphify-Labs#385, team workflow docs, Windows/pipx tips Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…Graphify-Labs#418 graph.html missing from CLI
|
This PR adds the embedding engine, caching, and edge creation. Query wiring into main.py and pyproject.toml optional dependency coming in the next commit before merge. |
|
Updated , query wiring into main.py and pyproject.toml optional dependency now included. graphify query "question" --embeddings uses semantic cosine similarity ranking instead of BFS keyword match. Fully closes #1. |
|
Hi, embed_graph() sets an edge attribute named "source", which collides with NetworkX node-link JSON’s reserved edge endpoint key and can corrupt exported Severity: action required | Category: correctness How to fix: Rename edge attribute "source" Agent prompt to fix - you can give this to your LLM of choice:
We noticed a couple of other issues in this PR as well - happy to share if helpful. Qodo code review - free for open-source. |
…lision Made-with: Cursor
hi , Fixed — renamed source to provenance in embed.py to avoid NetworkX node-link JSON collision. Happy to see the other issues too |
Closes #1
What this does
Adds semantic embedding support to graphify query using
sentence-transformers with all-MiniLM-L6-v2 (80MB, local,
no API key required).
Changes
graphify/embed.py— new module withembed_graph()functionsemantically_similar_toedges above configurablethreshold (default 0.82)
tests/test_embed.py— 3 tests covering:Notes
tests skipped — Windows privilege limitation, pre-existing)