feat: add retrieval evaluation and query tooling
纯 MoonBit 零 FFI 的本地全文检索与 RAG(检索增强生成)检索库。文档在本地完成分词、分块、索引、检索和 LLM 上下文组装,数据不出本地;核心库可编译到 wasm / wasm-gc / js / native 多后端,适合浏览器、边缘设备与隐私敏感场景。
Engine
ContextBuilder
Tokenizer
Chunker
SearchIndex
search_phrase
search_boolean
-term
search_prefix
VectorIndex
rrf_fuse
highlight
**term**
SearchIndex::remove
stats
Engine::remove_document
index
query
context
phrase
boolean
prefix
环境要求:MoonBit 0.1.20260807+;native 目标需要 C 编译器(Windows 用 MSVC)。
# 添加依赖 moon add niuniu513-ask/MoonRetrieve
库用法:
let engine = @lib.Engine::new() engine.add_document("guide", "MoonBit 是面向云边计算的编程语言。") engine.add_document("faq", "RAG 是检索增强生成。") let results = engine.search("RAG 是什么", top_k=3) let cb = @lib.ContextBuilder::new(max_tokens=500) println(cb.build("RAG 是什么", results))
CLI 用法(native 目标):
# 建索引 moon run cmd/main --target native -- index examples/notes demo-index.json # 检索 moon run cmd/main --target native -- query demo-index.json "MoonBit 黑客松" -k 3 # 生成 LLM 上下文 moon run cmd/main --target native -- context demo-index.json "黑客松奖励" -k 3 # 索引统计 moon run cmd/main --target native -- stats demo-index.json # 短语检索(可加 --highlight) moon run cmd/main --target native -- phrase demo-index.json "MoonBit 黑客松" -k 3 # 布尔检索 / 前缀检索 moon run cmd/main --target native -- boolean demo-index.json "MoonBit AND RAG" -k 3 moon run cmd/main --target native -- prefix demo-index.json "moon" -k 3
MoonRetrieve.mbt 包说明 tokenizer.mbt 分词器 chunker.mbt 分块器 index.mbt BM25 倒排索引 vector.mbt 向量索引与 RRF 融合 context.mbt LLM 上下文组装 engine.mbt 一站式引擎 evaluation.mbt Precision/Recall/MRR/MAP 等检索评估指标 suggest.mbt Unicode 查询纠错、推荐与前缀补全 query.mbt 必选/排除/短语/前缀结构化查询 result_ops.mbt 融合、去重、分组与多样化 summary.mbt 关键词、摘要与命中片段 cmd/main/ CLI examples/notes/ 示例文档 docs/ 使用教程、申报书、差异化说明与自查清单
moon test # 100 个测试(native / wasm-gc / js 由 CI 覆盖) moon check moon build --target wasm-gc moon bench # 3 项基准(分词 / 建索引 / 检索)
moon run examples/quickstart --target wasm-gc
Apache-2.0
项目为原创 MoonBit 实现,未复制第三方搜索引擎、RAG 框架、分词器或向量数据库源码。实现参考的公开信息检索概念、示例数据和差异化说明见 docs/SOURCES.md 与 docs/differentiation.md。
OSC 2026 申请人、仓库账号及历史 Git 作者身份说明见 docs/PARTICIPATION.md。
纯 MoonBit 零 FFI 的本地全文检索与 RAG 检索库:中英日分词、BM25、向量索引、RRF 混合检索与 LLM 上下文组装(wasm-gc / js / native)
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802047560号
MoonRetrieve
纯 MoonBit 零 FFI 的本地全文检索与 RAG(检索增强生成)检索库。文档在本地完成分词、分块、索引、检索和 LLM 上下文组装,数据不出本地;核心库可编译到 wasm / wasm-gc / js / native 多后端,适合浏览器、边缘设备与隐私敏感场景。
与现有 MoonBit 检索项目的差异
Engine一站式 API 和开箱即用的 CLI。ContextBuilder按 token 预算把命中片段拼成带来源编号的 LLM 提示词。功能
Tokenizer:英文/中文/日文、N-gram、停用词、词干化Chunker:按段落切分、块间重叠、超长段落硬切SearchIndex:增量建索引、Top-K 检索、JSON 持久化search_phrase:查询短语按原文顺序连续出现search_boolean:AND / OR /-term排除search_prefix:按词条前缀匹配VectorIndex:余弦相似度检索rrf_fuse:Reciprocal Rank FusionContextBuilder:token 预算控制、来源标注highlight:查询词自动标记**term**SearchIndex::remove/stats、Engine::remove_document/statsEngine:文档 → 分块 → 索引 → 检索index/query/context/stats/phrase/boolean/prefix快速开始
环境要求:MoonBit 0.1.20260807+;native 目标需要 C 编译器(Windows 用 MSVC)。
库用法:
CLI 用法(native 目标):
项目结构
测试与构建
最小示例
许可证
Apache-2.0
来源与合规
项目为原创 MoonBit 实现,未复制第三方搜索引擎、RAG 框架、分词器或向量数据库源码。实现参考的公开信息检索概念、示例数据和差异化说明见 docs/SOURCES.md 与 docs/differentiation.md。
参赛与维护
OSC 2026 申请人、仓库账号及历史 Git 作者身份说明见 docs/PARTICIPATION.md。