modelscope/sirchmunk

GitHub: modelscope/sirchmunk

无向量数据库的智能搜索框架,支持原始文档实时检索与自我进化知识簇构建。

Stars: 347 | Forks: 35

Sirchmunk Logo # Sirchmunk:原始数据到自我进化智能,实时 [![Python](https://img.shields.io/badge/Python-3.10%2B-3776AB?style=flat-square&logo=python&logoColor=white)](https://www.python.org/downloads/) [![FastAPI](https://img.shields.io/badge/FastAPI-0.100%2B-009688?style=flat-square&logo=fastapi&logoColor=white)](https://fastapi.tiangolo.com/) [![Next.js](https://img.shields.io/badge/Next.js-14-000000?style=flat-square&logo=next.js&logoColor=white)](https://nextjs.org/) [![TailwindCSS](https://img.shields.io/badge/Tailwind-3.4-06B6D4?style=flat-square&logo=tailwindcss&logoColor=white)](https://tailwindcss.com/) [![DuckDB](https://img.shields.io/badge/DuckDB-OLAP-FFF000?style=flat-square&logo=duckdb&logoColor=black)](https://duckdb.org/) [![License](https://img.shields.io/badge/License-Apache%202.0-blue?style=flat-square)](LICENSE) [![ripgrep-all](https://img.shields.io/badge/ripgrep--all-Search-E67E22?style=flat-square&logo=rust&logoColor=white)](https://github.com/phiresky/ripgrep-all) [![OpenAI](https://img.shields.io/badge/OpenAI-API-412991?style=flat-square&logo=openai&logoColor=white)](https://github.com/openai/openai-python) [![Kreuzberg](https://img.shields.io/badge/Kreuzberg-Text_Extraction-4CAF50?style=flat-square)](https://github.com/kreuzberg-dev/kreuzberg) [![MCP](https://img.shields.io/badge/MCP-Python_SDK-8B5CF6?style=flat-square&logo=python&logoColor=white)](https://github.com/modelcontextprotocol/python-sdk) 📖 **[文档](https://modelscope.github.io/sirchmunk-web/)** [**快速开始**](#-quick-start) · [**核心特性**](#-key-features) · [**MCP Server**](#-mcp-server) · [**Web UI**](#️-web-ui) · [**Docker**](#-docker-deployment) · [**工作原理**](#️-how-it-works) · [**FAQ**](#-faq)
🔍 **Agentic Search**  •  🧠 **知识聚类**  •  📊 **蒙特卡洛证据采样**
⚡ **无索引检索**  •  🔄 **自我进化知识库**  •  💬 **实时聊天**

[English](README.md) | [中文](README_zh.md) ## 🌰 为什么叫 “Sirchmunk”? 基于向量检索构建的智能流水线往往_僵化且脆弱_。它们依赖于静态的向量嵌入,这些嵌入**计算成本高昂、对实时变化视而不见,并且与原始上下文脱节**。我们推出 **Sirchmunk** 以开启一种更敏捷的范式,在这种范式下,数据不再被视为快照,洞察力可以与数据共同演化。 ## ✨ 核心特性 ### 1. 无需 EmbeddingDB:数据的最纯粹形式 **Sirchmunk** 直接处理**原始数据** —— 无需承担将丰富文件强行压缩为固定维度向量的繁重开销。 * **即时搜索:** 无需耗时数小时的复杂预处理流水线和索引;只需放入文件即可立即搜索。 * **完全保真:** 零信息丢失 —— 保持数据的真实性,无需向量近似。 ### 2. 自我进化:活体索引 数据是流,而非快照。**Sirchmunk** 在设计上就是**动态的**,而向量 DB 会在数据变更的那一刻过时。 * **上下文感知:** 随着数据上下文实时演化。 * **LLM 驱动的自主性:** 为感知活体数据的 Agent 而设计,利用**token 高效**的推理,仅在必要时触发 LLM 推理,以最大化智能并最小化成本。 ### 3. 规模化智能:实时且海量 **Sirchmunk** 以**高吞吐量**和**实时感知**连接海量本地存储库与网络。
它作为 AI Agent 的统一智能枢纽,以思维的速度在庞大数据集上提供深度洞察。 ### 传统 RAG vs. Sirchmunk
维度 传统 RAG ✨Sirchmunk
💰 设置成本 高开销
(VectorDB, GraphDB, 复杂的文档解析器...)
✅ 零基础设施
无需向量孤岛,直接对数据进行检索
🕒 数据时效性 过期(批量重新索引) ✅ 即时 & 动态
反映实时变化的自我进化索引
📈 可扩展性 成本线性增长 ✅ 极低的 RAM/CPU 消耗
原生 Elastic 支持,高效处理大规模数据集
🎯 准确性 近似向量匹配 ✅ 确定性 & 上下文感知
确保语义精度的混合逻辑
⚙️ 工作流 复杂的 ETL 流水线 ✅ 放入即搜
零配置集成,快速部署
## 演示

