Elasticsearch Service 特别:采用 semantic 字段简化写入和搜索

semantic 搜索的基本要点,可以以参阅此文档了解更多详情。semantic 直接使用自然语言写入和查询,相比 knn 查询体验更加简单。我们只需要指定基于机器学习节点或者 Inference 创建的推理服务,即可轻松完成读写,无需创建 Ingest Pipeline 和关注底层模型与推理细节(例如维度、m、ef 等)。

相关产品
Elasticsearch Service 产品页,含版本规格、价格与购买入口。

一、创建推理端点

将机器学习节点部署的模型服务创建为一个推理端点(参阅这里了解创建推理端点的更多细节)。

PUT _inference/text_embedding/bge-base-zh-service{ "service": "elasticsearch", "service_settings": { "model_id": "bge-base-zh", "num_allocations": 1, "num_threads": 1 }}

二、创建索引

semantic 字段默认用 Elastic 自带的.elser-2-elastic 推理端点(EIS 服务),这是一个稀疏向量嵌入模型,我们可以显式地指定为自己创建的推理端点:

PUT semantic_search_index{ "mappings":{ "properties": { "content_vector":{ "type":"semantic_text", "inference_id":"bge-base-zh-service", // 指定写入和查询的推理端点 }, "content":{ "type":"text", "copy_to":"content_vector" } } }}

三、写入数据

写入的同时,自动调用模型生成向量数据:

PUT semantic_search_index/_doc/1{ "content":"使用semantic search,可以简化数据入库语句"}PUT semantic_search_index/_doc/2{ "content":"使用semantic search,可以简化数据查询语句"}

四、执行语义搜索

执行 match 搜索,查询内容采用自然语言,如下是一个示例:

GET semantic_search_index/_search{ "query": { "match": { "content_vector": { "query": "What is semantic search ?" } } }}

赞 (0)
上一篇 4天前
下一篇 4天前