SeekStorm
SeekStorm 可作为库嵌入、作为多租户服务器运行,或通过 MCP 为智能体提供搜索。
核验日期
核心信息
以下信息由程序从官方接口读取,不经模型改写。
- 许可证
- Apache-2.0
- 语言
- Rust
- 维护方
- SeekStorm
- 核验日期
它是什么
SeekStorm 可作为库嵌入、作为多租户服务器运行,或通过 MCP 为智能体提供搜索。SeekStorm 的 seekstorm 组件是进程内搜索库(词法、向量、混合)。SeekStorm 以 Apache License 2.0 开源。SeekStorm 自 2020 年起处于生产环境。
主要能力
SeekStorm 在同一个查询规划器之后有两个一等引擎(倒排索引加 IVF ANN)。
搜索可按每次查询选择词法、向量或混合,并用倒数排名融合(RRF)融合结果。
SeekStorm 支持多向量索引,既可来自多个字段,也可来自每个字段的多个分块。
向量搜索支持余弦相似度、点积和欧氏距离,向量精度支持 F32 和 I8。
SeekStorm 也可以导入并索引外部生成的嵌入向量。
SeekStorm 提供 38 种语言的词干提取,并有 6 种分词器,其中包括中文分词。
SeekStorm 内置面向 RAG 和智能体搜索的 MCP 服务器。
SeekStorm 支持地理邻近搜索、过滤和排序,以及单向和多向同义词。
怎么上手
MCP 服务器可加入 MCP 客户端配置(Claude Desktop、Cursor 等)。
MCP 服务器作为子进程通过 stdio 运行并直接嵌入 SeekStorm,不需要服务器进程或网络连接。
如果 SEEKSTORM_INDEX_PATH 处不存在索引,MCP 服务器会用默认模式(title、body、path)创建一个。
MCP 服务器以 MCP 工具形式提供词法、向量和混合搜索,以及文档索引、JSON/NDJSON 导入、PDF 索引和索引管理。
应将 MASTER_KEY_SECRET 环境变量设为一个机密值,否则生成的 API 密钥会泄露。
应用可以在 cargo.toml 中禁用 SeekStorm 的默认功能。
docker run -ti -p "8000:80" -v "$(pwd)/seekstorm_storage:/seekstorm_index:z" wolfgarbe/seekstorm_servercargo install seekstorm_mcp_server{
"mcpServers": {
"seekstorm": {
"command": "seekstorm_mcp_server",
"env": { "SEEKSTORM_INDEX_PATH": "/path/to/seekstorm-index" }
}
}
}cargo add seekstorm serde_json
cargo add tokio --features fulluse std::path::Path;
use seekstorm::commit::Commit;
use seekstorm::index::{create_index, AccessType, Clustering, DocumentCompression, FrequentwordType, IndexDocuments, IndexMetaObject, LexicalSimilarity, NgramSet, StemmerType, StopwordType, TokenizerType};
use seekstorm::search::{QueryRewriting, QueryType, ResultType, Search, SearchMode};
use seekstorm::vector::Inference;
#[tokio::main]
async fn main() {
// 1. Schema: which fields exist and how they are indexed
let schema = serde_json::from_str(r#"[
{"field":"title","field_type":"Text","store":true,"index_lexical":true},
{"field":"body","field_type":"Text","store":true,"index_lexical":true}
]"#).unwrap();
// 2. Create the index
let meta = IndexMetaObject {
id: 0,
name: "quickstart".into(),
lexical_similarity: LexicalSimilarity::Bm25f,
tokenizer: TokenizerType::UnicodeAlphanumeric,
stemmer: StemmerType::None,
stop_words: StopwordType::None,
frequent_words: FrequentwordType::English,
ngram_indexing: NgramSet::NgramFF as u8,
document_compression: DocumentCompression::Snappy,
access_type: AccessType::Mmap,
spelling_correction: None,
query_completion: None,
clustering: Clustering::None,
inference: Inference::None,
segment_number_bits:11
};
let mut index_arc = create_index(Path::new("./seekstorm_index"), meta, &schema, &Vec::new(), false, None).await.unwrap();
// 3. Index documents
let docs = r#"[{"title":"title1 test","body":"body1"}, {"title":"title2","body":"body2 test"}]"#;
index_arc.index_documents(serde_json::from_str(docs).unwrap()).await;
index_arc.commit().await;
// 4. Search
let result_object = index_arc.search(
"test".to_string(), None, QueryType::Intersection, SearchMode::Lexical, false, 0, 10, ResultType::TopkCount, false,
Vec::new(), Vec::new(), Vec::new(), Vec::new(), QueryRewriting::SearchOnly,
).await;
println!("{} hits", result_object.result_count_total);
for r in result_object.results.iter() {
println!("doc {} score {}", r.doc_id, r.score);
}
}适合谁
SeekStorm 的索引可放在内存中,也可放在内存映射文件中。SeekStorm 支持 x86-64(AVX2)和 AArch64(NEON)上的 SIMD。同一个二进制索引可用于库、服务器和云。
索引是由自包含文件组成的普通目录树,不需要数据库引擎。索引的备份和恢复就是复制文件。服务器跨平台,运行于 Linux、Windows 和 macOS,其他操作系统未测试。
SeekStorm 提供 Rust、Python、C#、Java、TypeScript 的客户端库和 SDK。SeekStorm 在 Docker Hub 提供 Docker 文件和容器镜像。SeekStorm 列出了多租户索引管理。
SeekStorm 列出了 API 密钥管理。SeekStorm 可通过控制台命令导入本地 PDF 文件,可以是单个文件,也可以是目录中的所有文件。
来源
本页内容整理自以下官方来源,点击可核对原文。
- GitHub READMEhttps://github.com/SeekStorm/SeekStorm抓取于
核验日期 ·
本页由 AI 依据上述官方来源整理,并经自动核对,未经本站实测。 发现错误?告诉我们。