直接访问文件即可开始聊天

| 微信群 |:-------------------------: | ## 🎉 新闻 * 🚀 **2026年3月5日**: Sirchmunk v0.0.5 - **破坏性变更**:统一的 Search API:精简了 search() 接口,引入新的 SearchContext 对象并简化了参数控制 (return_context)。 - **健壮的 RAG 聊天**:通过新的重试机制和细粒度的异常处理,显著提高了对话可靠性。 - **稳定的 MCP 集成**:修复了 mcp run 初始化问题,确保 Model Context Protocol 用户的无缝服务器部署。 - **PyPI Web UI 修复**:修正了 Next.js 源码打包,以支持标准 pip install 用户的完美 Web UI 启动。 * 🚀 **2026年2月27日**: Sirchmunk v0.0.4 - **Docker 支持**:一流的 Docker 部署支持,提供预构建镜像以实现无缝的容器化设置。 - **FAST 搜索模式**:新的默认贪婪搜索模式,使用 2 级关键字级联和上下文窗口采样 —— 检索速度显著提升,仅需 2 次 LLM 调用(2-5秒 vs 10-30秒)。 - **简化的部署**:简化了 CLI 和 Web UI 配置工作流程,加快上手速度。 - **Windows 兼容性**:修复了 Windows 环境的兼容性问题。 * 🚀 **2026年2月12日**: Sirchmunk v0.0.3:升级了 MCP 集成 & 核心搜索算法 - **MCP 增强**:增强了 Model Context Protocol 支持,并更新了设置指南。 - **细粒度搜索**:添加了 glob 模式(包含/排除)支持;自动过滤临时/缓存文件。 - **新文档**:深入探讨了“蒙特卡洛证据采样”和“自我进化知识簇”。 - **系统稳定性**:重构了搜索流水线,并为知识簇实施了 SHA256 确定性 ID。 * 🚀 **2026年2月5日**: 发布 **v0.0.2** — MCP 支持、CLI 命令 & 知识持久化! - **MCP 集成**:完全支持 [Model Context Protocol](https://modelcontextprotocol.io),可与 Claude Desktop 和 Cursor IDE 无缝协作。 - **CLI 命令**:新的 `sirchmunk` CLI,包含 `init`、`serve`、`search`、`web` 和 `mcp` 命令。 - **KnowledgeCluster 持久化**:由 DuckDB 驱动的存储,支持 Parquet 导出,实现高效的知识管理。 - **知识复用**:基于语义相似性的簇检索,通过嵌入向量实现更快的搜索。 * 🎉🎉 2026年1月22日:推出 **Sirchmunk**:初始版本 v.0.1 现已上线! ## 🚀 快速开始 ### 前置条件 - **Python** 3.10+ - **LLM API Key**(OpenAI 兼容端点,本地或远程) - **Node.js** 18+(可选,用于 Web 界面) ### 安装 ``` # 创建虚拟环境(推荐) conda create -n sirchmunk python=3.13 -y && conda activate sirchmunk pip install sirchmunk # 或通过 UV: uv pip install sirchmunk # 或者,从源码安装: git clone https://github.com/modelscope/sirchmunk.git && cd sirchmunk pip install -e . ``` ### Python SDK 用法 ``` import asyncio from sirchmunk import AgenticSearch from sirchmunk.llm import OpenAIChat llm = OpenAIChat( api_key="your-api-key", base_url="your-base-url", # e.g., https://api.openai.com/v1 model="your-model-name" # e.g., gpt-5.2 ) async def main(): searcher = AgenticSearch(llm=llm) # FAST mode (default): greedy search, 2 LLM calls, 2-5s result: str = await searcher.search( query="How does transformer attention work?", paths=["/path/to/documents"], ) # DEEP mode: comprehensive analysis with Monte Carlo sampling, 10-30s result_deep: str = await searcher.search( query="How does transformer attention work?", paths=["/path/to/documents"], mode="DEEP", ) print(result) asyncio.run(main()) ``` **⚠️ 注意:** - 初始化时,`AgenticSearch` 会自动检查 `ripgrep-all` 和 `ripgrep` 是否已安装。如果缺失,它将尝试自动安装。如果自动安装失败,请手动安装。 - 参考:https://github.com/BurntSushi/ripgrep | https://github.com/phiresky/ripgrep-all - 请将 `"your-api-key"`、`"your-base-url"`、`"your-model-name"` 和 `/path/to/documents` 替换为您的实际值。 ### 命令行界面 Sirchmunk 提供了强大的 CLI 用于服务器管理和搜索操作。 #### 安装 ``` pip install "sirchmunk[web]" # 或通过 UV 安装 uv pip install "sirchmunk[web]" ``` #### 初始化 ``` # 使用默认设置初始化 Sirchmunk(默认工作路径:`~/.sirchmunk/`) sirchmunk init # 或者,使用自定义工作路径初始化 sirchmunk init --work-path /path/to/workspace ``` #### 启动服务器 ``` # 仅启动后端 API 服务器 sirchmunk serve # 自定义主机和端口 sirchmunk serve --host 0.0.0.0 --port 8000 ``` #### 搜索 ``` # 在当前目录搜索(默认为 FAST 模式) sirchmunk search "How does authentication work?" # 在指定路径搜索 sirchmunk search "find all API endpoints" ./src ./docs # DEEP 模式:使用 Monte Carlo 采样进行综合分析 sirchmunk search "database architecture" --mode DEEP # 快速文件名搜索 sirchmunk search "config" --mode FILENAME_ONLY # 输出为 JSON sirchmunk search "database schema" --output json # 使用 API 服务器(需要运行服务器) sirchmunk search "query" --api --api-url http://localhost:8584 ``` #### 可用命令 | 命令 | 描述 | |---------|-------------| | `sirchmunk init` | 初始化工作目录、.env 和 MCP 配置 | | `sirchmunk serve` | 启动后端 API 服务器 | | `sirchmunk search` | 执行搜索查询 | | `sirchmunk web init` | 构建 WebUI 前端(需要 Node.js 18+) | | `sirchmunk web serve` | 启动 API + WebUI(单端口) | | `sirchmunk web serve --dev` | 启动 API + Next.js 开发服务器(热重载) | | `sirchmunk mcp serve` | 启动 MCP 服务器 (stdio/HTTP) | | `sirchmunk mcp version` | 显示 MCP 版本信息 | | `sirchmunk version` | 显示版本信息 | ## 🔌 MCP 服务器 Sirchmunk 提供了一个 [Model Context Protocol (MCP)](https://modelcontextprotocol.io) 服务器,将其智能搜索能力作为 MCP 工具暴露出来。这使得与 **Claude Desktop** 和 **Cursor IDE** 等 AI 助手的无缝集成成为可能。 ### 快速开始 ``` # 安装 MCP 支持 pip install sirchmunk[mcp] # 初始化(生成 .env 和 mcp_config.json) sirchmunk init # 使用您的 LLM API 密钥编辑 ~/.sirchmunk/.env # 使用 MCP Inspector 测试 npx @modelcontextprotocol/inspector sirchmunk mcp serve ``` ### `mcp_config.json` 配置 运行 `sirchmunk init` 后,会生成一个 `~/.sirchmunk/mcp_config.json` 文件。将其复制到您的 MCP 客户端配置目录。 **示例:** ``` { "mcpServers": { "sirchmunk": { "command": "sirchmunk", "args": ["mcp", "serve"], "env": { "SIRCHMUNK_SEARCH_PATHS": "/path/to/your_docs,/another/path" } } } } ``` | 参数 | 描述 | |---|---| | `command` | 启动 MCP 服务器的命令。如果在虚拟环境中运行,请使用完整路径(例如 `/path/to/venv/bin/sirchmunk`)。 | | `args` | 命令参数。`["mcp", "serve"]` 以 stdio 模式启动 MCP 服务器。 | | `env.SIRCHMUNK_SEARCH_PATHS` | 默认文档搜索目录(逗号分隔)。支持英文 `,` 和中文 `,` 作为分隔符。设置后,如果在工具调用期间未提供 `paths` 参数,则这些路径将用作默认值。 | ### 特性 - **多模式搜索**:FAST 模式(默认,贪婪 2-5秒),DEEP 模式用于全面分析,FILENAME_ONLY 用于快速文件发现 - **知识簇管理**:自动提取、存储和复用知识 - **标准 MCP 协议**:支持 stdio 和 Streamable HTTP 传输 📖 **详细文档请参阅 [Sirchmunk MCP README](src/sirchmunk_mcp/README.md)**。 ## 🖥️ Web UI Web UI 专为快速、透明的工作流程而构建:集聊天、知识分析和系统监控于一体。
Sirchmunk Home

