EN

SeekStorm

SeekStorm 可作为库嵌入、作为多租户服务器运行,或通过 MCP 为智能体提供搜索。

核验日期

核心信息

以下信息由程序从官方接口读取,不经模型改写。

许可证
Apache-2.0
语言
Rust
维护方
SeekStorm
核验日期

它是什么

SeekStorm 可作为库嵌入、作为多租户服务器运行,或通过 MCP 为智能体提供搜索。SeekStorm 的 seekstorm 组件是进程内搜索库(词法、向量、混合)。SeekStorm 以 Apache License 2.0 开源。SeekStorm 自 2020 年起处于生产环境。

主要能力

  1. SeekStorm 在同一个查询规划器之后有两个一等引擎(倒排索引加 IVF ANN)。

  2. 搜索可按每次查询选择词法、向量或混合,并用倒数排名融合(RRF)融合结果。

  3. SeekStorm 支持多向量索引,既可来自多个字段,也可来自每个字段的多个分块。

  4. 向量搜索支持余弦相似度、点积和欧氏距离,向量精度支持 F32 和 I8。

  5. SeekStorm 也可以导入并索引外部生成的嵌入向量。

  6. SeekStorm 提供 38 种语言的词干提取,并有 6 种分词器,其中包括中文分词。

  7. SeekStorm 内置面向 RAG 和智能体搜索的 MCP 服务器。

  8. SeekStorm 支持地理邻近搜索、过滤和排序,以及单向和多向同义词。

怎么上手

  1. MCP 服务器可加入 MCP 客户端配置(Claude Desktop、Cursor 等)。

  2. MCP 服务器作为子进程通过 stdio 运行并直接嵌入 SeekStorm,不需要服务器进程或网络连接。

  3. 如果 SEEKSTORM_INDEX_PATH 处不存在索引,MCP 服务器会用默认模式(title、body、path)创建一个。

  4. MCP 服务器以 MCP 工具形式提供词法、向量和混合搜索,以及文档索引、JSON/NDJSON 导入、PDF 索引和索引管理。

  5. 应将 MASTER_KEY_SECRET 环境变量设为一个机密值,否则生成的 API 密钥会泄露。

  6. 应用可以在 cargo.toml 中禁用 SeekStorm 的默认功能。

摘自 README · bash
docker run -ti -p "8000:80" -v "$(pwd)/seekstorm_storage:/seekstorm_index:z" wolfgarbe/seekstorm_server
摘自 README · bash
cargo install seekstorm_mcp_server
摘自 README · json
{
  "mcpServers": {
    "seekstorm": {
      "command": "seekstorm_mcp_server",
      "env": { "SEEKSTORM_INDEX_PATH": "/path/to/seekstorm-index" }
    }
  }
}
摘自 README · bash
cargo add seekstorm serde_json
cargo add tokio --features full
摘自 README · rust
use 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 文件,可以是单个文件,也可以是目录中的所有文件。

来源

本页内容整理自以下官方来源,点击可核对原文。

核验日期 ·

本页由 AI 依据上述官方来源整理,并经自动核对,未经本站实测。 发现错误?告诉我们。