使用说明
🥭 塞曼戈
🥭 塞曼戈 是一个结合了词汇(BM25)和语义(向量)搜索的混合搜索引擎。对代码库和文档进行索引,并使用自然语言查询进行搜索。
网站和文档:https://semango.org
特性
- 混合搜索:将BM25词汇搜索(Bleve)与向量相似度(FAISS)相结合
- 多格式摄入:Markdown/文本、代码(纯文本)、PDF、CSV/JSON/JSONL、Parquet、SQLite、Excel
- 增量索引:仅重新索引已更改的文件(按mtime+size),使后续运行接近即时
- 嵌入提供者:兼容OpenAI的API或本地ONNX模型
- GPU加速:内置对CUDA加速本地嵌入的支持
- MCP服务器:LLM工具使用的模型上下文协议支持(stdio和SSE传输)
- Web 界面:嵌入式基于React的暗模式搜索界面
- REST API:用于编程访问的轻量级HTTP API
- 优雅地关闭:清除所有命令中的Ctrl+C处理
- 单一二进制:具有嵌入式UI资产的自包含可执行文件
安装
下载二进制文件
# macOS / Linux
curl -L "https://github.com/omarkamali/semango/releases/latest/download/semango_$(uname -s | tr '[:upper:]' '[:lower:]')_$(uname -m).tar.gz" | tar xz
sudo mv semango /usr/local/bin/
码头工人
docker pull ghcr.io/omarkamali/semango:latest
docker run -p 8181:8181 -v $(pwd):/data ghcr.io/omarkamali/semango:latest
从源代码构建
需要Go 1.23+、Node.js 20+和CGO依赖项(FAISS、OpenBLAS)。
git clone https://github.com/omarkamali/semango.git
cd semango
make build
快速开始
# 1. Initialize configuration
semango init
# 2. Index your content
semango index
# 3. Start the server (includes web UI + auto-reconciliation)
semango server
打开http://localhost:8181对于web UI,或查询API:
curl -X POST http://localhost:8181/search \
-H "Authorization: Bearer your-secret-token" \
-H "Content-Type: application/json" \
-d '{"query": "how does authentication work", "top_k": 5}'
CLI命令
| 命令 | 描述 |
|---|---|
semango init |
创建默认值 semango.yml 配置文件 |
semango index |
索引文件(增量--跳过未更改的文件) |
semango index stats |
显示索引统计信息(文档计数) |
semango search <query> |
从命令行搜索 |
semango server |
使用UI和定期对账启动HTTP服务器 |
semango mcp stdio |
通过stdin/stdout启动MCP服务器 |
semango mcp sse |
通过HTTP/SSE启动MCP服务器 |
semango models list |
列出可用的本地ONNX型号 |
semango version |
打印版本信息 |
提示: 跑步
semango index第二次不进行文件更改会立即完成——只有修改过的文件会被重新嵌入和重新索引。
## Configuration
Semango uses `semango.yml` for configuration. Key options:
```yaml
embedding:
provider: openai # or "local" for ONNX models
model: text-embedding-3-large
# Optional: base_url, api_key, api_key_env, base_url_env
lexical:
enabled: true
index_path: ./semango/index/bleve
hybrid:
vector_weight: 0.7
lexical_weight: 0.3
fusion: linear # or "rrf"
files:
include:
- '**/*.md'
- '**/*.go'
- '**/*.pdf'
exclude:
- .git/**
- node_modules/**
server:
port: 8181
auth:
type: token
token_env: SEMANGO_TOKENS
看 docs/SEMANGO_GUIDE.md 以获取完整的配置参考。
环境变量
| 变量 | 描述 | 默认/可选 |
|---|---|---|
SEMANGO_TOKENS |
API有效令牌的逗号分隔列表 | 已分析但尚未强制执行 |
OPENAI_API_KEY |
当使用API密钥时 provider: openai |
如果使用 api_key 或 api_key_env 未设置 |
OPENAI_BASE_URL |
OpenAI兼容API的基本URL | 默认为OpenAI官方端点 |
SEMANGO_ENV_FILE |
通往 .env 要加载的文件 |
默认为 .env |
SEMANGO_MODEL_DIR |
本地ONNX型号的缓存目录 | 默认为 ~/.cache/semango |
您还可以通过设置来自定义Semango要查找的环境变量 api_key_env 或 base_url_env 在你的 semango.yml.
MCP(模型上下文协议)
Semango可以充当 主控程序 服务器,让LLM将您的索引内容用作搜索工具:
# stdio transport (for Claude Desktop, etc.)
semango mcp stdio --config semango.yml
# SSE transport (HTTP-based, for remote clients)
semango mcp sse --host 0.0.0.0 --port 8080 --config semango.yml
文档
- https://semango.org/guide/
- 本地嵌入 --使用本地ONNX模型
- 表格数据 --摄入CSV/JSON/JSONL/Parquet/SQLite/Excel文件
- MCP集成 --将Semango与LLM结合使用
在线的https://semango.org
贡献
欢迎投稿!请参阅 贡献.md 作为指导方针。
许可证
作者
由...建造 奥马尔·卡马利 (https://omarkamali.com)--Omneity实验室(https://omneitylabs.com)