Home — Chat with streaming logs, file-based RAG, and session management.

Sirchmunk Monitor

Monitor — System health, chat activity, knowledge analytics, and LLM usage.

### 方式 1:单端口模式(推荐) 构建一次前端,然后从单个端口提供所有服务 —— 运行时无需 Node.js。 ``` # 构建 WebUI 前端(构建时需要 Node.js 18+) sirchmunk web init # 启动带有嵌入式 WebUI 的服务器 sirchmunk web serve ``` **访问:** http://localhost:8584(API + WebUI 在同一端口) ### 方式 2:开发模式 用于前端开发及热重载: ``` # 启动后端 + Next.js 开发服务器 sirchmunk web serve --dev ``` **访问:** - 前端(热重载):http://localhost:8585 - 后端 APIs:http://localhost:8584/docs ### 方式 3:传统脚本 ``` # 通过脚本启动前端和后端 python scripts/start_web.py # 停止所有服务 python scripts/stop_web.py ``` **配置:** - 访问 `Settings` → `Envrionment Variables` 以配置 LLM API 及其他参数。 ## 🐳 Docker 部署 预构建的 Docker 镜像可在阿里云容器镜像服务上获取: | 区域 | 镜像 | |---|---| | 美国西部 | `modelscope-registry.us-west-1.cr.aliyuncs.com/modelscope-repo/sirchmunk:ubuntu22.04-py312-0.0.4` | | 中国北京 | `modelscope-registry.cn-beijing.cr.aliyuncs.com/modelscope-repo/sirchmunk:ubuntu22.04-py312-0.0.4` | ``` # 拉取镜像 docker pull modelscope-registry.cn-beijing.cr.aliyuncs.com/modelscope-repo/sirchmunk:ubuntu22.04-py312-0.0.4 # 启动服务 docker run -d \ --name sirchmunk \ -p 8584:8584 \ -e LLM_API_KEY="your-api-key-here" \ -e LLM_BASE_URL="https://api.openai.com/v1" \ -e LLM_MODEL_NAME="gpt-5.2" \ -e LLM_TIMEOUT=60.0 \ -e UI_THEME=light \ -e UI_LANGUAGE=en \ -e SIRCHMUNK_VERBOSE=false \ -v /path/to/your_work_path:/data/sirchmunk \ -v /path/to/your/docs:/mnt/docs:ro \ modelscope-registry.cn-beijing.cr.aliyuncs.com/modelscope-repo/sirchmunk:ubuntu22.04-py312-0.0.4 ``` 打开 http://localhost:8584 访问 WebUI,或直接调用 API: ``` import requests response = requests.post( "http://localhost:8584/api/v1/search", json={ "query": "your search question here", "paths": ["/mnt/docs"], }, ) print(response.json()) ``` 📖 **完整的 Docker 参数和用法请参阅 [docker/README.md](docker/README.md)**。 ## 🏗️ 工作原理 ### Sirchmunk 框架
Sirchmunk Architecture
### 核心组件 | 组件 | 描述 | |:----------------------|:-------------------------------------------------------------------------| | **AgenticSearch** | 具有 LLM 增强检索能力的搜索协调器 | | **KnowledgeBase** | 将原始结果转换为带有证据的结构化知识簇 | | **EvidenceProcessor** | 基于蒙特卡洛重要性采样的证据处理 | | **GrepRetriever** | 高性能_无索引_文件搜索,支持并行处理 | | **OpenAIChat** | 统一的 LLM 接口,支持流式传输和使用情况追踪 | | **MonitorTracker** | 实时系统和应用程序指标收集 | ### 蒙特卡洛证据采样 传统检索系统读取整个文档或依赖固定大小的块,导致要么浪费 token,要么丢失上下文。Sirchmunk 采用了一种受**蒙特卡洛方法**启发的根本不同的方法 —— 将证据提取视为一个**采样问题**而非解析问题。
Monte Carlo Evidence Sampling

