AIxiv专栏是本网站发布学术技术内容的专栏。在过去的几年里,AIxiv专栏收到了2000多篇报道,覆盖了世界各大高校和企业的顶级实验室,有效地促进了学术交流和传播。如果您有优秀的工作要分享,请提交或联系报告。投稿邮箱:liyazhou@jiqizhixin.com;zhaoyunfeng@jiqizhixin.com
作者来自这篇文章 opensearch 中国研发团队机器学习负责人杨洋博士、机器学习工程师耿志超、关聪。opensearch 这是一个纯开源搜索和实时分析引擎项目,由亚马逊云科技发起。现在的软件已经超过了 5 1亿下载量,社区在全球拥有 70 以上企业合作伙伴。
? ? ? ? ? ? ? ? ? ? ?Relevance Demo
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?稀疏编码与稠密编码的对比
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?*整个系统只运行 OpenSearch 时间内存,包括 JVM 堆内和堆外内存
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 比较一些数据集中几种方法的相关性能
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?对比两阶段式搜索速度
PUT /_cluster/settings{"transient" : {"plugins.ml_commons.allow_registering_model_via_url" : true,"plugins.ml_commons.only_run_on_ml_node" : false,"plugins.ml_commons.native_memory_threshold" : 99}}
2. 部署编码器
Opensearch 目前开源了 3 一个模型。所有相关的注册信息都可以在官方文件中获得。我们使用它 amazon/neural-sparse/opensearch-neural-sparse-encoding-v1 例如,首先使用 register API 来注册:
POST /_plugins/_ml/models/_register?deploy=true{? ? "name": "amazon/neural-sparse/opensearch-neural-sparse-encoding-v1",? ? "version": "1.0.1",? ? "model_format": "TORCH_SCRIPT"}
{"task_id": "<task_id>","status": "CREATED"}
用 task_id 获取详细的注册信息:
{"model_id": "<model_id>","task_type": "REGISTER_MODEL","function_name": "SPARSE_TOKENIZE","state": "COMPLETED","worker_node": ["Wubxx7xTIC7RW2z8nzhzw"],? ? "create_time":1701390988405,"last_update_time": 1701390993724,"is_async": true}
在索引之前,需要编码的文本字段需要将每个文档转换为稀疏向量。 OpenSearch 这个过程是通过预处理器自动实现的。您可以使用以下内容 API 创建离线索引时的处理器管道:
PUT /_ingest/pipeline/neural-sparse-pipeline{? "description": "An example neural sparse encoding pipeline",? "processors" : [? ? {? ? ? "sparse_encoding": {? ? ? ? "model_id": "<model_id>",? ? ? ? "field_map": {? ? ? ? ? ?"passage_text": "passage_embedding"? ? ? ? }? ? ? }? ? }? ]}
如果需要打开两阶段加速功能,则需要打开加速功能 (非必要功能)需要建立两个阶段的搜索管道,并在索引建立后设置为默认的搜索管道。
建立默认参数的两个阶段加速搜索管道的方法如下。请参考更详细的参数设置和意义 2.15 以后版本 OpenSearch 官方文档。
PUT /_search/pipeline/two_phase_search_pipeline{? "request_processors": [? ? {? ? ? "neural_sparse_two_phase_processor": {? ? ? ? "tag": "neural-sparse",? ? ? ? "description": "This processor is making two-phase processor."? ? ? }? ? }? ]}
4. 设置索引
搜索利用神经稀疏 rank_features 存储编码获得的字段类型和相应的权重。该索引将使用上述预处理器编码文本。我们可以通过以下方式创建一个包含两个阶段搜索加速管道的索引(如果我们不想打开这个功能,我们可以 `two_phase_search_pipeline` 替换为 `_none` 或删除 `settings.search` 本配置单元)。
PUT /my-neural-sparse-index{? "settings": {? ? "ingest":{? ? ? ? "default_pipeline":"neural-sparse-pipeline"? ? },? ? "search":{? ? ? ? "default_pipeline":"two_phase_search_pipeline"? ? }? },? "mappings": {? ? "properties": {? ? ? "passage_embedding": {? ? ? ? "type": "rank_features"? ? ? },? ? ? "passage_text": {? ? ? ? "type": "text"? ? ? }? ? }? }}
PUT /my-neural-sparse-index/_doc/{? ?"passage_text": "Hello world"}
在索引中进行稀疏语义搜索的接口如下
GET my-neural-sparse-index/_search{? "query":{? ? "neural_sparse":{? ? ? "passage_embedding":{? ? ? ? "query_text": "Hi world",? ? ? ? "model_id": <model_id>? ? ? }? ? }? }}
以上是亚马逊云创新「神经稀疏检索」:语义搜索的详细内容只需要文本匹配,请多关注其他相关文章!
软件端口连接,轻松定位,高效操作!
亚马逊云创新「神经稀疏检索」:语义搜索只能通过文本匹配来实现——人工智能
等不到OpenAI的Q*,华为诺亚探索LLM推理的秘密武器MindStar先来了——人工智能
高效远程管理,3389端口批量桌面接入利器
开发者狂喜!Meta最新发布的LLM Compiler,77%的自动调优效率-人工智能
破解网页禁止复制粘贴,简易教程
Excel复制粘贴区域不同?精准选择是关键!
等不到OpenAI的Q*,华为诺亚探索LLM推理的秘密武器MindStar先来了——人工智能
开发者狂喜!Meta最新发布的LLM Compiler,77%的自动调优效率-人工智能
vlan是什么意思?常见问题
vlan的作用-常见问题
vlan配置教程-常见问题
vlan配置的详细步骤-常见问题
sas是什么意思?常见问题
docx是什么格式的文件-常见问题
doc是word吗?
如何处理doc格式-常见问题
打开doc的方法-常见问题
ipconfig命令的功能-常见问题