ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

NBoost终极指南:如何用Transformer模型将Elasticsearch搜索相关性提升2倍?

NBoost终极指南:如何用Transformer模型将Elasticsearch搜索相关性提升2倍? NBoost终极指南如何用Transformer模型将Elasticsearch搜索相关性提升2倍【免费下载链接】nboostNBoost is a scalable, search-api-boosting platform for deploying transformer models to improve the relevance of search results on different platforms (i.e. Elasticsearch)项目地址: https://gitcode.com/gh_mirrors/nb/nboostNBoost是一个可扩展的开源神经搜索增强平台它把微调好的 Transformer 模型如 BERT以代理Proxy形式部署在你的 Elasticsearch 集群前面自动对搜索结果做神经重排序。官方基准测试显示无需重建索引、无需改动客户端代码搜索相关性指标 MRR 最高可提升77%整体相关性达到纯关键词搜索的近 2 倍。为什么需要NBoostElasticsearch关键词搜索的相关性瓶颈 Elasticsearch 默认的 BM25 算法基于词汇匹配——它无法理解同义词、语序和语义上下文。用户搜 vegas hotel可能命中的却是离题万里的段落。NBoost 的做法简单直接客户端把查询发给NBoost 代理而不是直接发给 Elasticsearch代理把结果数放大默认向 Elasticsearch 要topn50条拿到候选结果微调过的 Transformer 模型对候选集打分重排只把最优的 top-k 条返回给客户端。比如客户端只要 10 条结果NBoost 会向 Elasticsearch 取 100 条再由模型挑出最好的 10 条。核心代理逻辑位于 proxy.py默认的 BERT 重排序插件在 transformers.py。基准数据相关性到底能提升多少 NBoost 官方在 MS MARCO880 万段落等数据集上做了严格评测评测集与训练集刻意不同证明模型的泛化能力微调模型MRR 提升对比 BM25GPU 速度nboost/pt-tinybert-msmarco默认45%0.26 vs 0.18约 50 ms/查询nboost/pt-bert-base-uncased-msmarco62%0.29 vs 0.18约 300 ms/查询nboost/pt-bert-large-msmarco77%0.32 vs 0.18—nboost/pt-biobert-base-msmarco生物医学66%0.17 vs 0.10约 300 ms/查询 MRRMean Reciprocal Rank是对 Elasticsearch 默认 BM25 排名、对 Top 50 结果重排后测得的模型可在不同数据集间迁移无需针对你的业务重新训练。上图是 NBoost 内置的基准仪表盘高亮的average_model_mrr0.29对比average_server_mrr0.17即相关性提升约70%接近 2 倍。完整复现步骤见 benchmarking.md。快速安装与3分钟启动NBoost神经代理 NBoost 提供三种安装方式云环境推荐 Docker依赖 Docker PyPIPyTorch推荐koursaros/nboost:latest-ptpip install nboost[pt]TensorFlowkoursaros/nboost:latest-tfpip install nboost[tf]全部koursaros/nboost:latest-allpip install nboost[all]Docker 镜像的构建文件分别位于 DockerfilePyTorch和 DockerfileTensorFlow。第 1 步准备 Elasticsearch已有可跳过docker run -d -p 9200:9200 -e discovery.typesingle-node elasticsearch:7.4.2第 2 步启动 NBoost 代理只需一条命令nboost --uhost localhost --uport 9200看到Listening: localhost:8000即部署成功——NBoost 默认监听 8000 端口客户端把请求地址指向它即可。第 3 步建索引并验证内置索引工具 示例数据集nboost-index --file travel.csv --index_name travel --delim , curl http://localhost:8000/travel/_search?prettyqpassage:vegassize2返回结果中出现nboost标记恭喜你神经搜索已经生效 完整图文教程见 getting-started.md。查看重排序效果NBoost前端仪表盘 浏览器访问http://localhost:8000/nboost即可看到 NBoost 实时记录的每一次神经重排序过程仪表盘会告诉你完整的故事NBoost 收到请求 2 条结果→ 连接localhost:9200→ 向 Elasticsearch索取 50 条→ 模型从中挑出最好的 2 条返回同时记录平均重排序耗时、候选数量等统计指标无浏览器环境可curl /nboost/status获取。用Helm在Kubernetes上部署NBoost到生产环境 生产环境推荐用 Helm 一键分布式部署仓库内置 Chart配置项见 values.yamlhelm install --name nboost --set replicaCount4 nboost/nboost几个关键参数帮你按需调节replicaCount代理副本数默认 3args.multiplier结果放大倍数默认 5越大重排空间越大args.workers并发线程数默认 10直接决定吞吐上限。NBoost插件体系自由替换Transformer模型与QA功能 NBoost 采用插件化架构核心重排序插件基类在 base.py可按需替换PyTorch TransformersPtTransformersRerankPlugin默认支持任意 Hugging Face 模型ONNX Runtimeonnxbert.py轻量高效的生产部署之选自定义模型use.py 让你接入自己微调的领域模型问答QA增强distilbert.py 基于 DistilBERT 从搜索结果中直接抽取答案适合搜索问答场景Solr 支持solr.py 可将索引扩展到 Solr 集群。所有默认配置模型名、topn50、查询路径等集中定义在 defaults.py默认模型为nboost/pt-tinybert-msmarco开箱即用、无需额外配置。常见问题与总结 会增加搜索延迟吗默认的 TinyBERT 模型 GPU 上仅约 50ms/查询CPU 也可运行稍慢对大多数业务来说这个代价完全值得。需要改动客户端代码吗不需要。把请求地址从 Elasticsearch 换成 NBoost 端口响应格式完全兼容 Elasticsearch API。必须用 GPU 吗不是。CPU 即可运行追求低延迟再上 GPU。三步开启神经搜索安装nboost[pt]→ 一条命令启动代理 → 验证结果中的nboost标记。从此你的 Elasticsearch 将拥有接近 2 倍的相关性而这一切只需要一个代理。【免费下载链接】nboostNBoost is a scalable, search-api-boosting platform for deploying transformer models to improve the relevance of search results on different platforms (i.e. Elasticsearch)项目地址: https://gitcode.com/gh_mirrors/nb/nboost创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表