Monte Carlo Evidence Sampling — A three-phase exploration-exploitation strategy for extracting relevant evidence from large documents.

该算法分三个阶段运行: 1. **阶段 1 — 撒网(探索):** 模糊锚点匹配结合分层随机采样。系统识别潜在相关的种子区域,同时通过随机探测保持广泛覆盖 —— 确保不会遗漏任何高价值区域。 2. **阶段 2 — 聚焦(利用):** 围绕阶段 1 中得分高的种子进行高斯重要性采样。采样密度集中在最有希望的区域,提取周围上下文并对每个片段的相关性进行评分。 3. **阶段 3 — 综合:** 得分最高的 K 个片段传递给 LLM,由其将它们综合成带有置信度标志的连贯感兴趣区域 (ROI) 摘要 —— 使流水线能够决定证据是否充足,或是否应调用 ReAct agent 进行更深入的探索。 **关键属性:** - **文档无关:** 同样的算法在 2 页备忘录和 500 页技术手册上同样有效 —— 无需特定于文档的分块启发式方法。 - **Token 高效:** 仅将最相关的区域发送给 LLM,与全文档方法相比,显著减少了 token 消耗。 - **探索-利用平衡:** 随机探索防止隧道视野,而重要性采样确保在最关键的地方有深度。 ### 自我进化知识簇 Sirchmunk 不会在回答查询后丢弃搜索结果。相反,每次搜索都会生成一个 **KnowledgeCluster** —— 一个结构化的、可复用的知识单元,随时间推移变得更智能。这就是系统_自我进化_的原因。 #### 什么是 KnowledgeCluster? KnowledgeCluster 是一个注释丰富的对象,它捕获单个搜索周期的完整认知输出: | 字段 | 目的 | |:------|:--------| | **Evidences** | 通过蒙特卡洛采样提取的源链接片段,每个片段都包含文件路径、摘要和原始文本 | | **Content** | LLM 综合的 markdown,包含结构化分析和引用 | | **Patterns** | 从证据中提炼出的 3-5 条设计原则或机制 | | **Confidence** | 指示簇可靠性的共识分数 \[0, 1\] | | **Queries** | 为该簇做出贡献或复用该簇的历史查询(FIFO,最多 5 个) | | **Hotness** | 反映查询频率和新鲜度的活跃度分数 | | **Embedding** | 从累积查询中派生的 384 维向量,支持语义检索 | #### 生命周期:从创建到进化 ``` ┌─────── New Query ───────┐ │ ▼ │ ┌──────────────────────────────┐ │ │ Phase 0: Semantic Reuse │──── Match found ──→ Return cached cluster │ │ (cosine similarity ≥ 0.85) │ + update hotness/queries/embedding │ └──────────┬───────────────────┘ │ No match │ ▼ │ ┌──────────────────────────────┐ │ │ Phase 1–3: Full Search │ │ │ (keywords → retrieval → │ │ │ Monte Carlo → LLM synth) │ │ └──────────┬───────────────────┘ │ ▼ │ ┌──────────────────────────────┐ │ │ Build New Cluster │ │ │ Deterministic ID: C{sha256} │ │ └──────────┬───────────────────┘ │ ▼ │ ┌──────────────────────────────┐ │ │ Phase 5: Persist │ │ │ Embed queries → DuckDB → │ │ │ Parquet (atomic sync) │ └─────└──────────────────────────────┘ ``` 1. **复用检查(阶段 0):** 在任何检索之前,查询被嵌入并通过余弦相似度与所有存储的簇进行比较。如果找到高置信度匹配,则立即返回现有簇 —— 完全节省 LLM token 和搜索时间。 2. **创建(阶段 1–3):** 当未找到复用匹配时,完整流水线运行:关键字提取、文件检索、蒙特卡洛证据采样和 LLM 综合产生一个新的 `KnowledgeCluster`。 3. **持久化(阶段 5):** 簇存储在内存中的 DuckDB 表中,并定期刷新到 Parquet 文件。原子写入和基于 mtime 的重新加载确保了多进程安全。 4. **复用时的进化:** 每次复用簇时,系统: - 将新查询附加到簇的查询历史(FIFO,最多 5 个) - 增加热度(`+0.1`,上限 1.0) - 从更新的查询集中重新计算嵌入 —— 扩大簇的语义覆盖范围 - 更新版本和时间戳 #### 关键属性 - **零成本加速:** 重复或语义相似的查询从缓存的簇中回答,无需任何 LLM 推理,使后续搜索近乎瞬时。 - **查询驱动的嵌入:** 簇嵌入派生自_查询_而非内容,确保检索与用户实际提问方式一致 —— 而非文档的编写方式。 - **语义扩展:** 随着多样化查询复用同一簇,其嵌入漂移以覆盖更广的语义邻域,自然地改善相关未来查询的召回率。 - **轻量级持久化:** 内存 DuckDB + 磁盘 Parquet —— 无需外部数据库基础设施。具有可配置刷新间隔的后台守护进程同步将开销保持在最低。 ### 数据存储 所有持久化数据存储在配置的 `SIRCHMUNK_WORK_PATH` 中(默认:`~/.sirchmunk/`): ``` {SIRCHMUNK_WORK_PATH}/ ├── .cache/ ├── history/ # Chat session history (DuckDB) │ └── chat_history.db └── knowledge/ # Knowledge clusters (Parquet) └── knowledge_clusters.parquet ``` ## 🔗 HTTP 客户端访问(搜索 API) 当服务器运行时(`sirchmunk serve` 或 `sirchmunk web serve`),可以通过任何 HTTP 客户端访问 Search API。
API 端点 | 方法 | 端点 | 描述 | |--------|----------|-------------| | `POST` | `/api/v1/search` | 执行搜索查询 | | `GET` | `/api/v1/search/status` | 检查服务器和 LLM 配置状态 | **交互式文档:** http://localhost:8584/docs (Swagger UI)
cURL 示例 ``` # FAST 模式(默认,贪婪搜索,包含 2 次 LLM 调用) curl -X POST http://localhost:8584/api/v1/search \ -H "Content-Type: application/json" \ -d '{ "query": "How does authentication work?", "paths": ["/path/to/project"] }' # DEEP 模式(使用 Monte Carlo 采样进行综合分析) curl -X POST http://localhost:8584/api/v1/search \ -H "Content-Type: application/json" \ -d '{ "query": "database connection pooling", "paths": ["/path/to/project/src"], "mode": "DEEP" }' # 文件名搜索(无需 LLM) curl -X POST http://localhost:8584/api/v1/search \ -H "Content-Type: application/json" \ -d '{ "query": "config", "paths": ["/path/to/project"], "mode": "FILENAME_ONLY" }' # 完整参数 curl -X POST http://localhost:8584/api/v1/search \ -H "Content-Type: application/json" \ -d '{ "query": "database connection pooling", "paths": ["/path/to/project/src"], "mode": "DEEP", "max_depth": 10, "top_k_files": 20, "keyword_levels": 3, "include_patterns": ["*.py", "*.java"], "exclude_patterns": ["*test*", "*__pycache__*"], "return_context": true }' # 检查服务器状态 curl http://localhost:8584/api/v1/search/status ```
Python 客户端示例 **使用 `requests`:** ``` import requests response = requests.post( "http://localhost:8584/api/v1/search", json={ "query": "How does authentication work?", "paths": ["/path/to/project"], }, timeout=60 ) data = response.json() if data["success"]: print(data["data"]["result"]) ``` **使用 `httpx`(异步):** ``` import httpx import asyncio async def search(): async with httpx.AsyncClient(timeout=300) as client: resp = await client.post( "http://localhost:8584/api/v1/search", json={ "query": "find all API endpoints", "paths": ["/path/to/project"], } ) data = resp.json() print(data["data"]["result"]) asyncio.run(search()) ```
JavaScript 客户端示例 ``` const response = await fetch("http://localhost:8584/api/v1/search", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ query: "How does authentication work?", paths: ["/path/to/project"], }) }); const data = await response.json(); if (data.success) { console.log(data.data.result); } ```
请求参数 | 参数 | 类型 | 默认值 | 描述 | |-----------|------|---------|-------------| | `query` | `string` | *必填* | 搜索查询或问题 | | `paths` | `string[]` | *必填* | 要搜索的目录或文件(至少 1 个) | | `mode` | `string` | `"FAST"` | `FAST`、`DEEP` 或 `FILENAME_ONLY` | | `max_depth` | `int` | `null` | 最大目录深度 | | `top_k_files` | `int` | `null` | 返回的热门文件数量 | | `keyword_levels` | `int` | `null` | 关键字粒度级别 | | `include_patterns` | `string[]` | `null` | 要包含的文件 glob 模式 | | `exclude_patterns` | `string[]` | `null` | 要排除的文件 glob 模式 | | `return_context` | `bool` | `false` | 返回带有簇和遥测数据的 SearchContext |
## ❓ FAQ
<>这与传统 RAG 系统有何不同? Sirchmunk 采用**无索引方法**: 1. **无预索引**:无需设置向量数据库即可直接搜索文件 2. **自我进化**:知识簇根据搜索模式演化 3. **多级检索**:自适应关键字粒度以获得更好的召回率 4. **基于证据**:蒙特卡洛采样用于精确的内容提取
支持哪些 LLM 提供商? 任何 OpenAI 兼容的 API 端点,包括(但不限于): - OpenAI (GPT-5.2, ...) - 通过 Ollama、llama.cpp、vLLM、SGLang 等提供的本地模型 - 通过 API 代理的 Claude
如何添加文档进行搜索? 只需在搜索查询中指定路径: ``` result = await searcher.search( query="Your question", paths=["/path/to/folder", "/path/to/file.pdf"] ) ``` 无需预处理或索引!
知识簇存储在哪里? 知识簇以 Parquet 格式持久化存储在: ``` {SIRCHMUNK_WORK_PATH}/.cache/knowledge/knowledge_clusters.parquet ``` 您可以使用 DuckDB 或 `KnowledgeManager` API 查询它们。
如何监控 LLM token 使用情况? 1. **Web 仪表板**:访问 Monitor 页面查看实时统计数据 2. **API**:`GET /api/v1/monitor/llm` 返回使用指标 3. **代码**:搜索完成后访问 `searcher.llm_usages`
## 📋 路线图 - [x] 从原始文件检索文本 - [x] 知识结构与持久化 - [x] 使用 RAG 进行实时聊天 - [x] Web UI 支持 - [ ] 网络搜索集成 - [ ] 多模态支持(图像、视频) - [ ] 跨节点分布式搜索 - [ ] 知识可视化和深度分析 - [ ] 更多文件类型支持 ## 🤝 贡献 我们欢迎 [贡献](https://github.com/modelscope/sirchmunk/pulls)! ## 📄 许可证 本项目基于 [Apache License 2.0](LICENSE) 授权。
**[ModelScope](https://github.com/modelscope)** · [⭐ 为我们加星](https://github.com/modelscope/sirchmunk/stargazers) · [🐛 报告 Bug](https://github.com/modelscope/sirchmunk/issues) · [💬 讨论](https://github.com/modelscope/sirchmunk/discussions) *✨ Sirchmunk:原始数据到自我进化智能,实时。*

❤️ Thanks for Visiting ✨ Sirchmunk !

Views

标签:AV绕过, Docker, DuckDB, FastAPI, MCP, Model Context Protocol, OLAP, OpenAI, Petitpotam, Python, RAG, ripgrep-all, TailwindCSS, 个人AI助理, 人工智能, 企业知识库, 全文搜索, 内存规避, 安全防御评估, 实时数据处理, 开源, 数据索引, 文本提取, 文档解析, 无后门, 智能体搜索, 本地知识库, 检索增强生成, 用户模式Hook绕过, 知识管理, 知识聚类, 自我进化, 语义搜索, 请求拦截, 逆向工具, 非结构化数据