用途:semtools 提供语义(基于含义)搜索,用于代码与文档的发现式检索。与传统精确字符串搜索(ripgrep)或语法结构搜索(ast-grep)不同,它借助嵌入向量理解语义,适合在你知道概念但不知道确切关键词、函数名或语法模式时查找相关代码。
主要能力:
- 语义搜索(search):按含义查找代码与文本片段,可显示上下文行、返回条数并控制相似度阈值。例如:search "authentication logic" src/;search "error handling" --n-lines 5 src/;search "database queries" --top-k 10 src/;search "API endpoints" --max-distance 0.4 src/。参数包括 --n-lines(默认3)、--top-k(默认3)、--max-distance(0.0-1.0,默认0.3)、-i。
- 工作区管理(workspace):为大型代码库缓存嵌入以加速重复搜索。如 workspace use my-project、export SEMTOOLS_WORKSPACE=my-project、workspace status、workspace prune。
- 文档解析(parse):将 PDF、DOCX、PPTX 转为可搜索的 Markdown,需设置 LLAMA_CLOUD_API_KEY 环境变量或配置文件,属于可选的云端功能。
使用方式:在支持 execute_command 的环境中直接运行上述命令,语义搜索为本地嵌入(model2vec、potion-multilingual-128M),无需 API 调用;文档解析需联网并消耗 LlamaParse 用量。建议先语义搜索发现术语,再用 ripgrep 或 ast-grep 精确定位,即分层搜索。
适用场景:按概念查找代码实现、跨模块发现相似功能、按概念检索文档与注释、跨语言检索相关概念、分析技术文档。对于精确关键词、函数名、结构模式或符号引用,应改用 ripgrep、ast-grep 或符号追踪工具;文件数少于约100的小型项目收益有限。
限制:模糊查询与专业术语可能降低准确率,短代码片段上下文少,模型对英文优化;未缓存时单次搜索约2-5秒。官方未提供具体收费价格、平台支持与更多细节。