
目录一块石头引出的问题头条数字公开榜单上的检索消融核心一条 DSL 融合三路信号RRF 为什么有效全链路都在 Elastic 里完全可复现欢迎大家了解下trapstreet亲自跑小结用 Elasticsearch 的 RRF 融合检索把矿物鉴定准确率从 36% 拉到 92%一块石头引出的问题地质队员在野外捡到一块石头手里只有一张照片、几条肉眼观察 —— 颜色、条痕、硬度、晶系、光泽、比重。问它是 98 种矿物里的哪一种。这题看着简单坑在单一模态谁都不够只看照片玛瑙、玉髓、碧玉长得几乎一样光学特征高度重叠只看属性文字「三方晶系 硬度 7 白条痕 玻璃光泽」这一串被几十种矿物共享。任何单路检索都会在某一类矿物上翻车。于是我把这题做成了一个可以公开验证的实验同一套题、同一个判分器、同一个大模型只改「喂给模型的检索证据」看作答准确率怎么变。结论一句话头条数字公开榜单上的检索消融50 道题同一个qwen-plus只变检索配置四个方案同台 PK检索配置作答准确率vs 闭卷闭卷裸 Qwen无检索36.0%—图像单路jina-clip-v2 kNN48.0%12BM25 单路属性文字56.0%20RRF 融合BM25 图像 kNN 硬度过滤92.0%56✅▶这不是嘴上说说是公开榜单可点进每个 case 看判分的Mineral Identification from Field Observations · Trapstreet上图为 trapstreet 公开榜实况四行分别是闭卷 / 图像单路 / BM25 单路 / RRF 融合按 SCORE 降序RRF 融合 0.92 稳居第一。再给一层不经过大模型的纯检索证据——2,749 条查询的检索命中率指标图像单路文本单路RRF 融合top-120.8%23.9%53.3%(29.4)top-337.9%28.0%77.5%两层数字互相印证RRF 不是「多喂点上下文」的玄学而是检索命中率实打实翻倍 → 作答准确率跟着抬升。核心一条 DSL 融合三路信号这是整个方案里最想给 Elastic 团队看的部分。融合图像、文字、结构化过滤在 Elasticsearch 里不需要自己写融合逻辑、不需要两套系统一条rrfretriever 就搞定GET minerals-images/_search { retriever: { rrf: { retrievers: [ { standard: { query: { multi_match: { query: trigonal; hardness 7; white streak; vitreous luster, fields: [props_text, description, name^2] } } } }, { knn: { field: image_vector, query_vector: [/* jina-clip-v2 1024 维查询向量 */], k: 100, num_candidates: 400 } } ], rank_window_size: 100, rank_constant: 20, filter: [ { range: { hardness_min: { lte: 5.5 } } }, { range: { hardness_max: { gte: 5.5 } } } ] } } }一个查询里同时做了三件事BM25 文本召回野外观察属性 → props_text 全文匹配跨模态图像 kNNjina-clip-v2 把图像和文字编码到同一个 1024 维空间所以文字线索能直接 kNN 搜标本照片结构化硬度过滤hardness 区间做物理约束把不可能的候选直接砍掉。三路结果由 RRF 融合排序rank_constant 和 rank_window_size 两个旋钮即可调融合行为。没有胶水代码没有第二个向量库。RRF 为什么有效Reciprocal Rank Fusion 的融合分只看排名、不看各路原始分数的量纲——这正是它稳的原因BM25 的分数和向量余弦相似度根本不在一个尺度上强行加权反而容易被某一路带偏。RRF 只问「你在每一路里排第几」其中是 rank_constant本项目取 20是文档在第路检索里的排名。直觉一个候选只要在多路里都排得靠前融合分就高。玛瑙这种「图像混、文字也混」的难题恰恰是在「图像一路排前 属性一路排前 硬度合法」三重同时命中时被 RRF 顶到第一——这就是单路做不到、融合能赢的地方。全链路都在 Elastic 里不只是检索。连大模型作答都走 Elasticsearch 的_inference推理端点——检索、推理、评测一条链路不出 Elastic 生态作答调用同样是一个 ES 请求POST /_inference/completion/qwen-plus { input: 根据以下检索到的候选证据判断矿物种名…… }本机零模型、零额外服务——检索引擎顺手把 LLM 推理也托管了。对做 Agent 的人来说这意味着 RAG 的两半检索 生成可以在同一套鉴权、同一个端点里闭环。完全可复现欢迎大家了解下trapstreet亲自跑这套结果不是本地截图是任何人都能重跑的。仓库已内置trapstreetCLI 配置克隆下来三行命令复现榜上任意一行git clone https://github.com/Zhuaiz/elastic-mineral-hackson cd elastic-mineral-hackson cp .env.example .env # 已内置公开只读 ES 端点 限权 key pip install -r trap/solutions/requirements.txt tp run mineral-rrf # 满配 RRF → 0.92 (46/50) tp run mineral-closed-book # 裸 Qwen → 0.36 (18/50) tp run mineral-bm25 # BM25 单路 → 0.56 (28/50) tp run mineral-image # 图像单路 → 0.48 (24/50)判分完全确定committed 的作答文件就是榜上那批 run 的原始答案无凭证即可本地重判出分毫不差的 36/48/56/92检索完全确定题面、索引、图像查询向量都随仓库提交作答近似确定qwen-plus 用 temperature0 贪心解码逐题重跑一致个别 case 可能有模型侧 ±1~2 题的抖动——曲线形状闭卷 单路 RRF稳定复现。复现只依赖一个只读限权 keyread on minerals-* monitor_inference删不了写不了集群任何东西——公开安全。小结维度这个方案怎么用 Elastic多模态融合一条RRF retriever融合BM25 图像kNN 结构化过滤跨模态检索jina-clip-v2图文共享同一向量空间文字线索可直接检索图片生成使用_inference/completion端点托管qwen-plus生成回答可信度检索命中率Top-1翻倍23.9% → 53.3%下游问答准确率提升56 个百分点可复现提供公开Elasticsearch端点使用tp run可一键重现实验总结矿物鉴定这题证明了 Elasticsearch 的 rrf 融合检索不是锦上添花而是把一个单模态做不动的任务36%直接拉到可用级别92%的关键——而且整条 RAG 链路检索 推理 评测都能收在 Elastic 生态里闭环如果样本量更多的话结果应该会变得更好。感谢数据来源https://www.mindat.org/。 项目地址https://github.com/Zhuaiz/elastic-mineral-hackson 公开榜单https://trapstreet.run/tasks/mineral-species-id致敬 Elastic 布道的刘老师提供交流学习的平台: 刘老师仓库https://github.com/liu-xiao-guo/elastic_multimodal_search转自Hacknight Beijing 基于阿里云 X Elastic 构建 Al Agents - 用 Elasticsearch 的 RRF 融合检索把矿物鉴定准确率从 36% 拉到 92%-CSDN博客