FuseSearch

多源搜索聚合工具,通过单一查询界面使用人工智能驱动的搜索和响应合成,统一跨不同数据源(Confluence、MCP服务器、本地文件等)的检索。
安装
pip install fusesearch所有可选依赖项(MCP服务器、本地嵌入、OpenAI):
pip install fusesearch[all]快速开始
make build
make start
make index # index docs from data/docs
make search "your query"运作原理
Query → Embed → Vector Search ─┐
├→ RRF Fusion → Rerank (optional) → Results
Keyword Search ─┘嵌入提供者
FuseSearch支持三个嵌入提供程序。由于向量维度不同,每个都使用单独的Qdrant集合。
| 本地(默认) | OpenAI | Ollama | |
|---|---|---|---|
| 模型 | 全MiniLM-L6-v2(384调光) | 文本嵌入-3小(1536调光) | nomic嵌入文本(768调光) |
| 质量 | 适用于一般英语 | 更适合细微/复杂的查询 | 良好,因型号而异 |
| 成本 | 免费 | 每100万代币约0.02美元 | 免费 |
| 隐私 | 数据保持本地 | 发送到OpenAI的数据 | 数据保持本地 |
| 离线 | 是 | 否 | 是 |
本地(默认)
用途 句子变换器.完全在您的计算机上运行,不需要API密钥。
开放人工智能
用途 开放人工智能的API。更高质量的嵌入,但需要API密钥。
要使用OpenAI嵌入,请添加到您的 .env:
FUSESEARCH_EMBEDDER=openai
OPENAI_API_KEY=sk-...或者通过CLI传递:
fusesearch --embedder openai index data/docs
fusesearch --embedder openai search "your query"费率限制: OpenAI Tier 1帐户的嵌入速度限制为每分钟40k个令牌。FuseSearch在出现速率限制错误时会自动重试,但对大型文档集的初始索引将很慢。更高的级别(消费时自动升级)会显著增加这一点。看 OpenAI速率限制.
奥拉玛
用途 奥拉玛 在本地运行嵌入模型。不需要API密钥。
- 从以下位置安装 ollama.com
- 拉动嵌入模型:
ollama pull nomic-embed-text
FUSESEARCH_EMBEDDER=ollama或者通过CLI传递:
fusesearch --embedder ollama index data/docs
fusesearch --embedder ollama search "your query"Docker: 在主机上使用Ollama在Docker中运行FuseSearch时,设置 OLLAMA_HOST 因此容器可以到达它:
OLLAMA_HOST=http://host.docker.internal:11434其他Olama嵌入模型: bge-m3, mxbai-embed-large, snowflake-arctic-embed。配置为:
OLLAMA_EMBED_MODEL=bge-m3重新排序
重新排名使用 交叉编码器 检索后重新排序搜索结果的模型。交叉编码器直接评估每个(查询、文档)对,产生比单独进行初始检索更准确的相关性得分。
启用后,FuseSearch会从混合搜索中获取3倍的候选,然后重新排序到请求的限制。
用法
通过CLI标志或API参数进行请求:
fusesearch search "your query" --rerankcurl -X POST http://localhost:8000/search \
-H "Content-Type: application/json" \
-d '{"query": "your query", "rerank": true}'或者通过环境变量全局启用:
FUSESEARCH_RERANK=true配置
| 变量 | 默认值 | 描述 |
|---|---|---|
FUSESEARCH_RERANK | false | 在全球范围内启用重新银行服务 |
FUSESEARCH_RERANKER | local | 重新排名提供商 |
FUSESEARCH_RERANK_MODEL | cross-encoder/ms-marco-MiniLM-L-6-v2 | 交叉编码器型号 |
重新链接器独立于嵌入提供者——它处理的是原始文本,而不是向量。你可以使用 FUSESEARCH_EMBEDDER=openai 随着 FUSESEARCH_RERANK=true。本地重新登录者需要 [local] 额外(sentence-transformers).
Ask(法学硕士综合)
这 ask 命令搜索您的索引文档,并使用LLM将答案与引用进行综合。这是可选的——搜索无需安装任何LLM提供程序即可工作。
用法
fusesearch ask "What is Drupal?"curl -X POST http://localhost:8000/ask \
-H "Content-Type: application/json" \
-d '{"query": "What is Drupal?"}'LLM提供商
| 供应商 | 型号 | 额外 | 成本 |
|---|---|---|---|
| 人类学 | claude-sonnet-4-20250514 | [anthropic] | 支付即用API |
| OpenAI | gpt-4o-mini | [openai] | 支付即用API |
| Ollama | 打电话3.2 | [ollama] | 免费(本地运行) |
Anthropic
需要单独的API密钥(Claude Pro/Team订阅即可 不 包括API访问)。
- 在以下网址创建帐户 console.anthropic.com
- 在下面添加账单 设置>账单 (现收现付)
- 在下面创建密钥 设置>API密钥
FUSESEARCH_LLM=anthropic
ANTHROPIC_API_KEY=sk-ant-...开放人工智能
如果您已经有一个用于OpenAI嵌入的API密钥,那么相同的密钥在这里有效。
- 首选 platform.openai.com/api-keys
- 创建新的密钥
FUSESEARCH_LLM=openai
OPENAI_API_KEY=sk-...奥拉玛
不需要API密钥。完全在您的机器上运行。
- 从以下位置安装 ollama.com
- 拉一个模型:
ollama pull llama3.2
FUSESEARCH_LLM=ollama如果 FUSESEARCH_LLM 如果未设置,FuseSearch会自动检测第一个安装的提供程序。如果没有安装, ask 返回一个明确的错误——搜索继续正常工作。
MCP服务器
这 fusesearch-mcp Docker服务在端口8001上公开了一个可流式传输的HTTP端点。工具: search (混合搜索), count (索引块)。
克劳德代码
claude mcp add fusesearch http://localhost:8001/mcp --transport http克劳德桌面
选项1:连接器UI(推荐)
在Claude Desktop中,转到 设置>连接器>添加自定义连接器 并进入 https://localhost:8001/mcp.
选项2:配置文件 mcp-remote 网桥(本地开发)
增添 ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"fusesearch": {
"command": "npx",
"args": ["-y", "mcp-remote", "http://localhost:8001/mcp", "--allow-http"]
}
}
}需要Node.js>=18。 --allow-http 是纯HTTP所必需的(HTTPS不需要)。
